请依据实验文档《游戏辅助的实现》中的内容,自行编写一个游戏内存数据修改程序,使其可以对某款游戏的某一项或某几项数值进行修改。有余力的同学可以任选一款游戏尝试修改。
实验报告的最后请简述,作为游戏开发厂商,应该如何对抗本次实验所采用的辅助技术。
要求提交实验报告、编译好的exe程序以及cpp源代码。

实验文档与工具.rar


游戏内存修改的原理:

有以下步骤:

FindWindow(NULL, L"shooting")->GetSafeHwnd();

函数功能:该函数获得一个顶层窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数不查找子窗口。在查找时不区分大小写。

GetWindowThreadProcessId(hWnd, &Pid);

函数功能:GetWindowThreadProcessId是一种计算机函数,功能是找出某个窗口的创建者(线程或进程),返回创建者的标志符,函数原型是DWORD GetWindowThreadProcessId。

hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, Pid);

函数功能:OpenProcess 函数用来打开一个已存在的进程对象,并返回进程的句柄。

result = WriteProcessMemory(hProcess, (LPVOID)Address, &Score, 4, 0);

函数功能:WriteProcessMemory是计算机语言中的一种函数。此函数能写入某一进程的内存区域(直接写入会出Access Violation错误),故需此函数入口区必须可以访问,否则操作将失败。

总结就是:获得窗口句柄->获得该窗口的进程(在内存中)->打开进程->修改内存


