一.游戏窗口化功能的逆向分析
触发条件:在游戏属性加 -window
调试器附加游戏运行 ,开始分析
猜测:游戏实现窗口化必须去判断命令行参数里面有没有**-window**,而获取这个参数信息可以通过两种途径去获取(1) WindowApi:GetCommandLineA(2) PEB结构体实证:在 GetCommandLineA 函数 处下断点,运行游戏。
猜测:通过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
逆向分析
task1:通过Win32API获取[游戏的命令行字符串]到[EAX] task2: 分割字符串里面的[exe绝对路径],[参数]到[栈]再到[寄存器] task3: 通过while和if语句判断命令行是不是调试模式,ebp=1代表不是调试模式继续往后执行,发现我们来到了熟悉的地方,没错!就是我们上次分析屏幕分辨率的地方。猜测:经过代码的观察,猜测0代表窗口化,1代表全屏模式
实证:不加-winow重新运行游戏,并在这个地方下断点继续追踪:
新的问题: 窗口化功能 实现了,为什么 屏幕分辨率1920×1080 补丁失效了


发布评论