- 什么是静态分析
快速定位Android程序的关键代码
- 反编译apk程序
使用apktool反编译apk后, 了解其AndroidManifest.xml的内容 - 程序的主Activity
<activity android:name="xxActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
- 关注Application类
- 定位关键代码
- 代码注入
- 栈跟踪
- Method Profiling
- 反编译apk程序
- Smali文件格式
- header
.class <访问权限> [修饰关键字] <类名>
.super <父类名>
.source <源文件名> 混淆后可能为空 - body
- static fields
.field <访问权限> static [修饰关键字] <字段名>:<字段类型> - instance fields
.field <访问权限> [修饰关键字] <字段名>:<字段类型> - direct methods
.method <访问权限> [修饰关键字] <方法原型>
<.locals> 使用的局部变量的个数
[.parameter] 方法的参数, 每一个参数对应一个.parameter指令
[.prologue] 代码的开始处, 混淆过的代码可能没有此指令
[.line] 在源代码中的行数 - interfaces
.implements <接口名> - annotations
.annotation [注解属性] <注解类名>
[注解字段=值]
.end annotation
- static fields
- header
- Android程序中的类
- 内部类
- 监听器
- 注解类
- 生成的类 R
- 阅读反编译的Smali代码
- 循环语句
- switch 语句
- try/catch 语句
- 使用IDA Pro静态分析Android程序
- 恶意软件分析工具包-Androguard
- androapkinfo.py -i xx.apk
输出apk的包, 资源, 权限, 组件, 方法等信息 - androaxml.py -i xx.apk
用于解密AndroidManifest.xml - androcsign.py -i xx.sign -o db
用于将apk的签名信息添加到数据库 - androdd.py -i xx.apk -o out -d -f png
生成每个类的方法的调用流程图(在santoku上不能正常工作) - androdiff -i xx.apk yy.apk
- androdump.py -i pid
- androgexf.py -i xx.apk -o xx.gexf
- andromercury.py
- androrisk.py -m -i xx.apk
评估apk的风险 - androsign.py -i xx.apk -b db -c dbconfig
检测apk信息是否在指定数据库里
- androsim.py -i xx.apk yy.apk
计算两个apk的相似度 - androxgmml.py -i xx.apk -o xx.xgmml
- apkviewer.py -i xx.apk -o output
为apk每个类生成一个独立的graphml图形文件.
- androsim.py -i xx.apk yy.apk
- androapkinfo.py -i xx.apk
- 其他静态分析工具
- apktool
- baksmali
- jad
- androguard
- ApkInspector
- 阅读反编译的Java代码
- dex2jar
- jd-gui
- santoku
Android逆向分析基础-静态分析Android程序
最新推荐文章于 2021-10-05 20:52:19 发布