前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JAVA开发外挂最终弹-JAVA植物大战僵尸阳光修改器

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

作者头像
博博1998
发布2022-04-25 15:39:57
1.2K4
发布2022-04-25 15:39:57
举报
文章被收录于专栏:博博blog博博blog

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

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

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

获取进程令牌

代码语言:javascript
复制
GiveProcessPrivilege give = new GiveProcessPrivilege();
give.give(Kernel32_DLL.INSTANCE.GetCurrentProcess(),                 
LookupPrivilegeValue.SeDebugPrivilege);

创建GUI界面

获取游戏窗口信息

代码语言:javascript
复制
String windowName = "Plants vs. Zombies GOTY ";
HWND hwnd = User32.INSTANCE.FindWindow(null,windowName);

获取游戏PID

代码语言:javascript
复制
IntByReference dwPID = new IntByReference();  //dwPID 进程标识
int pid = User32.INSTANCE.GetWindowThreadProcessId(hwnd,dwPID);

通过OpenProcess打开游戏进程

代码语言:javascript
复制
Kernel32.INSTANCE.OpenProcess(OpenProcess.PROCESS_ALL_ACCESS, false, dwPID.getValue());

读取游戏内存信息

代码语言:javascript
复制
Kernel32_DLL.INSTANCE.VirtualQueryEx(hProcess, istartAddress, memoryInfo, size);

读取或者修改内存信息

代码语言:javascript
复制
//读取内存信息
Kernel32.INSTANCE.ReadProcessMemory(handle, firstAddress, firstBuffer, 4, intByReference) 
//修改内存信息
Kernel32.INSTANCE.WriteProcessMemory(handle, sunAddress, update, 4, intByReference)

释放资源

代码语言:javascript
复制
//释放内存
ReferenceFree.free(buffer);
//释放资源
Kernel32.INSTANCE.CloseHandle(handle);

演示:

1.gif
1.gif
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档