在论坛上看了几篇相关的帖子,google搜索了一下相关的主题。初级入门不外乎下面基本方面,做一个基本的总结:
1. 安装 JAVA 和 apktool
1).首先安装需要JAVA环境,先下载JDK/JRE,点击下载,已经有JAVA环境的可跳过此步
3).解压apktool-install-windows-r04-brut1.tar.bz到任意文件夹,然后解压apktool.jar 到apktool-install-windows-r04-brut1.tar.bz所在的文件夹下。
4).打开cmd,用cd命令转到刚刚解压apktool-install-windows-r04-brut1.tar.bz所在的文件夹,输入apktool,出现一些命令说明即成功安装。
2. 下载dex2jar
http://code.google.com/p/dex2jar/downloads/list
3. 下载JD-GUI
http://java.decompiler.free.fr/?q=jdgui
经过上面三部,基本环境已经OK。 下面以Hello World 为例说明基本的操作。
4. 使用apktool 解压Apk ,以weixin为例,执行下面命令后,apk中的资源等文件将解压至mm.weixin 目录下了。
C:\apktool>apktool\apktool.bat d com.tencent.mm.weixin.apk mm.weixin
I: Baksmaling...
I: Loading resource table...
I: Loaded.
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: C:\Documents and Settings\ZhangWJ\apktool\
ramework\1.apk
I: Loaded.
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Done.
I: Copying assets and libs...
5. 解压出来的目录中,res 目录中的字符串肯能会是我们非常关心的部分, 对于修改code直接暴力破解,就是要修改smali 目录下对应的反编译文件。
另外单独提一下lib 目录,如果软件有使用到动态链接库,则解压后会出现在这个目录。这里面可能会有一些很重要的东东哦! C++不过需要反汇编.
6. 到上面的步骤,我们仍然未看到Java源码,实际上,从dex 到 Java的过程是dex2jar 及 JD-GUI 的功劳。
7. dex2jar 过程。这次的输入文件,并不是我们上面apktool的产出。 而是,我们直接使用7z之类的解压软件从apk中提取的dex文件(
classes.dex)。
C:\apktool>dex2jar-0.0.9.12\dex2jar.bat classes.dex
this cmd is deprecated, use the d2j-dex2jar if possible
dex2jar version: translator-0.0.9.12
[COLOR="Red"]dex2jar classes.dex -> classes_dex2jar.jar[/COLOR]
Done.
8. 得到classes_dex2jar.jar 后,我们使用jd-gui 打开它即可看到Java源码。
9. 无论是我们使用修改第四步中得到的smali 文件 还是修改第八步中得到的Java源码,我们最终的目的还是要重新打包成apk,重新打包的过程,则是第四步的逆过程。
C:\apktool>apktool\apktool.bat b mm.weixin my_weixin.apk
但是最后,很不幸,打包的过程失败了, 原因我还在查找中.... 也请高人指导!
(PS: 但是如果你是使用hello world 来做实验,肯定是成功的)
ion, 7, -F, C:\DOCUME~1\ZhangWJ\LOCALS~1\Temp\APKTOOL7685035221103364315.tmp, -I
, C:\Documents and Settings\ZhangWJ\apktool\framework\1.apk, -S, C:\apktool\mm.w
eixin\res, -M, C:\apktool\mm.weixin\AndroidManifest.xml]
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.jav
a:255)
at brut.androlib.Androlib.buildResourcesFull(Androlib.java:324)
at brut.androlib.Androlib.buildResources(Androlib.java:269)
at brut.androlib.Androlib.build(Androlib.java:192)
at brut.androlib.Androlib.build(Androlib.java:174)
at brut.apktool.Main.cmdBuild(Main.java:188)
at brut.apktool.Main.main(Main.java:70)
Caused by: brut.common.BrutException: could not exec command: [aapt, p, --min-sd
k-version, 7, --target-sdk-version, 7, -F, C:\DOCUME~1\ZhangWJ\LOCALS~1\Temp\APK
TOOL7685035221103364315.tmp, -I, C:\Documents and Settings\ZhangWJ\apktool\frame
work\1.apk, -S, C:\apktool\mm.weixin\res, -M, C:\apktool\mm.weixin\AndroidManife
st.xml]
at brut.util.OS.exec(OS.java:83)
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.jav
a:253)
... 6 more
10. 假设,我们想要修改的部分都已修改好,并且打包成功,是不是就可以使用这个apk了呢?其实还有一步,签名!
签名其实现在都有比较傻瓜的工具了,我就不在多说了。
另外,我发现其实已经有很多朋友将上面的工具集成到一个傻瓜工具包了,看大家的喜欢了。
其实我个人是比较推荐前期一步步的来做,这样才能更加立即原理,如果碰到什么问题,也好深入的去查。
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法