通过AndroidKiller反编译apk得到assembly-csharp文件,用dnSpy打不开这个文件,然后用IDA打开libmono文件,结果看不懂加密过程。请大侠指点一下。
int __fastcall mono_image_open_from_data_with_name(void *a1, size_t a2, int a3, _DWORD *a4, char a5, int a6)
{
int v6; // r3
int v7; // r3
_DWORD *v9; // [sp+0h] [bp-24h]
char v10; // [sp+4h] [bp-20h]
size_t n; // [sp+8h] [bp-1Ch]
const void *src; // [sp+Ch] [bp-18h]
int v13; // [sp+18h] [bp-Ch]
int v14; // [sp+18h] [bp-Ch]
void *dest; // [sp+1Ch] [bp-8h]
src = a1;
n = a2;
v10 = a3;
v9 = a4;
if ( !a1 || !a2 )
{
if ( a4 )
*a4 = 3;
return 0;
}
dest = a1;
if ( !a3 )
{
LABEL_12:
v13 = sub_29EA4C(872);
*(_DWORD *)(v13 + 8) = dest;
*(_DWORD *)(v13 + 12) = n;
*(_BYTE *)(v13 + 16) = *(_BYTE *)(v13 + 16) & 0xFD | 2 * (v10 & 1);
if ( a6 )
v7 = sub_29EAFC(a6);
else
v7 = sub_29F264("data-%p", dest);
*(_DWORD *)(v13 + 20) = v7;
*(_DWORD *)(v13 + 44) = sub_29EA4C(396);
*(_BYTE *)(v13 + 16) = *(_BYTE *)(v13 + 16) & 0xF7 | 8 * (a5 & 1);
*(_DWORD *)v13 = 1;
v14 = sub_1901E0(v13, v9, 1, 1);
if ( v14 )
v6 = sub_1909CC(v14);
else
v6 = 0;
return v6;
}
dest = (void *)sub_29EA00(a2);
if ( dest )
{
memcpy(dest, src, n);
goto LABEL_12;
}
if ( v9 )
*v9 = 1;
return 0;
}