user008 发表于 2024-5-22 05:56

植物大战僵尸在PE文件中的偏移

本帖最后由 user008 于 2024-5-22 06:00 编辑

本人想在植物大战僵尸中实现开局选12个植物(上限是10个) 看样子应该是个数组 该数组的最大成员数应该是10 于是就在od中寻找基址+偏移:dd [[+768]+144]+24
在od中dd出来该地址 发现是0xAh没有错 当我在od中动态修改数据的时候发生了崩溃闪退
于是就想是不是数组不能动态更改数组大小 所以发生了崩溃 所以就想在PE文件中找到定义该数组的地方修改最大成员数实现需求(以我的理解该数据应该在.data节区) 求大佬告诉我怎么通过以上偏移找到PE文件中定义该数组的文件偏移

a952135763 发表于 2024-5-22 10:26

只改一个大小不行吧可能程序初始化的时候申请了数组大小你找的偏移就是个数组大小 修改它会导致它读取原本的数组的时候发生错误你试试改小会发生错误不
你可以开启调试,直接改你这个偏移 就会自动定位到报错那里的汇编了

benbenbendan 发表于 2024-5-22 11:08

这个应该没壳吧?直接汇编查看,修改然后重新编译没啥问题吧?不太懂这个,这个游戏使用java写的嘛?还是C

user008 发表于 2024-5-22 11:46

本帖最后由 user008 于 2024-5-22 12:14 编辑

a952135763 发表于 2024-5-22 10:26
只改一个大小不行吧可能程序初始化的时候申请了数组大小你找的偏移就是个数组大小 修改它会导致它读取 ...
改小不会崩溃 而且是正常选植物 改6就只能选6个改为11就崩溃了

海水很咸 发表于 2024-5-22 12:30

可能 编译器只给了 char arry;你在后面改 就越界了,把其他的数据改了,肯定会奔溃,

user008 发表于 2024-5-22 12:55

海水很咸 发表于 2024-5-22 12:30
可能 编译器只给了 char arry;你在后面改 就越界了,把其他的数据改了,肯定会奔溃,

对的 我更改这个偏移地址为6是可以正常运行的 代码逻辑也没有崩只能选择6个 但是改为11就直接崩溃了 是不是可以在PE文件中改掉这个数组的大小 大佬能否提供一点思路

海水很咸 发表于 2024-5-23 14:51

user008 发表于 2024-5-22 12:55
对的 我更改这个偏移地址为6是可以正常运行的 代码逻辑也没有崩只能选择6个 但是改为11就直接崩溃了 是不 ...

PE文件 往大改不了,只能 在游戏运行后打补丁,将相关的访问指针 访问 改到访问自己的数据地址。其实客户端就放了10个格子,你加多了种类,也看不到,除非你把UI也重新做了 扩展出超过10个格子。

又红又专 发表于 2024-6-4 10:20

benbenbendan 发表于 2024-5-22 11:08
这个应该没壳吧?直接汇编查看,修改然后重新编译没啥问题吧?不太懂这个,这个游戏使用java写的嘛?还是C
作者都没回你{:1_926:} 我估计你自己都不知道你在说啥
页: [1]
查看完整版本: 植物大战僵尸在PE文件中的偏移