此处注册状态是字符串常量,用IDA翻一下rdata,从调用往回看流程图的跳转能快很多
无保护可以直接用IDA下断,有GPT分析直接断到伪代码上也许更方便
原贴那个keygen能用,但有些类型要手动补一下:
[C++] 纯文本查看 复制代码 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include <tchar.h>
int _tmain(int argc, _TCHAR* argv[])
{
char szVolumeName[256] = { 0 };
char szName[32] = { 0 };
char szCompany[32] = { 0 };
char szSerial[64] = { 0 };
unsigned int nNameLength, nValue, nCompanyLength, i, m, n, k, nGroupValue, nTimeValue;
char p[] = "?Etn5Pnc5AXi1DFlkYqnujsXNmvHdbcrqOoT8aaV5DkaymMRkPkoQ.";
char q[] = "fQObVwNOankJ5skqJvae3Ae5jdoETu5n02J6Ez85430PNSDAPjDrYgFaze9VDRjq";
char szMonth[] = ".9803D2F7404E";
char szDay[] = ".F3A4BF3B0503FB8BCB4F49803D5C740";
SYSTEMTIME st;
GetLocalTime(&st);
nTimeValue = szMonth[st.wMonth];
nTimeValue *= ((unsigned int)szDay[st.wDay]);
printf("请输入Name:");
gets_s(szName, 32);
nNameLength = (UINT32)strlen(szName);
if (1 > (UINT32)nNameLength)
{
printf("\r\n输入Name的长度必须大于0\r\n");
system("pause");
return 0;
}
printf("请输入Group:");
gets_s(szCompany, 32);
nCompanyLength = (UINT32)strlen(szCompany);
if (1 > (UINT32)nCompanyLength)
{
printf("\r\n输入group的长度必须大于0\r\n");
system("pause");
return 0;
}
nGroupValue = 0;
for (i = 0; i < nCompanyLength - 1; i++)
{
k = szCompany[i];
m = q[i];
n = p[i + 1];
k *= m * n;
k *= (i + 1);
nGroupValue += k;
}
nValue = 0;
for (i = 0; i < nNameLength - 1; i++)
{
k = (UINT8)szName[i];
m = (UINT8)q[i];
n = p[i + 1];
k *= m * n;
k *= (i + 1);
nValue += k;
}
nValue += nGroupValue + nTimeValue;
if (nValue > 0x7FFFFFFF)
nValue -= 0x7FFFFFFF;
printf("%d\r\n", nValue);
system("pause");
return 0;
}
我不会逆算法只能下断拿key,什么时候能才能和大佬一样变成key的生产者_(:3」∠)_
想问楼主的GPT插件怎么开的,我也是在这个贴里面下的但是没有,外面搜到的插件是直接要token的 |