Android 逆向复习

环境:

Java JDK

Android Studio

Nexus5 真机

天天模拟器

Android逆向工具

命令行工具:

AndroidManifest.xml清单文件解密工具

java -jar AXMLPrinter2.jar 清单文件

DEX文件反汇编、汇编工具

DEX文件是Android Java代码编译生成的二进制文件,包含了虚拟机指令(dalvik虚拟机)

  • baksmali.jar (反汇编工具,将虚拟机指令反汇编成Smali代码)
    java -jar baksmali.jar dex文件 -o 输出目录
    反汇编生产的目录中,包括所有dex文件中的类代码,每一个类就是一个smali文件
    Java中有三种类:外部类、内部类、匿名类
  • smali.jar (汇编工具,将smali代码汇编生产dex文件)
    java -jar smali.jar 目录 -o dex文件

apk签名工具

java -jar signapk.jar testkey.x509.pem testkey.pk8 update.apk

apk反编译工具-apktool

  • 反编译apk
    java -jar apktool.jar d apk文件
  1. 将清单文件以及其他xml文件解密
  2. 将资源序号文件(resources.arsc)与资源名称做了一个对应关系表生成在了/res/valus/public.xml
  3. 将 dex 文件反编译成了 Smali 代码
  • 回编译 apk 目录
    java -jar apktool.jar b 反编译的apk文件目录
    生成的apk在 反编译的apk文件目录/dist中

apk GUI 反汇编工具

Jadx
JEB

apktool反编译时出现错误

  • Exception in thread "main" brut.androlib.AndrolibException: Could not decode arsc file

原因:resource.arsc文件格式被篡改

  • java.io.IOException: Expected: 0x00080003, got: 0x00080000

你可能感兴趣的:(Android 逆向复习)