APK破解方法

一.宗述破解APK思路

对于反编译APK、并进行修改代码重新打包签名整体思路是如下:

1)使用dex2jar和JD-GUI反编译demo.apk得到Java源码,研究源码逻辑结构。

2)在eclipse对所要修改的源码进行重新编写,并编译,生成modify.apk

3)ApkTool反编译modify.apk得到想要的*.smali文件。

4)ApkTool反编译demo.apk得到资源、图片、xml、*.smali文件。

5)修改第四步骤中需要修改的布局Xml、图片等资源文件。将第三步中修改得到的*.smali代码替换掉第四步中*.smali相关文件。

6)使用ApkTool工具重新打包、使用JDK工具进行签名。

以上思路的详细执行过程详见下文。

. dex2jarJD-GUI反编译Apk得到Java源代码

首先要下载两个工具:dex2jar和JD-GUI,前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码。以下是下载地址:dex2jar:http://laichao.googlecode.com/files/dex2jar-0.0.7-SNAPSHOT.zipJD-GUI:http://laichao.googlecode.com/files/jdgui.zip

具体步骤:

首先将apk文件,将后缀改为zip,解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的;

解压下载的dex2jar,将classes.dex复制到dex2jar.bat所在目录。在命令行下定位到dex2jar.bat所在目录,运行如下命令:

dex2jar.batclasses.dex

生成classes.dex.dex2jar.jar

运行JD-GUI,打开上面生成的jar包,即可看到源代码了。

三、ApkTool反编译和重新打包

1、准备工作:

下载APKTool,通过下面这个连接进行下载,https://code.google.com/p/android-apktool/downloads/list

windows下只需要下载这两个文件包即可:apktool1.5.2.tar.bz2和apktool-install-windows-r05-ibot.tar.bz2

分别解压到到一个方便操作的目录下,然后就可以通过控制台进行操作了,当然前提是你配置已经有了JAVA环境,这个网上一搜一大堆,就不赘述了。

2、反编译:

把要反编译的APK文件放到跟APKTool四个文件的同一个目录下;

打开控制台,跳到该目录(例如是C:\Windows),执行:

cd C:\Windows

然后执行:

apktool dapkname.apk foldername

apkname.apk 表示要进行反编译的APK文件,foldername表示反编译后文件存放的目录,即在当前目录下会自动建一个新目录存放(如:C:\Windows\foldername)

执行完上面语句后,如果没有出现错误提示,则成功反编译了,找到foldername目录,打开smali目录即为反编译出来的字节。

但我在执行上面语句后,却出现了错误提示:

  Exception in thread "main"brut.androlib.err.UndefinedResObject: resource spec:

  0x010300dd

根据提示描述是找不到资源文件,应该是要反编译的APK文件用到了系统的一些资源。

解决办法:

从手机中导出framework-res.apk文件,该文件是/system/framework下面,把这个文件拷到跟apkTool同一个目录下,执行以下语句把资源文件加进来:

apktool iffreagmework-res.apk

执行完以后就可以把framework-res.apk导进来。此时再执行apktool d即可以正常反编译了。建议framework-res.apk取目前最新版本Android4.0中/system/framework的apk.

由于反编译出来的是smali文件,所以要学习一些smali基本的语法哦。

修改完代码后,就要重新打包成APK文件了:

apktool bfoldername

其中foldername即放反编译结果的目录,执行成功后会在该目录的dist目录下有一个重新打包后的apk文件。

好啦,到此就成功打包了一个新的apk文件了,但还不要高兴得太早,该文件是一个没有签名的apk,有了解过android的应该都知道,没有签名是无法安装的。那就要重新为该文件签一下名了。把你的签名文件和apk拷到同一个目录下,然后执行签名语句即可。

3、签名步骤:

1)生成签名文件:C:\Users>keytool -genkey -keystore cmd.keystore -keyalg RSA -validity 10000 -alias cmd.keystore

cmd.keystore 为生成的签名文件
2)正式签名:
C:\Users>jarsigner -verbose -keystore cmd.keystore -signedjar D:\Android\decompile\output\dist\new.apk D:\Android\decompile\output\dist\crackme5.apk cmd.keystore

new.apk为签名后的apk.

至此大功告成!!!

3)签名常见问题

把别人的apk签上自己的debug签名,安装的时候出现[INSTALL_PARSE_FAILED_NO_CERTIFICATES](使用adb install命令安装)。

各种百度google都说是因为没有签名,百思不得其解。用jarsigner -verify -verbose -certs abc.apk查看签名信息发现总是出现[CertPath未验证 null], 也不晓得原因。后来看到某大神的文章后发现可能是java1.7版本和android有些不兼容,于是删除了新版本的jdk,换上1.6。 就解决了。

ApkTool』简要介绍 提供1.3.5测试版源码。 此程序在其基础上完善并添加一些功能,此版本号定位2.0 最终版。 定为最终版的原因是支持动态加载最新的内置工具: ..\Bin\*.*目录下的所有工具如果有最新版本的,替换Bin目录内的程序即可应用最新版。 [注意:不要更改目录内的文件名,否则不会被加载。],判断是否使用最新版本的程序, 可以看启动日志中每个文件的路径。日志内容如下: 加载apktool.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\apktool.jar 加载aapt.exe的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\aapt.exe 加载signapk.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\signapk.jar 加载testkey.pk8的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin estkey.pk8 加载testkey.x509.pem的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin estkey.x509.pem 加载baksmali.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\baksmali.jar 加载smali.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\smali.jar 加载dex2jar.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\dex2jar.jar 加载asm-debug-all.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\asm-debug-all.jar 加载commons-io.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\commons-io.jar 加载slf4j-simple.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\slf4j-simple.jar 加载slf4j-api.jar的路径:C:\Users\Owner\Desktop\ApktoolGul\Bin\slf4j-api.jar ============================================================== 华丽的分割线 ============================================================== 使用说明: =========================================================== 使用环境:须安装 java,下载地址:http://www.java.com/zh_CN/ 1、反编译APK 拖拽APK程序到"反编译APK"按钮前的输入区,点击"反编译APK"按钮 2、重建APK 把第一步得到 文件夹 拖拽到"重建APK"按钮前面的输入区,点击"重建APK"按钮, 至此会自动生成已经签名好的"XXOO(已签名).apk" 3、签名 拖拽APK程序到"签名"按钮前的输入区,点击"签名"按钮,自动生成已经签名好的"XXOO(已签名).apk" 4、反编译dex 拖拽dex文件或odex到"反编译dex"按钮前的输入区,点击"反编译dex"按钮, 会在dex文件所在目录外生成一个与dex文件名相同的目录 5、重建dex 拖拽要重建的目录到"重建dex"按钮前的输入区,点击"重建dex"按钮,会生成与目录名相同的dex文件 6、dex转jar 拖拽dex文件或odex到"6、dex转jar"按钮前的输入区,点击"6、dex转jar"按钮, test.dex 会生成 test.dex.dex2jar.jar 文件 7、jar,class转java 拖拽保护class的目录,或.class文件或 jar文件到"jar,class转java"按钮前的输入区,点击"jar,class转java"按钮, 会生成相应的 java文件。 ========================== 内置软件版本: | apktool 1.4.3 | aapt r04 | baksmali 1.3.2 | smali 1.3.2 | dex2jar 0.0.7.9 | asm-debug-all 3.2 | commons-io 2.0 | slf4j 1.5.6 | jad 1.5.8e2 | ========================== ^_^ Enjoy! 2012.3.16 By:漏网之鱼 QQ:530747686
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值