谁能告诉我这部分伪代码在做什么? 我使用IDA Pro
制作了它提前致谢!
int __cdecl sub_401000(int a1, int a2)
{
int result; // eax@4
int v3; // [sp+0h] [bp-Ch]@4
char v4; // [sp+7h] [bp-5h]@4
int i; // [sp+8h] [bp-4h]@1
signed int v6; // [sp+8h] [bp-4h]@4
for ( i = 0; *(_BYTE *)(i + a1); ++i )
;
result = i - 1;
v6 = i - 1;
v3 = 0;
v4 = -1;
while ( v4 )
{
v4 = *(_BYTE *)(v6 + a1);
result = a2;
*(_WORD *)(a2 + 2 * v3) = ((unsigned __int8)byte_40A300[v6 % 4] ^ *(_BYTE *)(v6 + a1)) & 0x7F;
--v6;
++v3;
}
return result;
}
答案 0 :(得分:2)
第一个for
循环找到字符串a1
的长度。然后,以下while
循环通过使用4字节常量密钥对它们进行异或,并且扩展为UTF16(可能)来转换a1
的字节。结果反转写入a2
。