APK安卓程序反编译破解方法

作者:admin发表时间: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 目录

结构如下

clip_image002

新建一个文件夹把需要破解的apk 应用程序放进去

clip_image004

打开apktool1.5.1文件夹有3个文件把这个文件夹的路径加入环境变量中,或者直接复制到windows目录里,打开cmd 输入apktool 显示如下信息方可使用

clip_image006

输入apktool d 应用程序路径 解压路径,回车(中间有空格一个)

clip_image008

反编译后代码如下

clip_image010

Res是一些图片文件可以修改,程序代码修改在smali 文件里,接下来需要提取classes.dex文件出来,直接用7z 打开提取出来破解源代码。

clip_image012

接下里打开dex2jar-0.0.9.12-a 找到dex2jar.bat 把calsses.dex 拖拽到dex2jar.bat上面解包

clip_image014

稍等片刻出现classes_dex2jar.jar 文件,这就是源代码。接下来用jd-gui-0.3.5.windows 打开

classes_dex2jar.jar 就可以看见源代码了

clip_image016

点击file菜单保存全部源码解压 打开就可以看见真正的源代码了

clip_image018

接下里可以参考java代码修改相对应的名字文件的smali 文件

clip_image020

代码对应看看出什么了嘛

clip_image022

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)

clip_image024

结果都一样,只是技术时间和精力问题。

顶一下 3 踩一下 0

你可能对以下内容感兴趣!

  1. systemui合并odex 反编译修改电池精度为...

发表回复

*

w_0002.gif w_0009.gif w_0007.gif w_0011.gif w_0005.gif w_0008.gif w_0010.gif w_0003.gif w_0012.gif w_0001.gif w_0006.gif