debugactiveprocess 检测是否有反汇编调试器器

基于od插件的内核反汇编调试器器嘚设计与实现o0g8grk_

Engine(CE)不能搜索游戏内存让人们没法开始逆向它们,本文即在这种背景下为了满足人们的工作需求而设计的系统以VC 6.0 应用程序编譯器和WIN DDK 驱动编译器作为开发工具,以OD反汇编调试器器提供的静态库,Window Research Kernel(WRK)的源码为基础HOOK OD进程空间ntdll.dll动态库的KiFastSystemCall()函数,通过我们自己在Windows内核下加的系統服务表使其当OD反汇编调试器器调用我们感兴趣的系统调用时,跳到我们自己的系统调用

}

这个系列计划分为上下两部上蔀是内置型辅助,下部是按键型辅助我不保证会写完。

聊聊游戏辅助那些事上部第一篇——过掉那些讨厌的游戏保护

相对以前那些裸奔游戏,现在的新游戏多少都会有些保护这是绕不过去的坎。

下面针对我发现的几个保护方法逐个的聊一聊。

1、R3应用层下DebugActiveProcess 加载反汇編调试器器时,会设置一个远程断点而这个远程断点其实多此一举,反而有时会触发反反汇编调试器检测唯一要做的就是绕过它。

2、洳果保护程序有驱动那么在R0核心层下反汇编调试器端口清零会是绝大多数游戏保护的选择。进程的反汇编调试器端口保存了一个反汇编調试器器对像当有异常发生时,操作系统的异常处理程序会查询这个端口如果存在反汇编调试器器,就会将异常发送给反汇编调试器器反汇编调试器器会优先获得异常处理的权利。

网上有不少方法这儿采用自建反汇编调试器端口管理的方法绕过它,呵呵你想清零僦清零,反正我又不用它直接上获取设置反汇编调试器端口的相关代码。

这是真正的核心代码注意看注释。后面的 DeviceIoControlDispatch 会调用这个函数

泹是用 OnNtDebugActiveProcess 加载那是完全不反汇编调试器,因为这个函数不用你清零反汇编调试器端口了我自己就直接清零了。然后就要对DbgkForwardException下钩子让我们洎己保存的反汇编调试器端口发挥作用。具体代码

上面的两个函数用到了几个没有导出的核心函数,这就需要自己定位相关的函数了這里就不再展开定位的方法了。

3、反汇编调试器器对像降权当系统的反汇编调试器器对像的访问权限被设置为零时,表现为附加不上所囿程序游戏保护让我们创建的反汇编调试器对像成为没有反汇编调试器权限的反汇编调试器对像。处理方法:重建一个反汇编调试器对潒类型然后替换掉系统的反汇编调试器对像类型。

DbgkDebugObjectType 为系统内核反汇编调试器器对像地址可以通过符号搜索获取地址。TP在启动后会让所鼡的附加或启动反汇编调试器失败然后我们来这么一下,整个世界就安静了

4、这里感谢一下微软,64位的PG帮了我们不少忙干掉了很多嘚游戏保护。在64位的系统下游戏保护基本上过掉这三个就可以了,当然最后还要加上一个过PG的布丁32位下则一般还还需要过掉 NtOpenProcess,NtReadVirtualMemoryNtWriteVirtualMemory,NtQuerySystemInformation等幾个函数如果采用主动式难度不算很大。所谓主动式就是你走你的阳关道我走我的独木桥,我另外开辟一条路走把钩子下在应用层,让所有调用这些函数都转到我的函数上来而且这些钩子不是加在游戏程序上,而是加在反汇编调试器器上

最后预告一下,本系列的苐二篇聊聊游戏辅助那些事上部第二篇——跟踪是个苦力活,反汇编调试器器有什么好建议

当然什么时候发我自己也不知道了,因为還没写呢想看的就自己关注了。

}

如果是入门而且源程序没有经过加密处理的话可以直接用debug进行程序反汇编调试器。如果需要更专业的反汇编调试器工具可以考虑SoftICE for DOS,SoftICE是非常专业的反汇编调试器工具

}

我要回帖

更多关于 反汇编调试器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信