Dex文件格式扫描器:特征API的检测和扫描-小工具一枚(转载)

之前由于工作需求,会分析大量APP的某些特殊API,对特殊API分析每次都需要打开JEB->查找特定API->分析流程….无奈APP是无穷的,而精力是有限的。于是发挥了人类最本能的天性——偷懒,既然想偷懒了,就让计算机帮助分析,于是写了个小工具来做上面的需求。

其实不外乎就是对Dex文件格式的解析,然后根据API特征进行扫描,把调用的类和方法输出,接下来就会针对输出的信息,在逐个分析利用。

既然是解析刚好理了一下Dex文件结构,网上各种分析过程,就不在这里详述了。这里我主要详述下如何获取API特征的。

Android Dalivk字节码生成的过程大致为Java->smali->dalivk字节码,现在拿到的最后一步的东西,开发看的都是Java层的代码,如何进行特征提取呢?显然中间层的smali就起了很重要的作用(自问自答的废话<( ̄_ ̄)>),因此需要看看dalivk字节码到smali的转换表,在后面会详述。 
http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html

说说提取的特征吧,做法是首先查看smali对应代码,这时候会用到上面的转换表,相应转出对dalivk字节码,然后在代码段中匹配到字节码后,开始对特征API的字符串查找,相应的做出匹配,基于此来确定是否包含此API,例如初始化DexClassLoader时: 
CheckingInsAndClassValue(insNum,ins,dexHeader,0x70,””,”Ldalvik/system/DexClassLoader;”)

由于涉及相关信息,并没有把之前扫描的API接口加载代码里面,想扫描特殊的API的话请参照我的示例接口自行编写。当然,工具有很多地方待完善,也可以做成完全接口化的,目前只是够用而已。

扫描结果图: 
扫描DexClassLoader调用处

附上工具地址: 
https://github.com/Rorschach123/DexScanner

版权声明:本文为博主原创文章,未经博主允许不得转载,如有需要请私信博主。 https://blog.csdn.net/u011247544/article/details/61922270

猜你喜欢

转载自blog.csdn.net/dzyj211/article/details/79967029
今日推荐