C 语言游戏外挂 (四):简单 DLL 注入游戏

2-DkfGbuE1q1dssPpS

通过 C 语言编写一个 DLL 文件和一个 EXE 文件,其中 DLL 包含作弊功能,运行 EXE 后将 DLL 注入游戏,使得游戏仅靠自身进程便可以实现作弊功能

  • 对象分析
  • 要用的 API 函数简单介绍
  • 编写测试效果
  • 总体评价

对象分析

2-a7MJzTOOUYJSfjjv

本次游戏对象为 Super Mario XP

没有更新所以可用任意版本
试玩发现人物血量最大为 10,心最大为 99,命最大为 99

要用的 API 函数简单介绍

HANDLE CreateThread(LPSECURITY_ATTRIBUTES, SIZE_T, LPTHREAD_START_ROUTINE, LPVOID, DWORD ,LPDWORD
CreateThread 将在主线程的基础上创建一个新线程

LPVOID VirtualAllocEx(HANDLE, LPVOID, SIZE_T, DWORD, DWORD);
向指定进程申请内存,其中 flAllocationType 取值 MEM_COMMIT 表示写入物理存储而非磁盘交换内存

FARPROC GetProcAddress(HMODULE hModule, LPCSTR);
检索指定的动态链接库 (DLL) 中的输出库函数地址

HANDLE CreateRemoteThread(HANDLE, LPSECURITY_ATTRIBUTES, SIZE_T, LPTHREAD_START_ROUTINE, LPVOID, DWORD, LPDWORD);
创建一个在其它进程地址空间中运行的线程

编写测试效果

2-DkfGbuE1q1dssPpS

打开游戏

2-YruTK2kRNch13YiL

运行外挂
打开注入器 Injecter,注入器注入 DLL 后自动退出,仅剩下游戏,此时游戏已具备作弊效果 (锁定血量)

2-FyS8ZiRQAkAdRMBw

检测有效

 

 

 


总体评价

DLL 注入可使作弊模块在程序自身 “名义” 下进行作弊,提高作弊成功率,然而载入的 DLL 容易被 DLL 检测发现