易语言吧

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1783|回复: 3

[易语言源码] 觅风易语言第二十八课(结构和动态内存)课件源码笔记

[复制链接]

297

主题

537

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
14138

幽默大师终生成就

威望
0
易币
13516
贡献
0
积分
14138
UID
580
在线时间
450 小时
注册时间
2019-12-5
发表于 2020-7-12 18:39:20 | 显示全部楼层 |阅读模式
第二十八课(结构和动态内存)
概述:本节课主要讲了,结构体和动态内存的知识,先通过演示程序的代码讲解了自定义数据类型、动态内存、汇编中[]的概念、然后根据我们阅读反汇编,讲解了什么是偏移、怎样使用基址+偏移得到动态内存地址、用CE怎么把一个动态地址给固定,最后同过CE把ID、HP、MP、横坐标、纵坐标、经验值的动态地址都给固定了,在固定“坐标结构体”的时候,横坐标和纵坐标通过反编译可以看到两次赋值,所以在固定动态地址的时候需要添加两次指针偏移。
用到的工具:易语言编程工具、第二十五课\ Cheat Engine 7.0单文件版.exe
自定义数据类型:“程序”窗口右键“自定义数据类型”,选择“插入新数据类型“,就是给变量的成员来定义数据类型。比如视频教程中的变量是”人物“,人物的成员有HP、MP等,而“插入新数据类型”插入的“人物结构”就是给HPMP来定义数据类型的。
静态地址:重新打开或者在别人的电脑上面打开时,地址是一样的,在CE上面是绿色。
动态地址:重新打开或者在别人的电脑上面打开时,地址是不一样的,在CE上面是黑色。
汇编中[]的概念:EAX到EDX它是寄存器,push是压栈,[ebx][]”就代表是一个指针(内存地址)ebx没有“[]”就代表是一个数值,例如ebx是00400000一个数值,[ebx]就是在00400000里面的一个内存地址中的数据。
CE把动态地址固定:首先用CE找到数据变化对应的动态地址,在CE的最下面选中想要修改的地址,然后“右键”选择“查找访问该地址的代码(找出是什么访问了这个地址)”,“这将附加CE调试器到当前进程上.继续?(将会使用Cheat Engine的调试器附加当前进程.继续吗?)”选择“Yes()”,就会弹出一个空白的小窗口,标题是“从选定地址读取下列代码(下列操作访问了


00780ACC)”。双击可以查看详细信息,然而双击后出现的信息并不是很详细,更详细的信息可以进行下面的操作,选择“从选定地址读取下列代码(下列操作访问了00780ACC)”窗口右边的“显示反汇编程序”,然后把滚动条往上拉,通过反汇编分析ebx的来源,如下: 截图202007121836174188..png



CE中选择“手动添加地址”,选中“指针”后面打上“”指针地址“输入00488150,”偏移量输入4,最后点击”确定“,这时候就通过指针地址和偏移量把一个动态地址给固定了。

CE列表中右键“固定后的动态地址”,选择“浏览此内存区域(浏览相关内存区域)”,先选中4字节数据的最前面一个数值,然后右键选择“添加此地址到列表”,弹窗直接点确定,就可以通过刚刚添加到CE列表中的数据与程序上面的数值进行对比,就能确认这个数据是否在程序上,或者确认这个数据是程序上面的哪个数值。


截图202007121836435638..png



计算“坐标结构体“的偏移:先看懂上图的解说,然后分析图中的“坐标结构体”,从图中可以看出它的十六进制是0014E140(把图中的数值反过来看),或者按照视频教程中的方法来操作也可以(先选中“坐标结构体“4字节数据的最前面一个数值,然后右键选择“添加此地址到列表”,弹窗直接点确定,然后右键刚刚添加到CE列表中的数据,选择“显示十六进制数值“)。在CE中点击“手动添加地址”,弹出的对话框中地址填写“0014E140”点击确定,然后查看CE列表中的数据与程序的哪个数据是对应的。然后右键CE列表中刚刚添加的“0014E140”这个地址,选择“浏览此内存区域”,然后把最下面显示出来的十六进制数值换算成十进制看看与程序上的哪个数据是对应的。如果显示出来的十六进制数值与程序上有对应的,就右键选择“添加此地址到列表”,弹窗直接点确定。需要注意的是,上面所说的”指针地址“加偏移量是把一个动态地址给固定了,而刚才说的这个“0014E140”只是一个动态内存地址,需要把这个“0014E140”动态内存地址给固定的话,就需要先分析ebx的来源,然后看赋值找偏移,ebx被赋值一次的话,就添加一次指针偏移,ebx被赋值两次的话,就添加两次指针偏移。


[size=14.6667px]觅风易语言第二十八课(结构和动态内存)课件源码笔记下载:
[size=14.6667px]


0

主题

2368

帖子

9586

积分

VIP超级贵宾

Rank: 8Rank: 8

积分
9586
威望
198
易币
6819
贡献
0
积分
9586
UID
11903
在线时间
36 小时
注册时间
2021-1-23
发表于 2021-5-29 03:27:52 | 显示全部楼层
楼主发贴辛苦了,谢谢楼主分享!我觉得易语言吧是注册对了!
回复

使用道具 举报

0

主题

2

帖子

20

积分

初识易语言

Rank: 1

积分
20
威望
0
易币
18
贡献
0
积分
20
UID
19155
在线时间
1 小时
注册时间
2021-10-8
发表于 2021-10-8 18:22:12 | 显示全部楼层
楼主发贴辛苦了,谢谢楼主分享!我觉得易语言吧是注册对了!
回复

使用道具 举报

0

主题

2

帖子

20

积分

初识易语言

Rank: 1

积分
20
威望
0
易币
18
贡献
0
积分
20
UID
40272
在线时间
3 小时
注册时间
2023-12-9
发表于 2023-12-17 22:39:37 | 显示全部楼层
本帖最后由 huisu12345 于 2023-12-17 22:49 编辑

这一课在找针的时候 针指向的地址是动态的 会变啊  是我找的不对吗 截图贴下面了 也没有加4的偏移 就写着偏移 谁能给解释下哪里不对 图片在下面 我是哪里操作的不对吗 因为视频CE版本不一样 我也不懂  是个新手谁能给解释解释
截图202312172238262137..png
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【选择右侧内容,快速回复】
  高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

大漠插件注册码无须等1-3号

QQ|一:站内所有资源均来自互联网收集或用户上传分享,本站不拥有此类资源的版权。 作为网络服务提供者,对转载行为的发生不具备充分的监控能力。但是当版权拥有者提出侵权并出示充分的版权证明材料时,易语言吧负有移除转载作品以及停止继续传播的义务。在满足前款条件下采取移除等相应措施后不为此向原发布人承担违约责任,包括不承担因侵权不成立而给原发布人带来损害的赔偿责任。 用户免费分享产生,如果侵犯了你的权益,联系QQ:3066137757|Archiver|手机版|小黑屋|易语言吧

GMT+8, 2024-4-26 13:02 , Processed in 0.211576 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表