工具/原料
创新互联公司10多年成都企业网站建设服务;为您提供网站建设,网站制作,网页设计及高端网站定制服务,成都企业网站建设及推广,对三维植被网等多个领域拥有丰富的网站推广经验的网站建设公司。
eclipse、ADT、android的SDK
反编译类文件用dex2jar、jdgui
1.
打开apk2java目录下的dex2jar-0.0.9.9文件夹,内含apk反编译成java源码工具dex2jar,以及源码查看工具jdgui。
apk反编译工具dex2jar,是将apk中的classes.dex转化成jar文件源码。查看工具jdgui,是一个反编译工具,可以直接查看反编译后的jar包源代码
2.首先将需要反编译的apk文件后缀改为zip并解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的,将classes.dex复制到dex2jar.bat所在目录dex2jar-0.0.9.9文件夹。在命令行下定位到dex2jar.bat所在目录,运行
dex2jar.bat classes.dex
目录文件夹就会生成
classes_dex2jar.jar
3.然后,进入jdgui文件夹双击jd-gui.exe,打开上面生成的jar包classes_dex2jar.jar,即可看到源代码了。
就像做菜一样,首先我们要把料备齐,三个反编译工具,apktool,dex2jar,jd-jui先下载下来,待用。还有有一个apk文件,一共四个文件。(简单介绍下三个工具的作用,apktool是用来得到Android app的资源文件的,就是res文件。dex2jar和jd-jui是查看Android app源代码的。接下来我就一步步带大家实现反编译。)
第一步,使用apktool得到 res文件。
解压缩下载上述工具中的apktool,解压得到3个文件:aapt.exe,apktool.bat,apktool.jar ,将需要反编译的APK文件放到该目录下,
打开命令行界面(运行-CMD-回车) ,定位到apktool文件夹,(还有个简单办法,按住shift键,点击鼠标右键,在菜单中选择“此处打开命令行窗口”),输入以下命令:apktool.bat d -f Presidential.apk (Presidential.apk 是我要反编译的apk的全名,apktool的指令这里就细讲了,请同学们自己学习吧)命令行图片和生成的文件的图片如下图。res文件就我们需要的资源文件啦。
第二步,查看apk文件的源代码。首先将apk文件的后缀改为.rar或者.zip并解压,得到其中的额classes.dex文件.,将获取到的classes.dex放到之前解压出来的工具dex2jar 文件夹内,然后用同样的方法打开命令行,输入:
dex2jar.bat classes.dex 回车,效果如下:
在改目录下会生成一个classes_dex2jar.jar的文件,然后打开工具jd-gui文件夹里的jd-gui.exe,之后用该工具打开之前生成的classes_dex2jar.jar文件,便可以看到源码了。
将 apk 解压,在解压后的文件夹中可以找到 classes.dex 文件。(除了 classes.dex 文件,可能还会有 classes2.dex , classes3.dex 等等,本文以 classes.dex 为例,对其他几个 dex 文件的操作是类似的)
使用 dex2jar 工具,将 dex 文件转换为 jar 文件
使用方式:
执行命令后,生成的 classes-dex2jar.jar 就是我们需要的 jar 文件。
使用 Luyten 工具查看 jar 文件,就能看到反编译后的源码了。
本例中, classes.dex 文件中存储的是 android 的一些基础库,实际编写的源码在 classes3.dex 中,对 classes3.dex 执行第二步,查看生成的 classes3-dex2jar.jar 文件,可以看到如下内容:
这就是反编译 apk 的基本操作了。
Cmder 是一个非常好用的命令行工具。
效果如下:
只需要执行 apk2jar 命令,就可以实现把 apk 解压到 apk_ 文件夹中,并将 apk_ 文件夹中的 classes.dex 文件转换为 jar 。原理就是通过 Cmder 添加别名,把上述的第一步和第二步中执行的命令行组合起来了。
为 Cmder 添加别名很简单,编辑 Cmder安装目录\config\user_aliases.cmd 文件,将别名添加到里面即可。本例添加的别名如下:
其中:
Android反编译的目的无非就是为了看到APK的xml、资源和代码:
得到代码的方式:直接解压APK文件 -- 得到classes.dex文件 -- 使用 dex2jar
classes.dex classes.jar生成jar文件 -- [可选的解压jar文件]
--使用XJad或者JDCompiler查看源代码
得到XML的方式:
方式1:直接解压APK文件 -- 通过axmlprinter工具查看XML文件(这种方式查看的XML文件的id都是数字--即R文件中id对应的值)
方式2:使用APKTool工具解压APK文件可以直接查看XML文件
Android反编译常常使用如下的一些工具:
1、反编译命令:
apktool d D:\\Developer\androidDecode\Test0201.apk D:\\Developer\androidDecode\test0201
D:\\Developer\androidDecode\Test0201.apk:要反编译的APK文件
D:\\Developer\androidDecode\test0201:反编译文件的保存目录,必须为空目录
2、从反编译的文件编译成APK apktool b D:\\Developer\androidDecode\test0201 D:\\Developer\androidDecode\test020101.apk
D:\\Developer\androidDecode\test0201:保存编译后文件的目录
D:\\Developer\androidDecode\test020101.apk:生成的新的APK文件的保存的绝对路径
3、签名APK文件:
singedAPK.bat文件
java -jar "%~dp0signapk.jar" "%~dp0testkey.x509.pem" "%~dp0testkey.pk8" %1 signed.apk
执行singedAPK.bat命令
singedAPK D:\\Developer\androidDecode\test020101.apk 生成一个singed.apk文件和test020101.apk在同一个目录
4、使用baksmali.jar把一个dex文件转换为一个smali文件
java -jar D:\\Developer\ApkTool\baksmali.jar -o
D:\\Developer\androidDecode\baksmaliout
D:\\Developer\androidDecode\Hello.dex
D:\\Developer\ApkTool\baksmali.jar:baksmali.jar文件所存在的全路径
D:\\Developer\androidDecode\baksmaliout:生成的smali文件的保存目录
D:\\Developer\androidDecode\Hello.dex:要转成smali文件的路径
5、使用ddx.jar把一个dex文件转换为ddx文件
java -jar D:\\Developer\ApkTool\ddx.jar -d D:\\Developer\androidDecode\ddxout D:\\Developer\androidDecode\Hello.dex
D:\\Developer\ApkTool\ddx.jar:ddx.jar文件的绝对路径
D:\\Developer\androidDecode\ddxout:要保存ddx文件的路径
D:\\Developer\androidDecode\Hello.dex:要转换的dex路径
6、Android自带dexdump工具:dex文件转为smali文件 dexdump -d xxxx.dex xxxx.smali
7、dex2jar.jar:dex2jar XXX.dex YYY.jar
关于安卓逆向你需要知道的工具及网站
把最近接触到的安卓逆向相关的工具和网站总结下,供需要者拿去使用,还有不全和遗漏后续会不断完善。
工具篇章
模拟器(动态调试需要用真机)
安卓原生模拟器:Android Studio自带的
夜神:今天开始尝试这个模拟器,发现在ida挂载进程时出现了问题,挂不上,架构为x86,不能用ida调试。 地址
逍遥:还未使用 地址
蓝叠(bluestack): 地址
雷电模拟器
apk反编译套件工具
jeb:今天开始尝试这个工具 地址
YouGais:以前我一直使用这个,没有官网地址,免费版功能受限
打包及签名工具
apktool:apk拆包打包工具 地址
jd-gui:java反编译工具 地址
aotusign:自动签名工具,没有官网百度即可
native文件反编译工具
ida:静态分析、动态分析,免费版功能受限 地址
gdb:
辅助调试工具
adb:通向手机或模拟器的桥梁,绿色小程序。最常用的就是查看logcat,进入手机shell等。 地址
ddms:android SDK中自带工具。该工具可以查看手机模拟器的进程,选中需要监控的进程后,会出现绿色小蜘蛛图标,同时后面会出现8700端口号。
jdb:jdk目录下自带的与安卓进程连接的程序,常与ddms配合用于动态调试
xposed:需要安装框架+模块,还有对应的xposed市场。可以在常用市场搜索安装。bluestack中安装后变砖了,夜神中安装正常。
十六进制文件编辑工具
UltraEdit:十六进制文件编辑工具
010Edit:还没有用过
winhex:印象中很久前用过
android开发工具
Android Studio
Eclipse
Aide(手机版开发工具)
其他
解压缩软件:winrar、7zip等等都可以,将apk改名为zip就能直接打开
社区资料篇章
论坛及社区
看雪论坛:
freebuff:
还有吾爱破解、知乎、、CSDN等等都有相应版块内容及文章可供学习。
arm指令
官方文档pdf:
在线编译网站
c到汇编在线转换
汇编到操作码在线转换