E语言--游戏逆向

学习网站

https://www.52pojie.cn/forum.php?mod=forumdisplay&fid=4&filter=typeid&typeid=124

Cheat Engine下载与安装

官网下载

https://www.cheatengine.org/downloads.php

中文包下载

相同的网站,下拉找到下图中的文件

安装CE

选择语言为English

下一步,下一步安装完成,无法选择安装目录

安装语言包

打开CE所在文件夹

双击打开languages

将汉化包拖进languages文件夹中

重启CE,Edit-->settings-->Languages,双击ch_cn

再次重启CE

X64dbg 工具下载与安装

官网下载

https://sourceforge.net/projects/x64dbg/files/snapshots/

官网插件下载

https://x64dbg.com/

找到如下插件,点击download

点击下图中的压缩包下载

解压后,打开release文件夹

点击exe执行文件即可

桌面会出现两个图标

配置

配置字体

选项-->外观

X32插件配置

打开刚刚官网中下载的插件

拖到x32文件夹中

X64插件配置

配置完成,需重启程序

配置完后,重启x32,x64程序

使用

文件-->附加

文件-->脱离,即可关闭

PETools工具下载

下载地址

https://github.com/petoolse/petools/releases

安装

解压即可使用

PETool和上面二选一

已经在我的百度网盘中存储了

https://pan.baidu.com/disk/main#/index?category=all&path=%2F%E6%B8%B8%E6%88%8F%E9%80%86%E5%90%91%E5%B7%A5%E5%85%B7%2FPETool

ResHacker工具下载

用以提取exe文件的一些PE资源的工具

下载地址

http://www.angusj.com/resourcehacker/#download

安装

下载的exe,直接安装即可

LordPE工具下载

易用API伴侣

PE结构

每一个可执行文件都是遵循PE结构编译的

进程注入与远程读写

如何访问其他进程

方式一:远程读写

外挂软件通过与windows的操作系统内核交互,来读到目标程序的进程ID,然后再由内核反馈给外挂软件

方式二:进程注入

将外挂软件放进游戏的进程中,共享进程资源

内存的架构与属性

操作系统分配4G虚拟内存

全局变量是会保存在内存的全局/静态区中的,并不会随着程序的关闭销毁,可执行文件编译完成时,需要遵循PE结构,在PE结构中已经声明了程序中所有用到的全局变量保存在哪些内存地址,重新编译exe文件才会改变原全局变量的内存地址,全局变量就是基址

栈区:系统根据代码来申请内存用来保存局部变量和函数的参数的,由操作系统来维护,操作系统自动销毁

堆区:主动申请一段内存地址,自己维护,自己主动释放内存空间

PE结构根据程序代码来规定入口函数,通过修改入口函数的内存地址,来先执行外挂程序,再执行对方的程序

数据区:标明此数据的属性,如只读,只写等,可以将代码写在数据区,并修改为可执行属性,这样就可以做到伪装,有些反外挂系统只会检查代码区的代码

CE分析示例

CE分析

使用CE来扫描,游戏中保存蓝量的内存地址

1.使用CE附加游戏进程

2.开始扫描内存中存储蓝量56的内存地址

3.可以看到一共有2w多个搜索结果

4.操作人物,改变蓝量,然后点击再次扫描,缩小范围

5.确认是否找对了地址

E语言编写代码

1.首先导入超级模块(操作内存的模块),百度去搜索下载后再导入

下载地址

1. https://pan.baidu.com/s/1LGxT21qSAIHk0IAL903YIw%20  # 解压密码:www.yiyuyan.net
2. https://bbs.125.la/forum.php?mod=viewthread&tid=14272430
3.自己网盘中的游戏逆向文件夹中

代码

.程序集 窗口程序集_启动窗口
.程序集变量 进程ID, 整数型

.子程序 __启动窗口_创建完毕

进程ID = 进程取ID (“Gbrowser.exe”, 真)

.如果真 (打开进程 (进程ID) ≠ 0)
    信息框 (“打开进程失败”, 0, “提示”, )
.如果真结束


.子程序 _按钮1_被单击

启动线程 (&读蓝量, , )
启动线程 (&写蓝量, , )

.子程序 读蓝量
.局部变量 mp, 小数型


.判断循环首 (真)
    mp = 读内存小数型 (进程ID, 十六到十 (“0ABDD4”))
    延时 (200)
    透明标签1.标题 = 到文本 (mp)
.判断循环尾 ()



.子程序 写蓝量
.局部变量 mp, 小数型


.判断循环首 (真)
    mp = 写内存小数型 (进程ID, 十六到十 (“0ABDD4”), 56)
    延时 (200)
    透明标签1.标题 = 到文本 (mp)
.判断循环尾 ()

动态编译库(dll)编写

编写

新建-->windows动态链接库

编写ddl动态链接库

编译-->静态编译

新建窗口程序,插入dll命令

保证返回值类型,参数类型跟dll一致

调用

问题

用完这个dll后,并未被销毁,还是保存在内存中的,很占内存

调用API,动态加载与卸载

动态加载dll与卸载

调用微软操作系统的API,下面写了一个dll命令,用来动态加载dll

根据错误类型,查找错误加载的原因

image-20230822005535574
调用

调用ADD函数

卸载dll库

调用卸载API

用到的API命令详图

posted @ 2023-08-22 01:10  河图s  阅读(494)  评论(0)    收藏  举报