反编译

Android的反编译工具:apktool,JEB等。

  • Apk 文件的结构,如下:
  1. META-INF:签名文件
  2. res:资源文件,里面的 xml 格式文件在编译过程中由文本格式转化为二进制的 AXML 文件格式
  3. AndroidManifest.xml:android 配置文件,编译过程依然被转换为 AXML 格式
  4. classes.dex:java 代码编译后产生的类似字节码的文件(dalvik 字节码,核心逻辑)
  5. resources.arsc:具有 id 值资源的索引表(asserts 文件夹中的资源不会生成索引)
  6. 其他文件:可由开发者自己添加,诸如 assets 等,或者 lib(native so 代码)等目录
  • 一般APK破解过程:

  • 逆向破解Android小技巧
  1. 信息反馈:通过界面的一些弹出信息,界面特点寻找突破点。
  2. 特征函数:比如搜Toast,Log,getSignature等。
  3. 代码注入:把toast或者log函数注入到程序中,跟踪位置。
  4. 打印堆栈:插入new Exception(“定位”).printStackTrace()。
  5. 网络抓包:通过抓包得到的关键字段,在代码中定位。
  • 推荐资料书
  1. Android软件安全与逆向分析
  2. Android Security Internals

配套装备

  1. Apktool
  2. signapk.jar【apk签名工具】
    java -jar signapk.jar testkey.x509.pem testkey.pk8 old.apk new.apk
  3. dex2jar
  4. jd-gui
  5. JEB

Apktool+dex2jar+jd-gui

apktool安装(MacOS)

  1. 点击下载地址,在看雪学院网站下载相应的apktool包;
  2. 解压,将包中的三个文件复制到/usr/local/bin下;
  3. 执行apktool,查看安装情况。

dex2jar安装

  1. 点击下载地址

jd-gui安装(MacOS)

  1. 点击下载地址

反编译apk包

  1. 进入存放apk目录;
  2. apktool d XX.apk;【编译apk:apktool b app文件】
  3. 在同级目录中出现与包名一样的文件,生成的文件如下:

反编译classes.dex文件

  1. 将需要反编译的apk重命名后缀为zip,解压,解压后的文件夹中有个classes.dex文件,获取该文件的路径 ;
  2. 输入命令cd xxx/xxx/dex2jar,进入下载的dex2jar文件夹中 ;
  3. 输入命令sh dextool.sh xxx/xxx/xxx/classes.dex,进行反编译classes.dex文件;
  4. 操作完成后,会在dex2jar文件夹中生成一个classes-dex2jar.jar文件 ;
  5. 打开jd-gui工具,将classes-dex2jar.jar拖入jd-gui界面上,就能够看到Java文件。

踩过的坑

  1. 反编译apk包报错

JEB

安装

  1. 下载地址
  2. 解压,将JEB根目录配置到环境变量中;
  3. 运行jeb_macos.sh,启动JEB窗口;
  4. File->open,选择*.apk。

踩过的坑

  1. mac下运行jeb_macos.sh报错

12-31 13:17
查看更多