我已经看到了以下主题:How to find a point with offset eax+ebx*4
eax will be the pointer value to look for
ebx*4 will be the offset (ebx is the offset in an array with elements of 4 bytes long)
so:
ebx=0 : offset=0
ebx=1 : offset=4
ebx=2 : offset=8
ebx=3 : offset=c
ebx=4 : offset=10
但是我还是不明白如何确定ebx?
这是我的情况:我正在尝试获取“红色派系:游击队”的当前弹药指针
我看到加载另一个保存文件时此弹药的地址已更改。因此,我对弹药指针使用“查找写入该地址的内容”(在加载另一个保存文件后不再起作用)
然后我加载另一个保存文件,以查看它写入指针的内容: 结果是指针的偏移量为[ecx + eax * 4]
所以我做了这样的指针
ecx = 00C1B988(地址00C1B988保留值:ECX = 00C1B994)
EAX * 4 =我不知道该如何使用,所以我只说:E71 * 4
但是当我加载另一个保存文件时它仍然不起作用。我卡在E71 * 4上,应该怎么代替E71?我什至尝试搜索值E71(或3697),但似乎无济于事。
答案 0 :(得分:1)
通常,当您看到ecx + eax * 4时,它正在索引到数组中。 ECX指向数组,EAX是元素#,而4是元素的大小。通常,当您看到4或8时,是因为它是一个指针数组,并且是x86上指针的大小。
您看到的不是某种加密/模糊处理/抗热。这就是面向对象的编程/ C ++如何被编译成汇编的方式。
您创建的指针链对您不起作用,解决方案是获取武器/玩家对象的地址,以便您可以偏移到其中以获得弹药的地址。为此,您需要:
如果这有点令人困惑,则可以通过钩住指令并获取其值来轻松获得EAX的值。