
一、 下载dex2jar包,解压
二、把apk包的后缀名改为.zip
三、把apk压解压拿到classes.dex文件,并放到dex2jar所在的目做隐芹录下
四、运行命令dex2jar.exe classes.dex
五、下载jd-gui
六、把jar包加载到jd.gui,查看源码,源码中的类名,方法名,变量名是否已经改变
方法二:
一、下载apktool工具
二、运行apktool.bat d xxx.apk,把apk反编译成smali
三、如果想要进纯毕一步查看源码,可下载smali2java
四、使用smali文件的文件名进行分析,如果存在1个或1个以上的资源类的smali文件,就可以证明该apk没有携态被混淆过。
smali 是Android 应用程序(*.apk)反编译生消拿成的文件格式, 是一种类似于汇编语言的底层计算机语言。阅读和书写smali语法都需要极大的耐心和勇气, 本文将介绍如何反编译和运行第三方的程序(smali)代码。什么是smali 文搏桥磨件
Android程序文件, 即apk文件, 其实是一个zip压缩包, 其文件结构如下:
其中, classes.dex是程序的核心文件,是java语言的代码编译后的二进制字节码程序。这种字节码程序是编译专供机器阅读的, 类似于汇编语言的机器码。然而如果想直接阅读这部分程序, 最好的方法就是将该文件转化为smali文件。
apktool
著名的反编译工具 apktool 就可以完成这部分工作。 它将classes.dex文件反编译成一堆的smali文件, 这些文件按源码的包结构保存在各自的文件夹中。如下所示:
另外, apktool 工具强大之处在于它不仅可以反编译apk文件, 而且可以根据现有的smali 文件生成新的apk文件。 这就给汉化apk或者去除apk内嵌广告提供了可能。
smali语法类似于汇编语言的语法, 涉及寄存器的直接 *** 作, 可以直接阅读, 但羞涩难懂, 尤其是在代码混淆之后。
dex2jar
有人做了一个专门的工具 dex2jar 将classes.dex 转化为jar 文件, 通过 jd-gui 阅读。
但dex2jar 并不健全, 反编译出的java文件大部分都有编译错误。可以简单的阅读和分析, 但若是涉及到很细致的内容, 则还是需要依赖smali。 smali 文件的编辑器推荐使用 sublime + sublime-smali ,基斗 具体请参考文章 为Sublime Text安装smali代码语法高亮插件 。
需要的工具jdk:必须的
baksmali:classes.dex反编译为smali格式(文本文件,可修改)
smali:smali格式编译打包为classes.dex
但由于smali格式类似汇编,比较难阅读,所以用dex2jar进行辅助
dex2jar:classes.dex转为jar包
jdgui:jar反编译并阅读
以上工具可以旁拦在 http://liye111111.ys168.com/ 下载
好了,顺序就是把apk用zip解开,里面的classes.dex分别用baksmali处理为smali,用dex2jar处理成jar,然后用jdgui看代码,找好java文件中要改的位置后,在smali里找对应的位置修改,改完了用smali再编译为classes.dex,覆盖原来apk里的同名碰瞎文件,最后重新签名。注意安装时要先删除原来手机里的版本,因为签名不同了,我第一次再这里卡了好久。
以“捕鱼达人海底捞”为例
下载这个游戏的apk,fishing_joy_1.apk,和工具放在一起
用zip解开fishing_joy_1.apk
copy classes.dex到baksmali的同一目录
用baksmali处理为smali
java -jar baksmali-1.2.6.jar -x classes.dex
得到out目录,里面是smali文件
用dex2jar处理classes.dex为jar包
dex2jar-0.0.7.10-SNAPSHOT\dex2jar.bat classes.dex
得到classes.dex.dex2jar.jar
这时我们的工作目录下面是这样
用jdgui打开classes.dex.dex2jar.jar
好了,可以看运吵胡代码,但还不能直接修改,需要对比着来修改smali文件
比如我们通过对比找到控制鱼被打到几率的代码在FishLayer.smali
Java代码
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)