谁能告诉我这段伪代码在做什么?

时间:2014-03-24 11:14:19

标签: c reverse-engineering

谁能告诉我这部分伪代码在做什么? 我使用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;
}

1 个答案:

答案 0 :(得分:2)

第一个for循环找到字符串a1的长度。然后,以下while循环通过使用4字节常量密钥对它们进行异或,并且扩展为UTF16(可能)来转换a1的字节。结果反转写入a2