美文网首页
Android之反编译

Android之反编译

作者: gooddaytoyou | 来源:发表于2019-01-24 15:37 被阅读0次

如何进行反编译

这里我们需要用到几个工具

  • apktools 主要用户反编译和打包
  • dex2jar 主要用于将dex文件转化为jar文件
  • jd-gui 主要用于对.class文件展示为源码(比如jar文件)
  • smalidea 是一个IntelliJ IDEA/Android Studio smali语言插件,可实现动态调试smali代码。
    记得配制相关的环境变量,否则要使用java -jar 方法运行。

apktool

源代码 https://github.com/iBotPeaches/Apktool

对于 apk包来说,如果直接改后缀名的,打开的布局文件是乱码,原因在于打包成apk文件,对原始的文件进行特殊压缩处理,而通过apktool工具就可以看来原始的布局文件。

命令

apktool d xxx.apk

或者

java -jar apktool.jar d xxx.apk

如下图


apktool

解压后生成test的文件,里面就有布局文件


解压后生成test的文件

dex2jar

我们生成apk,将所有java类都编译放在了classes.dex文件中。

classes.dex
命令

dex2jar classes.dex

dex2jar classes.dex

会自动生成classex-dex2jar.jar文件,而jar文件中包含的都是类的class文件,是不可读的,因此需要第三个工具,jd-gui。
jar文件


jar文件

jd-gui

jd-gui可以查看具体class文件


jd-gui

smalidea

smalidea源代码 https://github.com/JesusFreke/smali/wiki/smalidea
smalidea包 https://bitbucket.org/JesusFreke/smali/downloads/

通过Android Studio 动态调试安卓app

这里有个前提是手机Root过。

安装smalidea

  • 下载smalidea包,
  • 打开Android Studio,按Alt+Ctrl+S打开设置界面,点击Plugins——Install plugin from disk…——选择下载好的smalidea包,进行安装
  • 重启Android Studio

得到smali代码

有两种方式

  • 通过apktool 反编译可以得到smali代码
  • 通过baksmali反编译也可以得到
apktool反编译

参考上面的apktool使用方法。

baksmali反编译

将Apk后缀名改成rar 解压得到 classes.dex。
命令

java -jar baksmali-2.2.5.jar d classes.dex

通过以上命令得到smail文件。

导入smail文件到Android Studio

通过 File->New->Import Project,导入项目

配制端口

Edit Configurations… 添加一个remote调试 修改调试的端口 用8900端口。

调试app
  • 在smali代码中需要调试的地方打上断点
  • 运行应用,并在DDMS中选中应用的进程
  • 点击Debug按钮,开始调试

当运行到断点时应用就会被暂停,就像平时调试操作一样。

工具下载地址

apktool 链接:http://pan.baidu.com/s/1skm3d6l 密码:6525
dex2jar 链接:http://pan.baidu.com/s/1jHdTNka 密码:8jlh
jd-gui 链接:http://pan.baidu.com/s/1kUsfbDH 密码:jhbw
apktool官方下载
smalidea 下载

相关文章

网友评论

      本文标题:Android之反编译

      本文链接:https://www.haomeiwen.com/subject/abzyjqtx.html