-
-
[求助]关于Ow反调试
-
发表于:
2017-5-29 16:52
7520
-
最近在分析Ow 使CE能附加上游戏调试
问题1:
游戏里有几个线程一直在制造异常,通过自己的异常处理,来防止调试器附加,于是我通过修改CE源码 (VEH)过滤了他的异常 ,就能附加上调试器,但是下了硬件断点后,游戏几秒钟就能检测到硬件断点。
我又Hook了 NtGetThreadContext 并没有发现游戏调用这个api来检测硬件断点。
于是我猜测它是在异常处理检测硬件断点的。
可是我通过Hook AddVectoredExceptionHandler 也没有发现他添加异常处理
现在我想知道怎么找到他的SEH处理函数 或者其他可能的异常处理
问题2:
游戏中代码都被给予了 PAGE_EXECUTE_READ 保护,导致不能修改内存 ,我调用VirtualProtect 来修改保护,可是怎样都修改不了,返回错误代码:87 ,于是想通过hook NtProtectVirtualMemory 来拦截他改内存保护,可是他并没有通过 VirtualProtect VirtualProtectEx来修改内存保护。根本拦截不到!!
我太菜实在是找不到什么办法来改他的虚拟保护。
只求各位哥哥姐姐叔叔阿姨弟弟妹妹能给个思路
问题二找到了解决办法:
在Github找到的X64dbg插件代码可以有效修改内存保护(貌似游戏还有效验)
附上地址:给需要的朋友 https://codeload.github.com/changeofpace/Force-Page-Protection/zip/master
这是介绍
NtProtectVirtualMemory will fail for memory mapped views with valid arguments in these scenarios:
The view is mapped with the undocumented allocation type:SEC_NO_CHANGE(0x00400000).
The desired protection is incompatible with the view's initial protection. Example: trying to set the protection for a view with an initial protection ofPAGE_READONLYtoPAGE_EXECUTE_READWRITE.
The view and/or backing section are created using large pages (unconfirmed / not currently supported).
A process can utilize these cases as an anti-patching mechanism. A demo of this can be foundhere.
This plugin defeats this technique by remapping the view with the desired protection.
[课程]Android-CTF解题方法汇总!