ilih 发表于 2017-6-1 13:34:08

反反调试总结

TP:3种方法适用于win7 x64 ~ win10
一:1.恢复调试权限 2.结束11号线程 3.恢复所有线程
二:秒杀TP方法:CE使用VEH模式 结束11号线程
三:手动过TP:先于TX游戏运行OD,结束11号线程 直接附加进程
x86方法:
1.以上随便一种 + IAT HOOK Tesafe.sys MmIsAddressVaild 对挂钩函数地址进程过滤
2.以上随便一种 + 重载内核
HS:
1.双机调试
大部分HS游戏使用TMD壳 而TMD壳有一个反调试函数 使用ZwQuerySystemInformation 35号功能SystemKernelDebuggerInformation 检测内核/应用层调试器
过的方法内核Hook ZwQuerySystemInformation 进行过滤 x64需要越PG!
HS的驱动使用MmGetSystemRoutineAddress获取KeDebuggerEnabled 和 KdEnableDebugger 地址进行操作使双机失效 方法是:hook MmGetSystemRoutineAddress 只要是获取这两个函数都返回一个假函数指针一个假内存地址
在应用层使用
ZwQueryInformationProcess 7号功能 ProcessDebugPort 检测是否被调试 方法 hook ZwQueryInformationProcess 过滤7号功能 使返回数据为0即可
x64下还需要处理ObjectCallBacks 注销也好替换也好总之不要HOOK 有检验 当然如果有精力可以HOOK 然后hook NtOpenprocess 过滤OD等调试工具 总之不能让它自己得到自己的句柄即可
XIGCODE3:
双机使用了SEH结构化异常处理 自己触发int 2d异常 自己处理 如果有调试器这个异常就被调试器夺过去了 调试器只是将eip+1 然后就放行了,游戏找不到这个异常就over 方法hook int 2d触发的地方 跳过异常的地方直接跳进他的异常函数
XIGCODE3的反调试很简单 一个StrongOD就可以调试了 问题是如何保护OD ObjectHook或者ObjectCallBacks都行
如果发现打不开进程 就要恢复ObjectCallBacks 然后hook NtOpenProcess进行过滤 ObjectCallBacks的特点是全局 任何进程都必须遵守 这也是为什么白名单失效的原因
做到打不开进程即可当然要过滤OD啦
XIGCODE检测很强 反调试很弱
页: [1]
查看完整版本: 反反调试总结