1.png (47.35 KB, 下载次数: 0)
下载附件
2020-11-23 19:23 上传
先感受一下这个迷宫一样的so混淆,令人头皮发麻。
准备工具:
1、IDA
2、安卓9.0以下手机
软件样品为当前最新版5.4。有腾讯壳,因为软件屏蔽了反射大师,所以我换了git一个项目的脱壳机,在vmos里面完成脱壳。由于本文只是有关破解签名校验,所以没有脱壳教程。
1.png (120.55 KB, 下载次数: 0)
下载附件
2020-11-23 19:41 上传
成品在智友论坛有下载,不要问我拿成品。根据安装包体积,不出意外全部使用了hook原包,翻了近1倍大小,那么怎么样才能手改呢??
根据往常惯例,首先对脱壳的安装包进行重签名,MT一键已死,勿念。虽然能打开app但是无法加载小说,会出现FAIL!
1.png (74.32 KB, 下载次数: 0)
下载附件
2020-11-23 20:07 上传
1.png (82.77 KB, 下载次数: 0)
下载附件
2020-11-23 20:09 上传
根据ddms抛出的异常,我发现是so的问题导致的,一看又是那种制杖源码,不知道哪找的,哪里出问题都告诉别人了。
所以签名校验就在so里面,现在就把libcommon-encryption丢到ida里面加载。
加载完毕后直接打开输出表,进入Java_com_km_encryption_api_Security_sign,来看一下它的代码。
int __fastcall Java_com_km_encryption_api_Security_sign(int a1, int a2, int a3)
{
int v3; // r4
int v4; // r8
AndroidUtils *v5; // r0
AndroidUtils *v6; // r5
MD5KeyGenerator *v7; // r0
int (__fastcall *v8)(int, const char *); // r2
MD5KeyGenerator *v9; // r6
int v10; // r5
void *v11; // r8
int v12; // r9
int v13; // r0
int v14; // r11
int v15; // r6
unsigned int v16; // r0
_BYTE *v17; // r10
int v19; // [sp+4h] [bp-94h]
char v20; // [sp+8h] [bp-90h]
char v21; // [sp+Ch] [bp-8Ch]
int v22; // [sp+78h] [bp-20h]
v3 = a1;
v4 = a3;
v5 = _android_log_print(3, "KM-NATIVE", "call Java_com_km_encryption_api_Security_sign");
v6 = AndroidUtils::Instance(v5);
if ( !AndroidUtils::isInitialized(v6) )
AndroidUtils::init(v6);
v7 = AndroidUtils::isCheckFailed(v6);
if ( v7 != (&dword_0 + 1) )
{
v9 = MD5KeyGenerator::Instance(v7);
if ( MD5KeyGenerator::isInitialized(v9) )
{
_android_log_print(3, "KM-NATIVE", "initialized");
}
else
{
_android_log_print(3, "KM-NATIVE", "not initialized");
MD5KeyGenerator::init(v9, v3);
}
if ( MD5KeyGenerator::isInitialized(v9) == 1 )
{
_android_log_print(3, "KM-NATIVE", "initialized and encode start....");
v10 = (*(*v3 + 684))(v3, v4);
v11 = as_unsigned_char_array(v3, v4);
v12 = MD5KeyGenerator::getKeyData(v9);
v13 = MD5KeyGenerator::getKeyDataSize(v9);
v14 = v13;
v15 = v13 + v10;
v16 = v13 + v10 + 1;
if ( v15
你可以看到call Java_com_km_encryption_api_Security_sign和FAIL都是从这里跑出来的,现在看到下图的黄色函数,双击进去。
j__ZN12AndroidUtils4initEP7_JNIEnv
1.png (153.11 KB, 下载次数: 0)
下载附件
2020-11-23 20:31 上传
继续进入AndroidUtils::init(_JNIEnv *),再继续进入j_AndroidUtils::checkValid(void),接着还要进入AndroidUtils::checkValid(void),还没完继续点AndroidUtils::checkValid(void),最终来到AndroidUtils::checkValid。
1.png (160.89 KB, 下载次数: 0)
下载附件
2020-11-23 20:41 上传
注意看红色断点部分,改成无条件跳转,直接B下去,绕过会出现异常的部分。
1.png (70.29 KB, 下载次数: 0)
下载附件
2020-11-23 20:48 上传
然后再试试看,随便点开一本小说,终于可以愉快地看了。
1.png (271.99 KB, 下载次数: 0)
下载附件
2020-11-23 20:52 上传
送一个改好的so作为参考
libcommon-encryption.zip
(68.85 KB, 下载次数: 408)
2020-11-23 20:54 上传
点击文件名下载附件
下载积分: 吾爱币 -1 CB