博博blog 博博blog

JAVA开发外挂最终弹-JAVA植物大战僵尸阳光修改器

in 技术分享 read (576) 文章转载请注明来源!

前两篇文章分别讲了JNI和CE查找游戏基址,
这一篇就到了真正的主题。

注意:
开发这个项目,需要将项目的jdk修改为1.6版本,高于1.6会有问题。
右键你的项目→Build Path→Configure Build Path→Libraried→选中JRE→点击右边的Edit按钮→选择1.6的JDK版本,
当然你电脑上必须有1.6版本的JDK。

那么用java编写游戏修改器,需要以下几步:

  1. 获取进程令牌

    GiveProcessPrivilege give = new GiveProcessPrivilege();
    give.give(Kernel32_DLL.INSTANCE.GetCurrentProcess(),                 
    LookupPrivilegeValue.SeDebugPrivilege);
  1. 创建GUI界面

  2. 获取游戏窗口信息

    String windowName = "Plants vs. Zombies GOTY ";
    HWND hwnd = User32.INSTANCE.FindWindow(null,windowName);
  3. 获取游戏PID

    IntByReference dwPID = new IntByReference();  //dwPID 进程标识
    int pid = User32.INSTANCE.GetWindowThreadProcessId(hwnd,dwPID);
  4. 通过OpenProcess打开游戏进程

    Kernel32.INSTANCE.OpenProcess(OpenProcess.PROCESS_ALL_ACCESS, false, dwPID.getValue());
  5. 读取游戏内存信息

    Kernel32_DLL.INSTANCE.VirtualQueryEx(hProcess, istartAddress, memoryInfo, size);
  6. 读取或者修改内存信息

    //读取内存信息
    Kernel32.INSTANCE.ReadProcessMemory(handle, firstAddress, firstBuffer, 4, intByReference) 
    //修改内存信息
    Kernel32.INSTANCE.WriteProcessMemory(handle, sunAddress, update, 4, intByReference)
  7. 释放资源

    //释放内存
    ReferenceFree.free(buffer);
    //释放资源
    Kernel32.INSTANCE.CloseHandle(handle);

演示:
1.gif

javajni修改器外挂植物大战僵尸
PREVIOUS NEXT
雷姆
拉姆
音乐加载中...
0:00