NP保护的问题,讨论转帖 一起讨论吧
NP保护的问题,讨论转帖 一起讨论吧今天是2015年03月14号。
系统:win7 64bit
NP更新了,在这之前,凡事NP的游戏基本都可以用启动远程注入DLL的方式注入。
那么今天呢?还是可以的,但是有一个问题:
在使用CreateProcess启动完成之后,游戏没有退出,但是启动游戏的那个程序(我们简称控制台程序)就会自动退出了。
我觉得好奇怪的,我想了好久也想不通为什么。
之后想应该是NP在注入npggNT.des给控制台的时候出错了,控制台崩溃掉了。
那么先启动控制台,启动一个正常加载NP的游戏(注意:不是控制台启动的,手动启动的),之后再次只用控制台启动游戏,果然,控制台并没有退出。
我就开始怀疑,在使用第一次CreateProcess启动游戏NP的时候,控制台保留着什么东西,以至于NP注入npggNT.des到控制台时出错了?
我带着很多的疑问,干脆不注入DLL,直接只写CreateProcess这个启动游戏这几行代码,结果呢......还是不行,只要游戏NP启动完成之后,启动游戏的这个程序就会退出了,好神奇。
哪位大神知道这个到底是什么意思吗?
你用进程了? 不懂,也许就是很简单阿给启动程序发一个退出消息 处理方法要hook NP进程的OpenProcess 以及你启动时候传入的父进程句柄 传递一个假的父进程句柄就好了 这个关闭原理是什么?
那为什么我先启动一个正常加载的游戏NP,之后我再启动控制台,再使用控制台启动第二个游戏NP的时候,控制台是不会退出的。
得出的结论是:先让npggNT.des这个东西先注入到控制台,之后控制台再启动游戏,这样就行了。
那么为什么直接用控制台启动游戏NP就会退出?
我擦我擦,真是想不通,有什么办法? Kellyma 发表于 2015-3-14 20:56
你用进程了?
这位是什么意思?
STARTUPINFOsi;
PROCESS_INFORMATION pi;
ZeroMemory(&si,sizeof(si));
si.cb=sizeof(si);
ZeroMemory(&pi,sizeof(pi));
int pos=GamePath.ReverseFind('\\');
CString Path=GamePath.Left(pos+1);
if (!CreateProcess(GamePath,"(运行参数)",NULL,NULL,FALSE,CREATE_SUSPENDED,NULL,Path,&si,&pi))
{
AfxMessageBox("创建进程出错");
return ;
}
ResumeThread( pi.hThread );
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
代码就是这样,只要一个启动,游戏正常运行,启动游戏的MFC程序就启动退出,好神奇 wodeao 发表于 2015-3-14 20:57
不懂,也许就是很简单阿给启动程序发一个退出消息
那为什么我先启动一个正常加载的游戏NP,之后我再启动控制台,再使用控制台启动第二个游戏NP的时候,控制台是不会退出的。 因为你创建游戏的第一次有记录你的进程句柄也就是传递的你父进程句柄
然后就关你了呗。和NP注入的那个DLL没有关系,你可以拦截下NP注入的dll再试试会不会关你就知道了 Cuzっ 发表于 2015-3-14 20:58
这个关闭原理是什么?
那为什么我先启动一个正常加载的游戏NP,之后我再启动控制台,再使用控制台启动第 ...
处理方法要hook NP进程的OpenProcess 以及你启动时候传入的父进程句柄 传递一个假的父进程句柄就好了 JolaSia 发表于 2015-3-14 21:02
处理方法要hook NP进程的OpenProcess 以及你启动时候传入的父进程句柄 传递一个假的父进程句柄就好了
"hook NP进程的OpenProcess "这个就算了吧,不会给你HOOK的,如果一个HOOK应该会报错的。启动的时候传入父进程句柄?
CreateProcess传什么进去?我没有传送吧。
