-
-
[原创]逆向迅游机器码
-
发表于:
2016-3-17 10:43
7598
-
这东西也是。。。之前看别人破过,自己拿来一破就是破不了,,,今天也是脑洞大开。。。。
一般的方法,搜索字符串\\PhysicalDriver什么什么的,,然后我就艘字符串 phy,在该函数尾部下断,等待验证的到来,之前就是这么做的,很遗憾的是失败了。。。。
今天我又来搞它了,突然来了灵感,会不会是多模块验证。。。。然后我开始了漫长的调试,发现除了自身exe验证机器码外,js.dll这个模块也在验证,那么很好。。。同样找到 PhysicalDriver,在2边的段尾处都下好断,等待验证的到来,一共4处。
前面2处是开xunyou的时候验证的,最后2处是加速到99%的时候进行的验证。。。。
知道了原理,我就写了个模块,模块内写个函数 读取 FreeSerial.txt文件,这里面放着我的机器码,然后memcpy掉原来机器码的字符串。。。。就行了。。
代码如下:
__declspec(dllexport) void FreeSerial(void *pSerial)
{
char *ppSerial = (char*)pSerial;
if (ppSerial == NULL) return;
char szPath[256] = { 0 };
FILE *pf = NULL;
char serial[21] = { 0 };//机器码是20个字符
GetCurrentDirectory(256, szPath);
strcat(szPath, "\\FreeSerial.txt");
//MessageBox(0, "fkfkfkfk", "0xE9", 0);
pf = fopen(szPath, "r");
if (pf == NULL)
{
MessageBox(0, "文件打开失败", "0xE9", 0);
return;
}
fread(serial, 1, 20, pf);
fclose(pf);
memcpy(ppSerial, serial, 20);
}
需要注意的是,xunyou.exe 你加速了之后,再次打开, OD运行就会失败了。。。。所以第一次启动的时候先备份一个xunyou.exe
4个验证所在的地方,1个在exe,3个在js.dll
最后2个是在一起的验证,也就是在加速99%的时候,最后一个在最后第3个的下面,会有个比较,那个地方有时候会读取出错,所以要想100%成功,那边也应该hook下
[培训]科锐逆向工程师培训第53期2025年7月8日开班!