|
18楼
发表于 2024-1-7 04:34:26
|
只看该作者
四川省乐山市
[ENABLE] - 标记开始启用某些代码。
aobscanmodule(movementSpeed,theHunterCotW_F.exe,41 0F 58 C0 0F 59 EE) // should be unique - 扫描名为theHunterCotW_F.exe的模块,寻找特定的字节序列41 0F 58 C0 0F 59 EE。这个序列可能是某个函数的特征,用于定位和修改它。
alloc(newmem,$1000,movementSpeed) - 在内存中分配一块大小为1000字节的区域,并标记为movementSpeed,以便稍后引用。
label(code) - 定义一个名为code的标签。
label(return) - 定义一个名为return的标签。
label(valor) - 定义一个名为valor的标签。
newmem: - 跳转到之前分配的内存位置。
cmp rsi,[playerPositionAddress] - 比较寄存器rsi的值和playerPositionAddress指向的内存地址的值。
jne code - 如果比较结果不相等,跳转到code标签。
movups xmm1,[valor] - 将valor标签处的值(三个浮点数4.0)复制到xmm1寄存器。
mulps xmm8,xmm1 - 将xmm1的值乘以xmm8寄存器的值。
code: - 跳转到此标签。
addps xmm0,xmm8 - 将xmm8的值加到xmm0寄存器。
mulps xmm5,xmm6 - 将xmm5的值乘以xmm6寄存器的值。
jmp return - 无条件跳转到return标签。
valor: - 跳转到此标签,并将三个浮点数4.0存储在内存中。
movementSpeed: - 跳转到此标签,这实际上是一个死循环,因为它总是跳转到自己。
nop 2 - 执行两个无操作指令,可能是为了对齐或填充。
return: - 跳转到此标签。
registersymbol(movementSpeed) - 将movementSpeed标记注册为符号,以便稍后引用。
[DISABLE] - 标记开始禁用某些代码。
movementSpeed: - 定义一个名为movementSpeed的字节序列,它与之前的死循环地址相对应。
db 41 0F 58 C0 0F 59 EE - 定义一个字节序列,与之前用于扫描的字节序列相同。
unregistersymbol(movementSpeed) - 取消注册之前注册的符号。
dealloc(newmem) - 释放之前分配的内存。
补充内容 (2024-1-7 04:34):
这个解释够详细了 |
|