目录
准备
这里所有的演示都是用的我自己写的一个简单的登录验证的应用,如下图所示。
打印Log法
所谓打印Log法就是在反编译的smali代码中,找到关键点,并在关键点处插入Log打印方法,以此来获取关键信息,执行步骤如下:
1.设置应用可调试
AndroidManifest.xml文件中在applicatio标签下加入android:debuggable="true"
2.插入Log
在关键点处右键->插入代码->Log
这里我直接把v2打印出来(ps:当然这些关键信息在真实项目中是不可能这么明显的,这里为了演示所以写的简单)
3.回编译并安装运行
这里注意千万别忘了保存代码后再回编译。
4.查看Log信息
我们在应用程序中输入一个错误的用户名,然后点击登录,并且用Android Studio的Logcat视图来查看Log信息,信息如下,我们打印出了登录需要的正确的用户名。
栈跟踪法
简单来说就是在关键位置打印出执行的系列方法,然后可以通过Logcat查看,具体操作如下:
1.在关键位置插入代码
这里我是在登录方法的末尾加入的
new-instance v0,Ljava/lang/Exception;
#汉字需要用Unicode进行编码
const-string v1,"\u6808\u8ddf\u8e2a\u6cd5"
invoke-direct {v0,v1},Ljava/lang/Exception;-><init>(Ljava/lang/String;)V
invoke-virtual {v0},Ljava/lang/Exception;->printStackTrace()V
#对应Java中的代码是 new Exception("栈跟踪法").printStackTrace();
2.Logcat中查看信息
Android Studio的Logcat视图中会打印如下图所示的信息,通过该信息我们可以得知,当我们点击按钮的时候,执行的方法顺序是onClick->access$000->login
Method Profiling
这种方法是通过Android SDK自带的工具Device Monitor来对一段时间内执行的方法进行分析,具体操作如下:
1.运行Device Monitor
这里如果你开启的Android Studio则需要将Android Studio关掉,然后需要找到你本地Android SDK的tools目录下的monitor.bat双击运行。
启动后是这样的:
2.监控方法
选中你调试的程序,点击Start Method Profiling
然后输入信息点击登录按钮:
然后点击Stop Method Profiling
这时候会出现如下窗口:
然后我们可以通过搜索关键词从中找到我们执行的onClick方法,其中Parents表示该方法的父方法(调用该方法的方法),Children表示该方法的子方法(该方法所调用的方法)。
UI查看
我们可以通过查看Activity的布局信息,从中找到关键点。
1.adb命令查看
adb shell dumpsys activity top
通过该命令我们可以在命令行中查看到Activity的信息
2.Device Monitor查看
通过Device Monitor我们可以直观的查看到Activity对应的布局中的控件信息,操作步骤如下:
1):点击Dump View Hierarchy for UI Automator
2):在弹出的窗口中,通过鼠标点击相应控件,来查看控件的信息
网友评论