apk破解攻略

Apk破解方案

一、准备工作

a) 安装jdk:用于创建数字证书与签名

b) apktool工具:反编译apk文件,得到资源文件、配置文件、smali文件、dex文件

c) dex2jar工具:将dex文件转换成jar文件

d) Jd-jui工具:查看jar文件源码

e) 配置环境变量,不配置也可以,不过操作麻烦(不配置环境变量的话,使用每个命令/工具要到命令的当前文件夹才能执行),你懂得……

f) 下载地址:

i. 官方下载:

1. Jdk
http://www.java.net/download/jdk6/6u10/promoted/b32/binaries/jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe

2. Apktoolhttp://code.google.com/p/android-apktool/

3. Dex2jarhttp://code.google.com/p/dex2jar/

4. Jd-jui:http://java.decompiler.free.fr/?q=jdgui

ii. 我使用的:http://download.youkuaiyun.com/download/wangfayinn/4836532 

二、反编译

a) apktool d iapk.apk iapkFile(可选,默认在当前目录下)

i. 执行此操作后,会在iapkFile文件夹下得到一个iapk文件夹,默认是在当前目录下

ii. Apktool d -s xx.apk

1. 可以获取dex文件,但是没有出现smali文件

三、修改

a) 根据需求修改iapk文件夹下内容

i. 修改res资源

ii. 修改manifest配置文件

1. 案例如:http://tieba.baidu.com/p/1272897204 

iii. 修改smali汇编代码

1. smali文件其实就是dalvik虚拟机运行的dex字节码对应的汇编文件,更多介绍请看:http://code.google.com/p/smali/

2. 案例如:http://blog.youkuaiyun.com/cloudwu007/article/details/6851800 

四、重新打包签名

a) 编译打包

i. apktool b IAPK

ii. 这时会在IAPK文件夹下生成两个文件夹:build(存放中间文件)、dist(存放打包生成的apk文件)

iii. 注意:此时dist文件夹下的iapk.apk文件还没有签名,所以无法安装运行。

b) 使用jdk提供的kyetooljarsigner签名

i. 准备签名文件(数字证书)

1. keytool -genkey -alias tony.wang.keystore -keyalg RSA -validity 20000 -keystore tony.wang.keystore

2. 参数说明:alias:别名 keyalg:算法 validity:有效期 keystore:密钥库名称
详细使用说明请参看:http://blog.youkuaiyun.com/Mr_Von/article/details/3089839 

ii. 签名:

1. jarsigner -verbose -keystore tony.wang.keystore -signedjar newiapk.apk iapk.apk tony.wang.keystore

2. 参数说明:

[-keystore <url>]            密钥库位置

[-storepass <口令>]          用于密钥库完整性的口令

[-storetype <类型>]          密钥库类型

[-keypass <口令>]           专用密钥的口令(如果不同)

[-sigfile <文件>]            .SF/.DSA 文件的名称

[-signedjar <文件>]          已签名的 JAR 文件的名称

[-digestalg <算法>]     摘要算法的名称

[-sigalg <算法>]        签名算法的名称

[-verify]                    验证已签名的 JAR 文件

[-verbose]                   签名/验证时输出详细信息

[-certs]                     输出详细信息和验证时显示证书

[-tsa <url>]                 时间戳机构的位置

[-tsacert <别名>]            时间戳机构的公共密钥证书

[-altsigner <>]            替代的签名机制的类名

[-altsignerpath <路径列表>]  替代的签名机制的位置

[-internalsf]                在签名块内包含 .SF 文件

[-sectionsonly]              不计算整个清单的散列

[-protected]                 密钥库已保护验证路径

[-providerName <名称>]       提供者名称

[-providerClass <>         加密服务提供者的名称

[-providerArg <参数>]] ...  主类文件和构造函数参数

五、反破解

a) 第一种办法:将核心代码用JNI写进so库中。由于so库的反编译和破解的难度加大,所以这种方式防止反编译效果不错。缺点是,对于Java层的代码没有保护作用,同样可以被篡改。

b) 第二种办法:在线签名比较。在程序初始化时,联网将运行的程序的签名与服务器上的官方标准签名进行比较,从而达到让反编译后的程序无法正常运行的效果。缺点是,如果此部分联网检验的代码被篡改跳过,则整套机制失效。

c) 第三种办法:代码混淆。为了加大反编译后代码分析的难度,对代码进行混淆。缺点是,治标不治本,同样可以修改(甚至据说还有反混淆工具,没用过,不多做评论)。

d) 声明:反破解技术均摘自网上,另外请参看我转载的另外四篇反破解博客

六、参考文章:

a) http://blog.youkuaiyun.com/cloudwu007/article/details/6851800

b) http://www.cnblogs.com/lovelili/archive/2011/10/19/2217259.html

c) http://tieba.baidu.com/p/1272897204  

d) http://www.cnblogs.com/wangvsa/archive/2012/10/09/2717089.html 

声明:本技术文件旨在技术交流,请勿用于商业违法活动。



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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值