-
-
[原创]某游戏中NtOpenProcess直接恢复重启问题解决
-
发表于:
2011-2-11 08:21
9752
-
[原创]某游戏中NtOpenProcess直接恢复重启问题解决
首先找到被HOOK的地址,
可以看到80597894 是被HOOK 的地址
对这个地址下断点
断下来了
(这个图用照相机拍的)
对80597894进行判断的地址是 AD2FBFA2 这个函数的开始地址是AD2FBF72
AD2FBFA2 反汇编的内容是:
ad2fbfa2 3b05f42d30ad cmp eax,dword ptr ds:[0AD302DF4h]
ad2fbfa8 7419 je ad2fbfc3
下面进行分析
看看0AD302DF4h的内容是啥
[0AD302DF4h]==2cd61e0f
然后在看看被HOOK处的80597894地址的内容
分析出来得到是明文比较,判断两者相等否,相等就跳,如果不相等,也就是发现被恢复了就往下执行,修改的方法是在内核中把je ad2fbfc3 更改成JMP ad2fbfc3 即可跳过其判断的部分这里需要说明的是 AD2FBFA2这个地方时候还有验证呢?我们可以对这个比较的地址再下断点,然后验证。我记得年前是没有的,最近更新了,也就不知道有没有在加判断了,这里我们再分析一下下面几行
因此得到
在拿到IDA中找到这个函数头部
其中JZ SHORT LOC_1005F93就是刚才的那个判断,跳过这个就行了,把CALL SHUTDOWNCOMPUTER 这个函数 nop也行,然后在直接恢复NtOpenThread即可
ntopenprocess的方法也是一样子的,但ntopenproces这个有个特点,应用程还有一个检测,也就是你还需要给应用程返回一个特定的东西,在把这个检测NOP掉就行了,这个就不具体分析了
对于清零的东西也是一样子的!举一反三吗!
效果图我就不贴了。
关于在实体机上测试的问题,多打印几次,判断好了在改,这样蓝的次数能大大降级!
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)