当前位置:网站首页>Reverse theoretical knowledge 1
Reverse theoretical knowledge 1
2022-07-23 10:20:00 【Chicken Island~】
Reverse thinking : First, design the idea , Then start to analyze
actual combat : Modify the game resolution 640×480 become 1920×1080
One . Analysis methods
- The game shows → The resolution data is used → Trace to the data source → Modifying data
What technology is used in game display ? answer : Graphic technology
GDI/GDI+:
openGl:Linux I use more
Direct:
The display technology used in this game , There must be some characteristics . We can use CE To find this feature , So as to know what technology is used in the game !
after CE Empirical results show that the game drawing technology is Direct technology
- By means of msdn Search and guess about technology , The game will be executed after loading the corresponding module DirectDrawCreateEx or DirectDrawCreate
demonstration : stay DirectDrawCreate,DirectDrawCreateEx Lower breakpoint , Through reverse analysis and Ctrl+F9,F7, Call DirectDrawCreate The functional framework of Draw it out

Finally, it is analyzed and used Screen resolution The address of , Then by modifying the data on the stack (1920×1080), function , Verified that his conjecture is correct .

Raise questions : Why are we x96dbg Jump to SetDisplayMode function , I can't jump ?
Two . Determine the address of the virtual function
Theoretical knowledge : This function is DLL Functions inside , We can use Window Of Dll A feature of : System xxxx.dll The base address is the same in each process
LPVOID lDx{
};
DirectDrawCreateEx(NULL, &lDx, IID_IDirectDraw7, NULL);
if (lDx) {
LPDIRECTDRAW7 lDx7 = (LPDIRECTDRAW7)lDx;
lDx7->SetDisplayMode(1, 2, 3, 4, 5);
}
demonstration : Get SetDisplayMode The address of , And then the next breakpoint , Run the game .

summary : By determining the virtual function address , We can also describe the framework of calling functions .
3、 ... and . Make patches
- Through to SetDisplayMode function Reverse analysis of
int global_43d740 = 1;
int global_4391F8 = 0x10;//bpp
int global_43d75C = 0x698880;//Direct The pointer
int global_4391F0 = 0x1E0;//height
int global_4391EC = 0x280;//width
void SetDisplayMode() {
int num1 = 0;
int num2 = 0;
int width = 0x280;
int height = 0x1E0;
if (global_43d740) {
setDisplay(,,,)
}
}
Found that regular : We can change global variables by Width and height The number , To change the resolution of the game ;
At the end of the game exe Breakpoint under entry point , And then through CE see Store values for the width and height of the game screen , These two values are found as soon as the program starts
guess :(1) stay TLS Segment modified (2) Naturally, this number
demonstration : Change these two values to 1920×1080, Run the game , Found that the data was changed back

ultimately , By means of OD Set up Memory write breakpoint , It's positioned to Functions that change data

demonstration : Change the screen resolution (1920×1080), Save all changes to the executable , Run the game
边栏推荐
- Undo log日志详解
- Moment get week, month, quarter, year
- SSH supermarket inventory management system
- 网络通信原理与IP地址的分配原理,网络七层由下往上分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层
- 赚钱能力”是需要积累的
- 金仓数据库 KingbaseES SQL 语言参考手册 (8. 函数(一))
- L-半胱氨酸修饰的金纳米粒子(Cys-GNPs)和牛血清白蛋白/生物素化白蛋白纳米粒
- How to build and use redis fragment cluster
- moment 获取周、月、季、年
- c# 字节数组和类相互转换
猜你喜欢

在线问题反馈模块实战(十一):实现图片下载功能

【300+精选大厂面试题持续分享】大数据运维尖刀面试题专栏(七)

如何在OneFlow中新增算子

【车联网原型系统|二】数据库+应用层协议设计

Undo log日志详解

error MSB4181: “QtRunWork”任务返回了 false,但未记录错误

Android development learning diary - content provider (cross application database modification)

The gospel of small and medium-sized enterprises is coming! Jnpf is becoming popular, helping business digital upgrading

浏览器怎么导入导出|删除书签,方法步骤来咯

【C语言基础】14 文件、声明和格式化输入输出
随机推荐
Decompile the jar package / class file / modify the jar package using the decompile plug-in of idea
RichView TextBox Items 文本框
One of the series of composition principle analysis, the design principle of composition
【车联网原型系统|二】数据库+应用层协议设计
A concise tutorial for soft exam system architecture designer | reverse engineering
如何在OneFlow中新增算子
使用IDEA的反编译插件 反编译jar包/class文件/修改jar包
金仓数据库 KingbaseES SQL 语言参考手册 (4. 伪列)
Redis token record user login design solution?
MySQL基础篇(运算符、排序分页、多表查询、函数)
Earning power "needs to be accumulated
error MSB4181: “QtRunWork”任务返回了 false,但未记录错误
EasyCVR新版本(v2.5.0)目录分级功能如何使用?
时间序列-第三方库:tsfresh【特征提取、特征选择】
Airtest脚本的点击位置与点击偏移
Target detection XML file to achieve mixup data enhancement (modifying the file path can be used directly, which is very convenient)
【C语言基础】16 可变数组(数组长度可扩展)
2.判断语句
Click position and click offset of airtest script
What is per title encoding?