创建DLL项目
![「攻防对抗」植物大战僵尸DLL注入修改插图 「攻防对抗」植物大战僵尸DLL注入修改插图](https://static.esw.eswlnk.com/2022/08/20220820073608470.png)
通过上一篇文章的基地址和偏移量,我们直接编写
DLL代码编写
// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "pch.h"
#include <stdio.h>
#include <windows.h>
DWORD WINAPI ThreadProc(void* param)
{
while (true)
{
if (*(DWORD*)((DWORD)GetModuleHandle(0) + 0x2A9EC0) != 0) {
DWORD A = *(DWORD*)(*(DWORD*)((DWORD)GetModuleHandle(0) + 0x2A9EC0) + 0x768);
if (A != 0) {
*(DWORD*)(A + 0x5560) = 10000; // 阳光修改
DWORD C = *(DWORD*)(A + 0x144);
if (C != 0) {
// CD冷却
*(BYTE*)(C + 0x70) = 1;
*(BYTE*)(C + 0x70 + 0x50) = 1;
*(BYTE*)(C + 0x70 + 0x50 * 2) = 1;
*(BYTE*)(C + 0x70 + 0x50 * 3) = 1;
*(BYTE*)(C + 0x70 + 0x50 * 4) = 1;
*(BYTE*)(C + 0x70 + 0x50 * 5) = 1;
}
}
}
Sleep(20);
}
return 0;
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
if (ul_reason_for_call == DLL_PROCESS_ATTACH) {
DisableThreadLibraryCalls(hModule);
DWORD dwThreadID;
CreateThread(0, 0, ThreadProc, NULL, 0, &dwThreadID);
/* WCHAR wszhModule[MAX_PATH] = { 0 };
swprintf_s(wszhModule, L"dll地址为 0x%x DLL里调用获取到的地址为:0x%x 内容为: %d", \
hModule, GetModuleHandle(0), *(BYTE*)(*(DWORD*)(*(DWORD*)(*(DWORD*)((DWORD)GetModuleHandle(0) + 0x2A9EC0) + 0x768) + 0x144) + 0x70));
MessageBoxW(0, wszhModule, L"提示", 0);*/
MessageBox(NULL, L"DLL is patched to process!", L"Success", MB_OK);
}
return TRUE;
}
里面大量使用了指针操作,如果不懂可以先去看看相关内容
DLL注入
这里我直接使用Xenos来注入DLL
![「攻防对抗」植物大战僵尸DLL注入修改插图1 「攻防对抗」植物大战僵尸DLL注入修改插图1](https://static.esw.eswlnk.com/2022/08/20220820073607901.png)
注入完成后就可以直接Enjoy了
![「攻防对抗」植物大战僵尸DLL注入修改插图2 「攻防对抗」植物大战僵尸DLL注入修改插图2](https://static.esw.eswlnk.com/2022/08/20220820073615451.png)
ESWINK , 版权所有丨如未注明 , 均为原创
![Eswink原创声明 Eswink原创声明](https://static.esw.eswlnk.com/2022/08/20220811043724800.png?imageView2/0/format/webp/interlace/1/q/75%7Cwatermark/1/image/aHR0cHM6Ly9jZG4uZXN3Lmluay8yMDIxLzAxLzIwMjEwNTAzMTcwNTQ3MjMucG5nLWxpc3Q=/dissolve/8/gravity/Center/dx/0/dy/0%7Cimageslim)
📮评论