IDA打开
跟进sub_4010F0函数
这个函数用来读取输入,并将输入存入byte_403078中。
sub_401020函数是用来计算字符串长度的。
跟进sub_401040函数
这个函数将byte_403078进行处理后,再与byte_403000比较。
跟进sub_401000函数
这个函数会计算得到关键的v4,__ROL4__是循环左移。
这里直接动态调试出v4会方便点。
因为v4是char类型的,所以v4=4
编写脚本如下:
#include <iostream>
int main()
{
int v1 = 39;
int v4 = 4;
unsigned char byte_403000[] =
{
0x0D, 0x26, 0x49, 0x45, 0x2A, 0x17, 0x78, 0x44, 0x2B, 0x6C,
0x5D, 0x5E, 0x45, 0x12, 0x2F, 0x17, 0x2B, 0x44, 0x6F, 0x6E,
0x56, 0x09, 0x5F, 0x45, 0x47, 0x73, 0x26, 0x0A, 0x0D, 0x13,
0x17, 0x48, 0x42, 0x01, 0x40, 0x4D, 0x0C, 0x02, 0x69,
};
unsigned char byte_403180[40];
for (int i = v1 - 1; i >= 0; --i)
{
byte_403180[i] = v4 ^ byte_403000[i];
v4 = byte_403180[i];
}
byte_403180[39] = 0x00;
std::cout << byte_403180;
}