APK安卓程序反编译破解方法
发表时间:2013-1-23 评论:0 点击 4,399+
下载所需文件
http://hack001.googlecode.com/files/apktool1.5.1.tar.bz2
http://hack001.googlecode.com/files/dex2jar-0.0.9.12-a.zip
http://hack001.googlecode.com/files/apktool-install-windows-r05-ibot.tar.bz2
http://hack001.googlecode.com/files/jd-gui-0.3.5.windows.zip
全部解压
把apktool-install-windows-r05-ibot 文件里的两个文件剪切到apktool1.5.1 目录
结构如下
新建一个文件夹把需要破解的apk 应用程序放进去
打开apktool1.5.1文件夹有3个文件把这个文件夹的路径加入环境变量中,或者直接复制到windows目录里,打开cmd 输入apktool 显示如下信息方可使用
输入apktool d 应用程序路径 解压路径,回车(中间有空格一个)
反编译后代码如下
Res是一些图片文件可以修改,程序代码修改在smali 文件里,接下来需要提取classes.dex文件出来,直接用7z 打开提取出来破解源代码。
接下里打开dex2jar-0.0.9.12-a 找到dex2jar.bat 把calsses.dex 拖拽到dex2jar.bat上面解包
稍等片刻出现classes_dex2jar.jar 文件,这就是源代码。接下来用jd-gui-0.3.5.windows 打开
classes_dex2jar.jar 就可以看见源代码了
点击file菜单保存全部源码解压 打开就可以看见真正的源代码了
接下里可以参考java代码修改相对应的名字文件的smali 文件
代码对应看看出什么了嘛
Smali,Baksmali分别是指安卓系统里的Java虚拟机(Dalvik)所使用的一种.dex格式文件的汇编器,反汇编器。其语法是一种宽松式的Jasmin/dedexer语法,而且它实现了.dex格式所有功能(注解,调试信息,线路信息等)。
Smali,Baksmali分别是冰岛语中编译器,反编译器的叫法。也许你会问为什么是冰岛语呢,因为Dalvik是一个冰岛渔村名字。
自己可以研究哈smali语法就可以修改相关代码了,最后再用apktool1.5.1工具打包回去再签名安装。
如何防止反破解
第一种办法:将核心代码用JNI写进so库中。由于so库的反编译和破解的难度加大,所以这种方式防止反编译效果不错。缺点是,对于Java层的代码没有保护作用,同样可以被篡改。
第二种办法:在线签名比较。在程序初始化时,联网将运行的程序的签名与服务器上的官方标准签名进行比较,从而达到让反编译后的程序无法正常运行的效果。缺点是,如果此部分联网检验的代码被篡改跳过,则整套机制失效。
第三种办法:代码混淆。为了加大反编译后代码分析的难度,对代码进行混淆。缺点是,治标不治本,同样可以修改。(从SDK2.3开始我们可以看到在android-sdk-windows\tools\下面多了一个proguard文件夹proguard是一个java代码混淆的工具,通过proguard,别人即使反编译你的apk包,也只会看到一些让人很难看懂的代码,从而达到保护代码的作用。在eclipse自动生成的project.properties文件中加上一句proguard.config=proguard.cfg)
结果都一样,只是技术时间和精力问题。