定下契约(新注册) 登录
怀念是一行潦草的诗 返回首页

不吉波普的个人空间 http://miuk.cn/?22073 [收藏] [复制] [分享] [RSS]

日志

CLEO关于内存的研究

已有 653 次阅读2021-7-16 21:26 | Cleo

2021年7月16日
今日份更新
感谢梦烟天地大佬的解答和帮助,以及DK22Pac的SDK库
BulletTraces的库中,我们可以看到以下文字:
"unsigned int MAX_NUM_BULLETTRACES = 16"
开头就声明了游戏子弹痕迹能够保存在内存里的总数量, 也就是游戏同时存在的子弹痕迹只能是16个,对应我们上文中提到的NUM:0x10(16)。
子弹痕迹的起始地址是0x00C7C748
名称是*CBulletTraces::aTraces
游戏内存可存储最大16个子弹痕迹

即:
*CBulletTraces::aTraces[0]-*CBulletTraces::aTraces[15]
指针数组  ID 0-15共16个元素
https://github.com/DK22Pac/plugi ... e_sa/CBulletTrace.h
根据头文件可知
VALIDATE_SIZE(CBulletTrace, 0x2C);
单个元素的结构体总大小为0x2C(0x00-0x2B)
所以,*CBulletTraces::aTraces[0]第一个子弹痕迹存储的地址是起始地址0xC7C748
则第二个*CBulletTraces::aTraces[1]的地址是0xC7C748+1乘以0x2C
1就是ID 也就是第二个
以此类推


如果是最后1个,即第16个
*CBulletTraces::aTraces[15]
地址为
0xC7C748+15×0x2C
指针数组共有16个元素
每个元素的结构体大小是0x2C
该指针起始地址为0xC7C748


在我们上文所提及的偏移值,此处更正为结构体名称,每个元素结构体大小为0x2C 【0x00-0x2B】,它包含了子弹痕迹的起始坐标xyz和终点坐标 半径 实体指针之类的数据,游戏同时可以创建16个子弹痕迹,就是16个元素,每个元素都有1个0x2C大小的结构体。
好!摸了

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 定下契约(新注册)

    切换繁體
    Archiver|手机版|小黑屋|

GMT+8, 2024-4-26 22:26 , Processed in 0.030526 second(s), 12 queries .

沪ICP备2021020632号-1

返回顶部