安卓软件的破解在于破解它的安装包,也就是.apk文件,里面包含了应用的数据、可执行文件、签名等,它本质上是一个压缩文件。
Apktool是一个可以解析Apk文件的软件,它能将apk中的dex文件(也就是安卓可执行文件)解析成一个smali文件夹,里面存放着大量smali文件(smali是一种语言,与8086汇编类似,但它是基于行的)
下载链接:https://ibotpeaches.github.io/Apktool/install/
apktool的版本会略晚于安卓更新的速度,所以很多软件在安卓更新时发布新版本,在中加入安卓新支持的内容,导致apktool编译错误。解决方法是破解旧版,再更改其版本号并更改其向服务器获取最新版本的函数。
- apk反编译还有一个困难就是签名。签名是个很烦的东西,它是利用哈希表中的SHA-1来记录下每个文件,文件一有改动,签名就报废,所以只能自己签名。
- 很多软件制造商就是利用这一点,在开启应用前先检查自身签名。
- 这里就又要提到一个软件了,androidKiller,这个软件不仅涵盖了Apktool的功能,还附带了全项目查找、编码转换(smali中大部分字符串都使用Unicode编码)、查看Java源码、给Apk签名等功能。
所以遇到好不容易才破解的软件,一开就闪退或者登不进去,这一般说明它软件内部包含了校验签名的函数,唯一的解决方法就是用AndroidKiller全局搜索CheckSignature等类似的函数名,或者搜索关闭程序的函数在哪些地方被调用了,然后将他的函数返回值永远设为匹配。
至于内购破解…可以用AndroidKiller全局搜索"SUCCESS"、"PaySuccess"等标志着支付成功的字符串,一般在这些文件里,都有条件分支,把支付失败、支付取消等的结果引向支付成功即可。