植物大战僵尸辅助编写2 - 绘制方框


2D游戏辅助 - 植物大战僵尸

2.绘制僵尸方框

  1. 获取僵尸位置

  2. 获取僵尸数量

  3. HOOK存放僵尸位置的地址

  4. 绘制僵尸方框

我们要做的工作就是这些

获取僵尸位置

僵尸出现 , 我们搜索未知的浮点数

image

僵尸移动 , 搜索变动的数值

image

僵尸没移动 , 搜索未变动的数值 , 发现搜索完了之后 , 还是有好多数值 , 我们换条思路缩小范围

image

设置CE搜索的起始地址 为阳光的的地址 因为运气好, 所以我没有将地址改在 11FF3AC8之前 , 应该要分段搜索(阳光值和僵尸坐标值地址在同一个段) 其实僵尸的int类型也有一个x坐标 , 和这个float类型的一样 , 但是int类型的坐标是读取float类型的地址 . 修改它,无效

image

X坐标有了 , Y坐标呢? 对僵尸X坐标栏, Ctrl+B打开内存窗口 , 设置显示类型 , 可以看到僵尸X坐标地址+4 , 有个250 , 修改一下他

image

修改成功 , 但是僵尸会被拉回原Y坐标 , 我想僵尸还存有一个 对应列表的数值

image

将数据类型改成4字节10进制显示 , 发现120(X) 1(Y) , 2 , 修改一下他,改成5

image

僵尸就跑到了草坪外面了 , 哈哈 , 看来X,Y坐标附近 , 就是僵尸的结构体 , 大家自行研究 float类型 , 不同版本的CE可能识别的不一样 , 我的是CE 7.0 , 如果单浮点数勾选了简单值,那么将更快找到....

image

我们使用截图工具看一下僵尸对于,植物大战僵尸窗口的坐标(这一步无法截图)发现僵尸的坐标大概是 Window_x + 20+ 僵尸x 就是DrawWindow_x , Window_y+标题栏的y 就是僵尸y

获取僵尸的数量

获取僵尸数量 , 分析结构可能更方便 , 这里不写(我也不会),思路是跟踪回调

出现一只僵尸 , 就搜索int 1 ,两只就2,如此往复....

HOOK存放僵尸位置的地址

CE对僵尸坐标栏 , F5 , 查询谁访问了他

0052D9E1 - D9 41 2C - fld dword ptr [ecx+2C] , 转到0052D9E1地址

image

找出这条指令访问了谁

image

出现第二只僵尸 , 出现了新的地址 , 这个地址就是第二只僵尸X坐标 , 我们要做的就是HOOK 0052D9E1这个地址 , 读取地址ecx+0x2c存放的值 , 开始写代码

image

读取僵尸坐标 , EasyHOOK是我瞎写的一个跨进程HOOK库 , 没有进程通信的功能,故读取僵尸的地址变动快的话, 我的坐标跟不上 , 关于HOOK , 确保程序正确执行就行

image

读取僵尸的坐标

image

绘制僵尸方框

绘制库我用的是EasyX , 创建窗口及相关设置的代码 ,EasyX下载地址 easyx.cn,很方便,同时也很简陋.... 对于我来说够用了

image

绘制僵尸方框代码

image

效果图: 因为画布没有清除 , 所以出现一堆我是僵尸 , 但是网上说的 易语言Imgui, 闪烁 , 绘制不上的问题没有出现

image

不爽的话 , 在绘制僵尸的代码后 ,添加清除函数

image

效果图: 这样的代码仍需优化(如僵尸死后,依旧绘制 , 大家可以判断X是否变化 , 也可以换个地址进行HOOK(谁改写了他)我们的代码是谁访问了他) 同时 , EasyX创建的窗口,画布大小也需改变.......

image

源码链接

提取码:0000


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM