首页
社区
课程
招聘
[原创]Log插桩调试smali代码
发表于: 2020-11-28 14:10 4764

[原创]Log插桩调试smali代码

2020-11-28 14:10
4764

通过搜索它的资源id字符串来进行定位

通过搜索一些会调用的关键的api函数

通过用来分析程序的执行流程,比如UNclick点击事件,或者是activity的一些活动周期等等

通过插入一些log或者是查看一些logcat等等

栈跟踪法属于动态调试的一种,通过分析它的一个函数的调用流程

方法剖析也是属于动态调试的一种,可以用来分析一些函数的调用流程

Log插桩指的是反编译APK文件时,在对应的smali文件里,添加相应的smali代码,将程序中的关键信息,以log日志的形式进行输出。
举个例子:
以“好搜小说大全.apk”文件为例,首先下载一个“好搜小说大全”APP,打开雷电模拟器将它拖进去
图片描述
插入log日志信息,然后我们来分析一下程序的启动流程。
这里可以思考一下,程序的入口页面和入口点,哪一个启动的时机更早?
我们可以通过Log日志信息来测试一下:
先打开Android Killer,将apk文件拖进来反编译,
图片描述
反编译完成后出现弹窗,选择“否”即可,而后找到“工程信息”一栏,
图片描述
找到“入口页面”并单击点开它。
图片描述
由于我们分析的是程序的启动流程,在启动活动界面的时候,最先被调用的是onCreate方法,所以我们要先浏览相关的方法找到“oncreate”,
图片描述
选择“oncreate”方法我们可以找到代码开始的位置,在这里可以直接插入Log日志信息,然后右键选择“插入代码”,再选择Log信息输出,
图片描述
在空白部分输入我们想要输入的文字,然后ctrl+S保存,然后在程序的入口页面插入Log日志信息就已经完成了。

接下来还需要在程序入口点插入Log日志信息,点击“工程管理器”找“AndroidManifest.xml”文件,
图片描述
里面有个“<application”标签,找到程序的“入口点”
图片描述
找到程序“入口点”所在的位置“com.reader”,然后找到“re”文件
图片描述
选择右上角三角图标快速浏览相关的方法,通过浏览相关的方法我们找到oncreate这样一样函数方法,点击跳转到该方法对应的smali代码位置,在空白处插入Log日志信息。
图片描述
右键,插入代码,输入Log日志信息,输入文字并保存,点击“Android”这一选项,点击“编译”,回编译我们刚刚修改好的这样一个程序
图片描述
接下来就需要将之前所安装的apk进行卸载,然后把回编译后的apk安装上
图片描述
然后打开DDMS工具,找到这个文件,由于我们刚才插入了一些Log日志的的信息,然后选择添加过滤器,
图片描述
在其中搜索我们刚刚创建修改好的入口点和启动页面,
图片描述
仔细观察这个过程可以发现,应用程序的执行时机要早于我们的程序入口页面的!

但是也要注意,在某些方法插入Log日志会导致程序崩溃,当然也是有对应的解决方法的。
如果在其他位置插入Log会有什么效果呢?可以测试一下:

选择程序的入口页面,UNclick方法,
图片描述
在<init>处可以插入Log日志信息,


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (1)
雪    币: 1199
活跃值: (1312)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
图片好糊呀
2020-11-30 16:52
0
游客
登录 | 注册 方可回帖
返回
//