//自定义内存修改
void CXianjianModiferhsb20190625Dlg::OnBnClickedButton2()
{CString Cstr;GetDlgItemText(IDC_EDIT4, Cstr);int fix = _ttoi(Cstr);CString Cstr2;GetDlgItemText(IDC_EDIT4, Cstr2);int address = _ttoi(Cstr2);DWORD Pid;HANDLE hProcess = 0;DWORD Address = address;DWORD Score = fix;DWORD result;HWND hWnd = FindWindow(NULL, L"shooting")->GetSafeHwnd(); ;if (hWnd != 0) {GetWindowThreadProcessId(hWnd, &Pid);hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, Pid);if (hProcess == 0) {//printf("Open process failed.");MessageBox(L"Open process failed.", L"提示", MB_OK);//return 0;}result = WriteProcessMemory(hProcess, (LPVOID)Address, &Score, 4, 0);if (result == 0) {//printf("Modify failed.");MessageBox(L"Modify failed.", L"提示", MB_OK);}else {//printf("Modify Success.");MessageBox(L"Modify Success.", L"提示", MB_OK);}}else {//printf("Failed");MessageBox(L"Failed", L"提示", MB_OK);}
}//默认内存修改
void CXianjianModiferhsb20190625Dlg::OnBnClickedButton3()
{CString Cstr;GetDlgItemText(IDC_EDIT4, Cstr);int fix = _ttoi(Cstr);CString Cstr2;GetDlgItemText(IDC_EDIT4, Cstr2);int address = _ttoi(Cstr2);DWORD Pid;HANDLE hProcess = 0;DWORD Address = 0x0019FD48;DWORD Score = fix;DWORD result;HWND hWnd = FindWindow(NULL, L"shooting")->GetSafeHwnd(); ;if (hWnd != 0) {GetWindowThreadProcessId(hWnd, &Pid);hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, Pid);if (hProcess == 0) {//printf("Open process failed.");MessageBox(L"Open process failed.", L"提示", MB_OK);//return 0;}result = WriteProcessMemory(hProcess, (LPVOID)Address, &Score, 4, 0);if (result == 0) {//printf("Modify failed.");MessageBox(L"Modify failed.", L"提示", MB_OK);}else {//printf("Modify Success.");MessageBox(L"Modify Success.", L"提示", MB_OK);}}else {//printf("Failed");MessageBox(L"Failed", L"提示", MB_OK);}}


通过此次学习了游戏内存修改,内存游戏修改的原理大概如下:

获得窗口句柄->获得该窗口的进程(在内存中)->打开进程->修改内存

作为游戏开发厂商,应该如何对抗本次实验所采用的辅助技术:

我认为防御游戏内存修改,就应该使发布同一种游戏的每一个游戏的内存地址都不变,可以通过随机添加注释对游戏内存地址进行偏移。这样,同一个游戏内存修改器只可以使用者自己游戏内存,而对于别人的游戏内存修改不能起到相应的作用,虽然可以通过使用CheatEngine找到要修改的每一个游戏内存地址,可是无疑增大游戏外挂开发者的成本,这样就可以有一定限度地做到防御游戏外挂开发者的作用了。

通过此次试验,收益良多。

网络安全学习第15篇 - 游戏内存修改相关推荐

  1. 只需要一点点C++基础,新手也可以制作单机游戏内存修改器

    声明:本文只是为了初学C++的,能够做出一些实用的东西,跳出管理系统的束缚,提升学习的兴趣,在这里选取了单机游戏,请不要尝试在线游戏,违发而已未必可行. 序:首先我们需要一个Qt+VS环境 Qt从ht ...

  2. 【术】游戏内存修改器原理及游戏敏感数值加密建议

    介绍市面上主流游戏内存修改器的原理,对症下药,让游戏从数据加密层面上更好的抵御这类内存修改器. 主流游戏内存修改器有三大内存搜索功能: 1. 基础数值搜索 2. 模糊搜索 3. 反加密搜索 基础数值搜 ...

  3. 【CE】游戏内存修改 植物大战僵尸 太阳数量

    游戏版本:植物大战僵尸中文版( PlantsVsZombies ) https://www.jb51.net/game/73344.html Cheat Engine 版本:Cheat Engine ...

  4. 手机html5游戏内存修改,一种防止游戏被内存修改器修改的方法

    一种防止游戏被内存修改器修改的方法 [技术领域] [0001]本发明涉及游戏数据处理领域,尤其涉及一种防止游戏被内存修改器修改的方法. [背景技术] [0002]目前,电子游戏越来越受到大家的喜爱,丰 ...

  5. ce游戏内存修改器(Cheat Engine)

    ce修改器(Cheat Engine)一款专门修改内存修改编辑的游戏工具它包括16进制编辑,反汇编程序,内存查找工具 新版6.1 版的CE与6.0 最大的区别就是添加了修改器制作工具,比之前 5.6. ...

  6. andorid平台游戏内存修改器的开发思路

    实现一个linux下的命令行内存修改器,然后安卓程序调用这个外置命令 1. 对指定andorid程序的内存进行扫描,把符合条件的数据都列表显现. 这个研究下/proc/pid/maps文件结构,主要分 ...

  7. 手机html5游戏内存修改,《手机游戏存档修改通用教程1 - 基础篇》

    之前发过一些修改游戏存档的帖子,大家都这个都比较感兴趣,但一直以来,大家都是照着教程一步步去修改,很多时候并不明白为什么要这样改.发贴人是怎么知道改哪个地方的?正所谓"授人以鱼不如授人以渔& ...

  8. 网络安全学习第4篇-使用特征码和MD5对勒索病毒进行专杀,并对加密文件进行解密

    请使用IDA或其它分析工具分析本次的样本文件,写一个简要的行为分析报告,并编写一个针对于这次样本的专杀(恢复)程序. 要求: 1.样本分析只要说明主要行为即可.提示:sub_401320主要用于文件加 ...

  9. 网络安全学习第6篇 - 爆破及PE文件解释

    1.请采用暴力破解的方式去尝试破解crack.exe文件(在实验报告中说明破解原理即可,无需提交破解后的文件) 2.请依据参考文档中的内容编写一个小程序,使其可以实现如下功能: ①判断一个文件是否为P ...

最新文章

  1. hdu 4503 找全是朋友或全不是朋友
  2. 数据治理的理论实践与发展趋势
  3. Nginx学习之三-ngx_http_request_t结构体
  4. C# winform 窗体接收命令行参数自动登录进行系统,模拟600个WCF客户端的并发压力测试...
  5. 这是不是帮女朋友拍照时的你?哈哈哈哈
  6. hopper_如何利用卫星收集的遥感数据轻松对蚱hopper中的站点进行建模
  7. mysql online ddl 5.6_MySQL 5.6的Online DDL功能测试
  8. django与grpc融合的过程
  9. ug装配绕轴旋转_UG绘制小吊扇模型,建模装配还能运动起来
  10. iPhone Objective-C EXC_BAD_ACCESS问题
  11. Loadrunner11破解完成添加License失败
  12. MSP430FR5994LannchPad开发笔记之三:MSP430的IO复用以及如何去获取IO复用功能
  13. 已知xyz yzz 532Java_已知 xyz+yzz=532 ,其中 x 、 y 、 z 为数字,编程求出 x 、 y 、 z 的值。_学小易找答案...
  14. h5(html5)入门
  15. (HBuilder X) 从下载HBuilderX到生成app.apk
  16. FPGA数字信号处理(二)并行FIR滤波器Verilog设计
  17. 育儿说: 每天给孩子吃牛肉, 坚持半年有什么效果? 医生说了大实话
  18. 学python多大年龄可以学车_考驾照要多大年龄?
  19. 一键式打造 DAO,M-DAO 或成 Web3 新宠儿
  20. 使用Cello部署HyperLedger超级账本

热门文章

  1. 观看:使用治具和工厂管理样本数据
  2. 【观察】从新华三2022十大技术趋势,看数字化如何重塑未来社会
  3. awd的批量脚本 pwn_CTF线下赛AWD套路小结
  4. apachezt和mysql关闭_Apache访问控制
  5. 损坏的映像 错误0xc0000020
  6. 计算机房防水,机房如何做到防水?
  7. 如何在手机上预览本地h5页面
  8. Match Points CodeForces 1156C 二分答案
  9. matlab图像处理二,图像缩放、旋转、修剪
  10. 【智能制造】一份不错的工厂自动化解决方案PPT!