Exeinfo PE查壳,UPX 0.89壳
用PEID的通用脱壳工具脱壳
用Delphi反编译工具,查看过程
ODCtrl+G搜索,发现只是eax参数不一样,call同一个函数
继续进入call进行分析,这里有一个判断eax进行跳转的操作
总结:
这个算法就是取name字符串的ascii码值,除以0xA,如果得到的结果大于0xA,再除以0xA,就是每一个文本框里的值。
Delphi程序可以多用反编译工具,配合OD。
KeyGen:
#include <iostream>
using namespace std;
int main()
{
char szName[10] = { 0 };
cin >> szName;
int nLen = strlen(szName);
if (nLen < 5)
{
printf("字符串不能小于5\n");
return 0;
}
int nBuffer[4] = { 0 };
nBuffer[0] = szName[0] / 0xA;
if (nBuffer[0] >= 0xA) nBuffer[0] = nBuffer[0] / 0xA;
nBuffer[1] = szName[2] / 0xA;
if (nBuffer[1] >= 0xA) nBuffer[1] = nBuffer[1] / 0xA;
nBuffer[2] = szName[3] / 0xA;
if (nBuffer[2] >= 0xA) nBuffer[2] = nBuffer[2] / 0xA;
nBuffer[3] = szName[4] / 0xA;
if (nBuffer[3] >= 0xA) nBuffer[3] = nBuffer[3] / 0xA;
for (int i = 0; i < 4; i++)
cout << nBuffer[i] << " ";
return 0;
}
执行结果: