使用Resource Hacker+IDA定位程序验证逻辑,不熟悉的可以看我逆向技巧栏目相关文章
可以得出等价伪代码以及对应注册算法如下
#include <iostream>
using namespace std;
/*int main(HWND hWnd)
{
UINT iNLen; // esi@1
UINT iSerial; // eax@2
int i; // edi@4
char szSerial[21]; // [sp+Eh] [bp-2Ah]@3
char szName[21]; // [sp+23h] [bp-15h]@1
iNLen = GetDlgItemTextA(hWnd, 101, &szName, 20);
if (iNLen>=5)
{
iSerial = GetDlgItemTextA(hWnd, 102, &szSerial, 20);
if (iSerial)
{
for (i=0; i<iNLen; ++i)
{
if (szSerial[i] != szName[i]-i)
return 0;
}
MessageBoxA(hWnd, "Congratulations - you did it!", "Success", 0);
iSerial = 1;
}
}
else
{
iSerial = 0;
}
return iSerial;
}*/
void main()
{
char szName[] = "@@@@@";
char szSerial[6] = {'\0'};
for (int i=0; i<5; ++i)
{
szSerial[i] = szName[i]-i;
}
cout<<"The Serial:"<<szSerial<<endl;
}