Android静态分析

本文最后更新于:2020年3月12日 晚上

IDA破解实例-定位关键代码

搜索特征字符串

1
2
1. ctrl+s定位strings段
2. alt+t快捷键搜索文本字符串

搜索API

1
2
1. 定位到code段
2. 搜索API名称

搜索方法名

1
Exports窗口中搜索方法名

if-eqz的opcode是0x38
if-nez的opcode是0x39
return的opcode是0x0f

修改dex,替换apk中的dex

1
2
3
4
1. 使用dexFixer更新checksum
2. 将修改后的dex重新放回apk包里
3. 删除META-INF文件夹
4. 对apk重签名即可安装

终止程序

  • Context的finish()方法

  • android.os.Process的killProcess()方法

Androguard简单使用

  • androapkinfo.py
    查看apk信息。包、资源、权限、组件、方法。
    androapkinfo -i filename
  • androaxml.py
    解析AndroidManifest.xml文件。
    androaxml -i filename
  • androcsign.py
    收集签名到数据库中,使用前需要为apk编写sign文件。
  • androdd.py
    生成apk每个类的方法的调用流程图。
    androdd -i filename -o dirname -d -f PNG
    -d 是指定生成dot图形文件。
  • androdiff.py
    比较两个apk文件的差异。
    androdiff -i filename1 filename2
  • androdump.py
    dump一个Linux进程。
    androdump -i pid
  • androgexf.py
    生成一个gexf图形文件。用Gephi查看。
    androgexf -i filename1 -o filename2
  • androlyze.py
    提供交互环境静态分析android程序。
  • andromercury.py
    Mercury工具的框架。
  • androrisk.py
    评估apk文件中的潜在方法。
    androrisk -m -i filename
    m 表示需要分析每一个方法。
  • androsign.py
    检测签名是否存于数据库,与androcsign作用相反。
    image-20200310102455464
  • androsim.py
    计算两个apk文件的相似度。
    androsim -i filename1 filename2
  • androxgmml.py
    生成jar/class/apk/dex文件的控制流程及功能调度图,输出格式为xgmml。
    androxgmml -i filename -o *.xgmml
  • apkviewer.py
    为每一个类生成一个独立的graphml图形文件。
    apkviewer -i filename -o xxx

androlyze的简单使用

androlyze -s //获取交互命令行模式

  1. 获取apk文件对象
    a = APK(“filename”)
  2. 获取dex文件对象
    d = DalvikVMFormat(a.get_dex())
  3. 获取分析结果对象
    dx = VMAnalysis(d)
  4. 三合一指令
    a, d, dx = APK(“filename”, decompiler=”dad”)
    decompiler指定反编译器名称。

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!