smali全局注入探测App流程

工具转自 Android应用逆向——分析反编译代码之大神器
我个人觉得逆向主要分为两个部分,分析流程追踪关键代码与算法分析编写脚本,这可能也是实际项目和CTF竞赛的区别:前者是因为功能与流程的复杂程度,后者则是将算法进行无限放大。在静态分析无法解决问题之后,评测了一下非虫大大书中几种动态分析之后。栈跟踪法基本和采用AndroidStudio查看调用栈是一致的,基本只能分析局部函数的调用。而且对methodfiling方法也进行了评测,输出简直惨不忍睹,还充斥了大量的系统函数。虽然可以过滤…于是采用了smali注入的方法, 使用方法:
附件smali注入 链接
其中包括了InjectLog.smali注入文件和Inject.py注入脚本
将要分析的apk解包 java -jar apktool_2.3.2.jar d myapp.apk -o out(最新版apktool)

反编译后的目录:

将Inject.py放入要注入的smali文件目录,会自动给当前目录和子集目录smali文件进行注入

Inject.py:
这里需要python版本为3.3以上,因为会牵扯到脚本中某些函数的版本问题。
执行这个脚本:

可以看到已经注入完毕,打开smali文件验证一下:

接下来将InjectLog.smali文件放入里面,注意目录:

重新打包 java -jar apktool_2.2.3.jar b out -o unsigned.apk,然后使用ApkToolkit工具进行签名即可:
用Jeb打开patch过的apk,所有的函数都已经被注入了代码:

打开SDK工具下的ddms,在手机运行应用,过滤Tag为InjectLog:

打印日志输出的顺序就是smali文件(APK应用)的执行顺序!

后期再配合AS的动态调试,应该会有很好的效果。