fengjikou 发表于 2015-3-14 21:06:03

Cuzっ 发表于 2015-3-14 20:58
这个关闭原理是什么?
那为什么我先启动一个正常加载的游戏NP,之后我再启动控制台,再使用控制台启动第 ...

看看他是怎么注入的,别让他注入试试

Cuzっ 发表于 2015-3-14 21:06:54

JolaSia 发表于 2015-3-14 21:01
因为你创建游戏的第一次有记录你的进程句柄也就是传递的你父进程句柄
然后就关你了呗。和NP注入的那个DLL ...

这个父进程句柄我怎么销毁掉呢?
还有,拦截NP注入的DLL,我擦,我试过,OD不晓得在哪里拦截先,反正,游戏NP启动完成直接消失,很多的函数都下了断点,都没有断过,好神奇的样子

Cuzっ 发表于 2015-3-14 21:07:12

fengjikou 发表于 2015-3-14 21:06
看看他是怎么注入的,别让他注入试试

不让他注入是不行的,不让注入NP就直接出错的。

Cuzっ 发表于 2015-3-14 21:07:50

JolaSia 发表于 2015-3-14 21:01
因为你创建游戏的第一次有记录你的进程句柄也就是传递的你父进程句柄
然后就关你了呗。和NP注入的那个DLL ...

我在网上查到了资料。

虽然理论上,进程的父子关系在子进程完全创建之后就断绝了,但是这不妨碍Windows记录进程的父进程ID。

ToolHelp函数需要使用的结构体PROCESSENTRY32有一个字段th32ParentProcessId就是进程父进程的ID。

为了获得整个ID,只需要创建一个进程快照,然后定位到目标进程,最后在获取这个父进程id就好。

不过前面说了,这个ID是曾经创建进程的父进程的ID,在子进程拿到这个ID时,根本无法确定自己的父进程是否还活着,而由于process id会被系统立刻重用,所以手里的这个ID很可能已经变成其他进程。

为了保证子进程拿到这个ID时父进程还存在,一种方法是,让子进程始终掌握着父进程进程内核对象的句柄。

会不会是使用CreateToolhelp32Snapshot遍历的所有的进程,之后对比创建NP进程的父进程,之后会把根据进程PID关掉呢

Cuzっ 发表于 2015-3-14 21:08:25

JolaSia 发表于 2015-3-14 21:02
处理方法要hook NP进程的OpenProcess 以及你启动时候传入的父进程句柄 传递一个假的父进程句柄就好了

这个传入假的父进程句柄怎么弄呢?
能告诉我一下吗?大神

Cuzっ 发表于 2015-3-14 21:09:05

搞定了,谢谢各位

yinghao20 发表于 2015-3-14 21:09:54

因为控制台创建进程,控制台进程就属于是游戏的父进程,游戏启动之后就关闭父进程,所以你的控制台就挂了!
最简单的处理方案,无需任何HOOK,你只需要用个中转进程就可以解,决这个问题了!游戏关闭的只是中转进程,而中转进程无任何作用,只是一个创建!

q837077403 发表于 2015-3-15 00:21:37

强烈支持楼主ing……

hjwgjd 发表于 2015-3-26 22:10:30

看起来不错

757350522 发表于 2015-4-26 11:54:55

只有对楼主表示感谢,才能表达我现在的心情!
页: 1 [2] 3
查看完整版本: NP保护的问题,讨论转帖 一起讨论吧