创建DLL项目

「攻防对抗」植物大战僵尸DLL注入修改插图

通过上一篇文章的基地址和偏移量,我们直接编写

植物大战僵尸CE修改并且找基址

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

注入完成后就可以直接Enjoy了

「攻防对抗」植物大战僵尸DLL注入修改插图2

ESWINK , 版权所有丨如未注明 , 均为原创

原文标题:「攻防对抗」植物大战僵尸DLL注入修改

Eswink原创声明