【发布时间】:2011-11-04 06:54:46
【问题描述】:
我是在这些论坛上发帖的新手,但为了我的编程帮助需求,我已经多次来到这里,并且通常能够相当容易地找到我的答案,但我担心我可能问错了问题,或者可能是非常明显,我只是没看到,但这是我的问题。
我正在为 Quake 制作我的第一个教练,我想我会从一个容易找到指针的游戏开始,而不是我的其他游戏通常有 2 个以上的指针。所以我通过 Quake 和 Cheat Engine 获取所有我需要的指针,制作我的 gui 等,但是有一个问题。我读了我的第一个指针,它返回了我需要的地址:/
例子:
这是我正在读取的指针 - 006C5214
当阅读它给我这个地址 - 02BFD940
然后我将偏移量 48C 添加到上面的地址中,该地址将我定向到包含我需要的值的 02BFDDCC。
当我使用 ReadProcessMemory 读取指针时,我得到了正确的地址,但它是向后的(字节序?)
我需要 02BFD940 我得到 40D9BF02
我已经尝试了所有我能想到的方法来翻转订单并将其放回 IntPtr 以在我的 ReadProcessMemory/WriteProcessMemory 中使用。我可以按照我想要的顺序翻转它,因为我的 ReadProcessMemory 给出了我的地址,例如 40-D9-BF-02,它很容易用 Split('-'); 切割成一个数组;
唯一的问题是,在我按照我想要的方式完成拆分和重新排序后,我无法将它转换回 IntPtr 以用于我的读写内存功能。
我一直使用作弊引擎或反汇编程序来完成我的记忆编辑工作。这是我第一次尝试在一个完全工作的培训师那里得到任何帮助,我将不胜感激。我尝试在我的 BitConverter 上设置字节序布尔值,但它是只读的:/
如果我完全错过了什么并且它就在我面前,请随时叫我出来并给我一个耳光xD我不介意。
-附言你们的论坛很棒。
【问题讨论】:
-
正如您所怀疑的那样,您似乎以相反的字节序获取数据。一个简单的
Array.Reverse(byte[4]) 应该可以解决问题。 -
哦,这对将来可能会有所帮助,谢谢。