反编译 APKTool 逆向助手
Posted 白乾涛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反编译 APKTool 逆向助手相关的知识,希望对你有一定的参考价值。
最佳实践:android逆向助手
1、点击“反编译apk,完成后res下的所有资源就都可以正常使用了,相当于apktool的功能------目前已失效,但是直接用rar解压是可以的!
2、点击“提取dex”,可以提取出apk文件中的.dex文件,相当于把.apk更改后缀后解压
3、点击“dex转jar”,相当于dex2jar的功能
4、点击“jd打开jar”,可以自动使用jd-gui打开jar文件,现在已经可以查看源码了
5、在jd-gui中不能修改源码,可点击把所有源码保存起来后就能修改了
常见反编译工具简单介绍
常用工具:
- apktool,作用:提取res目录下的资源文件(drawable、layout、anim、color等)。官网:https://code.google.com/p/android-apktool/downloads/list
- dex2jar,作用:将.dex文件(可执行文件)转化为.jar文件。官网:http://code.google.com/p/dex2jar/downloads/list
- jd-gui,作用:以.java源码格式查看编译后的.jar文件(或.class文件)。官网:http://jd.benow.ca/;http://code.google.com/p/innlab/downloads/list
- AXMLPrinter2,作用:在apktool搞不定的情况下获取xml布局文件。
- XJad 作用:和jd-gui作用类似,是一款Java源程序反编译软件。
- Android逆向助手:整合以上工具的而成的一个图形化工具集。
CSDN上下载地址:apktool 下载 http://download.csdn.net/detail/vipzjyno1/7025111
dex2jar 下载 http://download.csdn.net/detail/vipzjyno1/7025127
apktool的使用
apktool的使用
apk反编译生成程序的源代码和图片、XML配置、语言资源等文件
- 解压得到3个文件:aapt.exe,apktool.bat,apktool.jar
- 将需要反编译的APK文件放到该目录下
- 打开命令行界面 ,定位到apktool文件夹,输入以下命令:【apktool.bat d -f】【test.apk bqt】(test.apk是要反编译的APK文件全名,可以直接拖拽过来,bqt为反编译后存放的目录)
- 成功后发现在文件夹下多了个bqt文件夹,点击便可以查看该应用的所有资源文件了。
- 如果你想将反编译完的文件重新打包成apk,输入apktool.bat b test,完成后在test文件下便多了2个文件夹:build和dist(存放着打包出来的APK文件)
官方的apktool工具只包含以下三个文件,只能使用CMD命令执行不过目前有很多重新打包后的版本,如下
dex2jar,jd-gui,XJad的使用
dex2jar,jd-gui,XJad的使用
- 首先将apk文件后缀改为zip或rar并解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的
- 然后将classes.dex复制到d2j-dex2jar.bat(名称可能不太一样)所在目录文件夹中
- 在命令行下定位到d2j-dex2jar.bat所在目录,运行ded2j-dex2jar.bat classes.dex
- 最后,进入jdgui文件夹双击jd-gui.exe,打开上面生成的jar包classes_dex2jar.jar,即可看到源代码了
- 不过,被混淆过的类文件名称以及里面的方法名称都会以a,b,c....之类的样式命名
XJad简介
- 1、XJad是基于Jad核心的Java源程序反编译软件,内置Jad1.5.8e2;
- 2、可处理多个*.class文件,可以处理文件夹内的所有文件,甚至可以处理*.jar文件;
- 3、带有多页面文本编辑器,也可集成在资源管理器中,随时点击右键都可进行操作;
- 4、支持java语法的高亮显示;
XJad使用说明
- 1、打开一个或者多个*.class文件,XJad反编译后,重命名为*.java文件,保存至当前文件夹,并在编辑器中打开查看;
- 2、打开一个文件夹,XJad将该文件夹下所有*.class文件进行反编译,并保存至该文件夹下,依据包路径信息生成文件夹路径,如com.spring.framework.*,将建立com\spring\framework的文件夹结构;
- 3、打开一个*.jar文件,XJad将该Jar文件中的所有*.class文件解压缩到临时目录并进行反编译, 并将源文件带包路径信息保存至当前文件夹下名称为“~” + *.jar 的文件夹中;
eclipse安装使用JD插件
eclipse安装使用JD插件
- Download and unzip the JD-Eclipse Update Site,
- Launch Eclipse,
- Click on "Help > Install New Software...",
- Click on button "Add..." to add an new repository,
- Enter "JD-Eclipse Update Site" and select the local site directory,
- Check "Java Decompiler Eclipse Plug-in",
- Next, next, next... and restart Eclipse.Installation
注意,因为众所周知的原因,不要选择联网更新之类的操作
AXMLPrinter2的使用
作用:目前很多APP已经混淆,使用APKTOOL已经提取不出资源文件,使用这个工具可以将二进制的xml布局文件转化为正常的形式弊端:需要一个一个的转换,且转换出来后有大量需要修改的地方下载地址:http://download.csdn.net/download/simbaba/8625893 (网上流传的部分版本可能不能使用)使用步骤:
- 1、更改apk后缀名为.rar并解压
- 2、找到解压后res目录下的要参考的布局文件,并将此文件赋值到和AXMLPrinter2同目录下
- 3、打开cmd并定位到此目录下
- 4、执行命令java -jar AXMLPrinter2.jar bqt.xml > bqt2.xml 便可把二进制的 bqt.xm文件反编译成可以阅读的 bqt2.xml文件
以上是关于反编译 APKTool 逆向助手的主要内容,如果未能解决你的问题,请参考以下文章
Android逆向之旅---反编译利器Apktool和Jadx源码分析以及错误纠正
Android逆向之旅—反编译利器Apktool使用教程(Apktool的安装使用)建议新手浏览
Android逆向之旅---反编译利器Apktool和Jadx源码分析以及错误纠正
Android逆向笔记-通过ApkTool源码分析未能反编译APK的原因