过签名校验,看起来很简单的样子【已完结,附解题攻略】
本帖最后由 wyatton 于 2021-11-23 11:14 编辑Java代码有一次签名校验,这个很简单,谁都会。
然后,改了之后,能不能过so的校验呢?快来试试吧。
Crack成功条件:
1.可以植入HOOK框架,也可以直接爆破
2.二次打包后,能在普通用户机器上运行,加载libtestso.so后执行函数能显示"TestSO execute"即算成功。
PS:
1.只支持6.0以上系统,只支持arm64-v8a(模拟器也可以运行,32位不行)
2.有可能不太稳定,如果运行原始APK就有问题可以告诉我。
3.如果检测到APK被修改大概率app会崩溃或者ANR。
鉴于有不少同学已经破解,这里放一下解题攻略:
3个文件:AndroidManifest.xml,resources.arsc,classes.dex,保留其中至少一个文件不去做任何修改(apktool解包时填写参数保留原样)时,就很容易跳过校验,例如只修改classes.dex暴力跳过签名校验即可。
因为不填任何参数直接解包apk再重新打包的话,这3个文件的指纹都会被修改,所以……皮一下很开心啊,你学废了吗? 本帖最后由 wyatton 于 2021-11-22 09:29 编辑
各位大佬,必须是64位的手机,因为apk只有一个arm64-v8a的so,32位机上安装不了。
PS:已经有大神破解成功了(二次打包在普通手机【无root,无魔改刷机】上完美运行)。 本帖最后由 ogli324 于 2021-11-19 18:26 编辑
似乎只要不碰到AndroidManifest.xmlapplication入口点 重签名也不会有问题
贴一个frida脚本
```
function crackme(){
Java.perform(function(){
var DigestJDK = Java.use("com.android.org.conscrypt.OpenSSLMessageDigestJDK");
DigestJDK.engineDigest.implementation = function(){
var ret = this.engineDigest();
console.log(bytesToHex(Java.array('byte', ret)));
var ret = Java.array("byte", hexToBytes("adbdea546377bb9d58298ad664311515517add13"));
return ret;
}
})
}
setImmediate(crackme)
``` 根本都装不了:lol 芽衣 发表于 2021-11-17 16:24
根本都装不了
不能够啊,报什么错 先测试看看 测试一下看看 小米,安卓6.0,安装失败:
C:\Users\Administrator>adb install D:\android\temp\crack\sotest_s.apk
4567 KB/s (229399 bytes in 0.049s)
pkg: /data/local/tmp/sotest_s.apk
Failure 无闻无问 发表于 2021-11-18 08:33
小米,安卓6.0,安装失败:
C:%users\Administrator>adb install D:\android\temp\crack\sotest_s.apk
45 ...
32位的手机哦,我这只支持64位 wyatton 发表于 2021-11-18 09:09
32位的手机哦,我这只支持64位
嗯,64位的,动态注册test,没64位,玩不了,模拟器,不理想 测试一下,不知道是不是能不能成功 zuojm 发表于 2021-11-18 11:29
小米,安卓6.0,安装失败:
C:%users\Administrator>adb install D:\android\temp\crack\sotest_s.apk
45 ...
不支持32位手机哦