从 demangled 名称,我知道一个函数将 anstd::string const&作为参数,但是当使用 Hex-Rays 的反编译器生成伪 c 代码时,它会自动检测参数为(int a1, int a2, int a3)
如何修复 Hex-Rays' 生成的函数签名?
int __fastcall EncodeUtil::getDecryptStr(int a1, int a2, int a3)
{
int v3; // r7
unsigned int i; // r5
char v5; // r6
int v7; // [sp+4h] [bp-1Ch]
int v8; // [sp+8h] [bp-18h]
v7 = a2;
v8 = a3;
v3 = a1;
HttpUtility::URLDecode(&v7);
for ( i = 0; i < *(_DWORD *)(v7 - 12); ++i )
{
sub_3B25D0(&v7);
v5 = byte_41A7DD[i & 7];
*(_BYTE *)(v7 + i) ^= v5;
sub_3B25D0(&v7);
if ( !*(_BYTE *)(v7 + i) )
{
sub_3B25D0(&v7);
*(_BYTE *)(v7 + i) ^= v5;
}
}
sub_3B2E20(v3, &v7);
sub_3B1CCC(&v7);
return v3;
}
