1024liu 发表于 2021-1-31 20:08

求助il2cpp解密的算法问题

本人新手,前几天我在破解一个腾讯手游,它的代码是加密的,真实代码我已经用gg修改器找到了。但是我需要重新打包,于是我从原来的libil2cpp.so里找解密程序。
我找到了它的init_proc,里面有这一段代码:

我顺着ida里面的提示,看到了85d8b58这个地址。跳转之后,发现这是一个比较长的程序,里面还有libil2cpp.so等字符串和很多运算,所以我基本确定这就是解密代码。可是,代码太长,我就有点看不懂了。在ida里f5   85d8b58这段程序,得到伪C:
int __fastcall sub_85D8B58(int a1)
{
int v2; // r0
void (__fastcall **v3)(int *); // r6
_BYTE *v4; // r0
int v5; // r2
int v6; // r4
int v7; // r0
int v9; //
_BYTE *v10; //
int v11; // BYREF
char *v12; //
int v13; //
void *v14; //
int v15; //
void *v16; //
int v17; //
void *v18; //
int v19; //

sub_85D91B8();
byte_85DC60C = 99;
v2 = sub_85DA168(1);
if ( byte_85DC614 )
    sub_85D8AE0(v2);
byte_85DC60D = 104;
byte_85DC614 = 1;
byte_85DC60E = 107;
v3 = (void (__fastcall **)(int *))off_85DBF90;
if ( (dword_85DC21C & 2) != 0
    && !(*((int (__fastcall **)(void *, int, int))off_85DBF90 + 1))(&unk_85DC114, a1, dword_85DC218) )
{
    sub_85D8AE0(0);
}
byte_85DC611 = 110;
byte_85DC60F = 95;
byte_85DC610 = 105;
byte_85DC612 = 105;
byte_85DC613 = 116;
if ( sub_85D8B10("libil2cpp.so") )
{
    sub_85D9098(dword_85DC234);
    if ( sub_85D8B10(&unk_85DC278) )
    {
      v12 = (char *)&unk_85DC298;
      v11 = a1;
      v13 = dword_85DC2B8;
      v14 = &unk_85DC2BC;
      v15 = dword_85DC2DC;
      v16 = &unk_85DC2E0;
      v19 = dword_85DC324;
      v17 = dword_85DC300;
      v18 = &unk_85DC304;
      v3(&v11);
    }
}
sub_85DA168(1);
v4 = v12;
v5 = v11 - v9;
if ( (int)v12 < (int)v10 )
{
    --v5;
    v4 = v12 + 1000000000;
}
v6 = 1000 * v5;
v7 = sub_85D91E4(v4 - v10, &stru_F4240);
return ((int (*)(const char *, ...))v3)("[%s] time:%ld ms", "libil2cpp.so", v6 + v7);
}

求各位大佬,有谁能告诉我,它的真实解密算法是什么?它的加密数据在哪?

附上libil2cpp原文件网盘地址。

https://wws.lanzouj.com/iffnrl551vi
密码:52pj

最后,有谁有什么技巧,区分有用信息的无用信息吗?

1024liu 发表于 2021-2-1 21:30

这个我自己找到了一些破绽,现在暂时不需要回复,我要申请删帖了
页: [1]
查看完整版本: 求助il2cpp解密的算法问题