在分析经过加密混淆的Android程序时,仅使用静态分析技术往往达不到理想的效果.
动态分析分为动态跟踪和动态调试:
1. 动态跟踪:侧重于自动化分析
2. 动态调试:动态调试需要分析人员参与进来,依靠调试器的能力完成分析工作.
动态分析框架
MobSF同时支持Android,iOS,Windows平台上的软件分析,它的测试框架同时支持静态分析,动态分析和webAPI测试.
动态分析技巧
主流的动态分析框架除了提供了一套完整,通用的动态分析方法,通常还具备高度的可配置特性与可扩展性,但对一些应用来说,还是有一些分析要点没有提供.
代码注入法
一个程序在发布时通常不会保留Log信息,如果想观察程序特定位置的输出信息,需要手动进行代码注入.代码注入是指先反编译Android程序,然后在反汇编出来的smali文件中添加Log调用代码,最后重新打包程序并运行,查看输出结果.
使用代码注入可以精确输出程序运行时的中间结果,而输出的结果则可以作为程序 分析的风向标.
栈跟踪法
尽管logcat配合代码注入的方法在分析程序时屡试不爽,但需要分析人员阅读大量的反汇编代码来寻找程序的输出点,且在此过程中需要多次手动注入LOG代码.因此需要一种快速定位程序关键点的方法,栈跟踪法也是属于代码注入的范畴,主要的操作是手动向反汇编后的smali文件中添加用于输出栈跟踪信息的代码.与LOG输出代码不同的是,采用栈跟踪法,只需要知道大概的代码注入点,而且注入后的反馈信息比Log注入要详细的多.栈跟踪信息记录了从程序启动到插入点所有被调用过的方法.
Method Profiling
Windows平台上的OD有一个trace功能,其作用是在程序运行时记录每个被调用的API的名称.Android SDK也提供了类似的调试方法,它就是Method Profiling.
使用JDB动态调试APK
使用JEB动态调试APK
使用IDA Pro动态调试APK