一.游戏窗口化功能的逆向分析
  1. 触发条件:在游戏属性加 -window

  2. 调试器附加游戏运行 ,开始分析
    猜测:游戏实现窗口化必须去判断命令行参数里面有没有**-window**,而获取这个参数信息可以通过两种途径去获取

    (1) WindowApi:GetCommandLineA(2) PEB结构体
    

    实证:在 GetCommandLineA 函数 处下断点,运行游戏。

  3. 猜测:通过msdn的查阅得知这个函数的作用是 Retrieves the command-line string for the current process The return value is a pointer to the command-line string for the current process. 。下一步应该是 切割字符串 ,然后 进行比较 ,而字符常量放在 常量区 ,我们可以通过字符串查找来定位 什么地方 使用到了 window

  4. 逆向分析

     task1:通过Win32API获取[游戏的命令行字符串][EAX]
     task2:  分割字符串里面的[exe绝对路径][参数][]再到[寄存器]	
     task3: 通过whileif语句判断命令行是不是调试模式,ebp=1代表不是调试模式
    

    继续往后执行,发现我们来到了熟悉的地方,没错!就是我们上次分析屏幕分辨率的地方。
    

    猜测:经过代码的观察,猜测0代表窗口化,1代表全屏模式
    实证:不加-winow重新运行游戏,并在这个地方下断点

    继续追踪:

    新的问题: 窗口化功能 实现了,为什么 屏幕分辨率1920×1080 补丁失效了