首页
论坛
专栏
课程

[调试逆向] [系统底层] [商业保护] [虚拟机保护] [其他内容] [原创]游戏保护代码BUG之检查调试

2019-2-15 01:00 1514

[调试逆向] [系统底层] [商业保护] [虚拟机保护] [其他内容] [原创]游戏保护代码BUG之检查调试

2019-2-15 01:00
1514
GAME驱动检查调试。
从几年前我就看了下,今天看还是这个样。

BOOLEAN 检查调试器(ULONG a1, LONG a2, SHORT a3, PBOOLEAN a4, LONG a5, LONG a6, LONG a7)
{
  BOOLEAN result;
  if ( 启动保护 )
  {
    if ( 启动检查调试器 )
    {
      a4 = KdDebuggerEnabled();
      if ( (ULONG)KdDebuggerEnabled() <= 启动保护
        || (a1 = 启动保护 + (UINT)启动检查调试器,
            (ULONG)KdDebuggerEnabled() >= 启动保护 + (ULONG)(UINT)启动检查调试器) )
      {
        黑名单解密扫描(a1, (UINT)启动检查调试器, 启动保护, a2, a3, (INT)KdDebuggerEnabled(), a5, a6, a7);
      }
    }
    if ( 启动保护 )
    {
      if ( 启动检查调试器 )
      {
        if ( (ULONG)KdDisableDebugger() <= 启动保护
          || (a1 = 启动保护 + (UINT)启动检查调试器, (ULONG)KdDisableDebugger() >= a1) )
        {
          黑名单解密扫描(a1, (UINT)启动检查调试器, 启动保护, a2, a3, (INT)a4, a5, a6, a7);
        }
      }
    }
  }
  while ( TRUE )
  {
    result = (UINT)((INT *)KdDebuggerEnabled() == 0 ? 0 : 1);
    if ( !result )
      break;
    KdDisableDebugger();
  }
  return result;
}

修改以下一处就会很神奇的直接过调试
1.while ( TRUE ) 改为 while ( FALSE )
2.result = (UINT)((INT *)KdDebuggerEnabled() == 0 ? 0 : 1); 改为 result = (UINT)((INT *)KdDebuggerEnabled() == 0 ? 0 : 0);



[公告]安全服务和外包项目请将项目需求发到看雪企服平台:https://qifu.kanxue.com

最新回复 (4)
syser 2019-2-15 06:32
2
0
你都强行改Patch了 你管这叫BUG???
friendanx 2019-2-15 09:35
3
0
逆的这么仔细
柒雪天尚 2019-2-15 10:18
4
0
你都强行改Patch了 你管这叫BUG??? 
老牜lyh 2019-2-15 12:30
5
0
不错,,是这么玩的。这样最好
游客
登录 | 注册 方可回帖
返回