Android逆向分析基础-静态分析Android程序

来源:互联网 发布:csgo淘宝 编辑:程序博客网 时间:2024/05/01 20:36
  1. 什么是静态分析
  2. 快速定位Android程序的关键代码

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