smali注入小技巧
0x00 前言
本文为科普文,在蒸米的《安卓动态调试七种武器之长生剑 - Smali Instrumentation》一文的基础上,针对smali注入保持源程序逻辑完整性总结一些方法和思考,现和大家分享一下,欢迎大家一起探讨。
0x01 smali注入
相信大家在入门Android安全的时候都会接触到smali注入吧。通过smali注入,我们可以修改程序的逻辑,或者在程序适当的位置插入一段代码,通过执行这段代码我们可以得到程序的一些中间运行结果。
1.smali注入过程
可能大家对这个smali注入过程都比较熟悉了,这里稍微过一过流程吧。
1.1 反编译apk
可以使用apktool对apk进行反编译,命令是apktool d apk名
1.2 打开smali文件,注入语句
我们在上一步中反编译得到了一个装有smali文件的目录,那么我们可以在特定的smali文件中注入我们想要插入的smali语句。
1.3 重打包
修改好smali文件之后,就要重新打包,那么这里同样可以使用apktool工具,命令是apktool b apk名打包成功后,新的apk会在反编译目录下的dist目录中
1.4 签名
如果不对重新打包的apk重新签名,就会有问题,那么签名完之后就可以去模拟器或者真机上运行看看效果啦。
2.常用的一些smali注入代码
2.1 输出Log信息
插入一段log方法的代码之后,可以在logcat中查看我们想要输出的信息,这对于想看到程序的中间结果是一种常用的方法。
java代码:
smali代码: