0

我看过这个话题: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?

这是我的情况:我正在尝试获取 Red Faction: Guerrilla (gfwl version) 的当前弹药指针

我看到当我加载另一个保存文件时,这个弹药的地址发生了变化。所以我使用“找出写入这个地址的内容”作为弹药指针(加载另一个保存文件后不再工作) 找出写入此地址的内容

然后我加载另一个保存文件以查看它写入指针的内容:结果是带有偏移量的指针 [ecx+eax*4]

[ecx+eax*4]

所以我做了一个这样的指针

ecx=00C1B988(地址00C1B988保存值:ECX=00C1B994)

EAX*4= 我不知道如何使用它,所以我只是输入:E71*4

E71*4

但是当我加载另一个保存文件时它仍然不起作用。我卡在 E71*4,我应该为 E71 更换什么?我什至尝试搜索值 E71(或 3697),但似乎我无处可去。

4

1 回答 1

2

通常,当您看到 ecx+eax*4 时,它正在索引一个数组。ECX 指向数组,EAX 是元素#,4 是元素的大小。通常当您看到 4 或 8 时,这是因为它是一个指针数组,这就是 x86 上指针的大小。

您所看到的不是一些加密/混淆/反欺骗。这就是面向对象编程/C++ 编译成程序集的方式。

您正在创建的指针链对您不起作用,解决方案将是获取武器/玩家对象的地址,以便您可以偏移到它以获取弹药的地址。为此,您需要:

  • 手动查找另一个指针
  • 使用指针扫描仪找到另一个指针
  • 模式扫描+挂钩并将地址拉出寄存器

如果这可能是一些混淆,您可以通过挂钩指令并获取它的值来轻松获得 EAX 的值。

于 2018-08-30T17:53:39.740 回答