问题标签 [memory-editing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
memory-management - 应用程序如何拥有静态内存地址?
我正在使用称为作弊引擎的内存编辑应用程序。我将作弊引擎附加到游戏中。在我的游戏中,我有一个称为 HP 的 32 位整数。HP 存储在内存地址 A。如果我重新启动游戏,HP 将存储在新的内存地址 B。似乎使用 Cheat Engine,我可以进行指针扫描并找到一个静态内存地址 C,它始终存储该会话期间 HP 的内存地址。因此,如果我取消对 C 的引用,我总是会得到存储 HP 的内存地址。如何始终保证 C 始终是相同的内存地址?如果另一个应用程序启动并占用该内存区域怎么办?
windows - 指针偏移量有什么好处?
我正在使用称为作弊引擎的内存编辑应用程序。我将作弊引擎附加到游戏中。在我的游戏中,我有一个称为 HP 的 32 位整数。HP 存储在内存地址 A。如果我重新启动游戏,HP 将存储在新的内存地址 B。似乎使用 Cheat Engine,我可以进行指针扫描并找到一个静态内存地址 C,它指向另一个内存地址及其附带的偏移量 D 和偏移量,因此 [D + offset] 在该会话期间始终存储 HP 的内存地址。因此,如果我取消引用 [D + offset],我总是会得到存储 HP 的内存地址。
这是一个图表:
A 或 B --> 生命值
D + 偏移 --> A 或 B
C --> D
使用偏移量有什么好处?为什么 C 不能直接指向 A 或 B?我熟悉在 C 语言中处理数组时使用偏移量是有益的。这是否意味着每当我看到指针的偏移量时,指针都指向数组中的第一个元素,而偏移量指的是数组中的一个元素?
c++ - DLL 注入的最佳实践?
假设我想将一个 DLL 注入一个想要每 250 毫秒编辑一次地址 A 的值的进程。我需要使用 DllMain,对吗?问题是我不允许在 DllMain 内等待。所以我必须创建一个线程?还是没有绕过限制?我该怎么做呢?
此外,使用 DLL 注入来编辑应用程序的内存比使用 EXE 有什么好处吗?
另外,CreateThread 中的堆栈大小应该是多少?如果它太小或太大怎么办?我怎么知道我需要多少?
c++ - 取消引用双级指针会导致与取消引用单级指针不同的行为
版本 1:
版本 2:
版本 1 工作正常,但版本 2 似乎没有。我不明白为什么版本 2 坏了。取消引用双级指针与取消引用单级指针不是一回事吗,即它在指针包含的内存地址处获取值?
我将如何编写一个将 n 级指针作为输入的函数,并通过取消对 n 级指针 n-1 次的引用来返回一个 1 级指针?
c - 用偏移量取消引用多级指针的最简洁方法是什么?
我目前正在记忆编辑一款名为 Assault Cube 的游戏。不幸的是,由于动态内存分配,每次游戏开始时,我要编辑的值的地址都会发生变化。幸运的是,有些静态指针总是指向动态地址。使用作弊引擎,我可以找到指针,但它们有时会达到 8 级。而不是********pointer
每次都做,我宁愿做:*pointer
. 最重要的是,它们有偏移量,因此对它们进行硬编码将是一场噩梦。
相反,我正在使用此功能:
但它非常混乱,我将 int* 转换为 int** ,反之亦然,这被认为是不好的做法。有什么我可以做的不会导致不良做法的事情吗?我也在网上找到了这个:
我认为这比我写的更难看。我不建议你阅读它,除非你想偏头痛。
c++ - 如何在 C++ 中编辑操作码或写入内存或编辑字节?
我正在记忆编辑一个名为 Assault Cube 的游戏,可以在以下位置找到:http ://assault.cubers.net/
我不知道如何描述它,所以我制作了一个视频:www.youtube.com/watch ?v=SS1swxQIbDI
请注意,我的弹药在编辑之前就已失效。编辑后,弹药保持不变。基本上,在 0x45B75F,我需要插入两个 NOP。
我在互联网上找到了以下内容:
1.
所以我试着做:
但我得到这个错误:error C2109: subscript requires array or pointer type
2.
我宁愿不使用 memcpy 或任何方法。
3.
同样,我宁愿不使用方法。
4.
以上给了我这些错误:
5.
这会导致崩溃。
c# - MemorySharp 设置偏移到地址不起作用
好的,所以我正在使用该MemorySharp
库来读取/写入游戏的内存。我的问题是当我尝试将偏移量添加到基指针地址时,Visual Studio 在运行时抛出错误。这是基本代码
这是我的GetBaseAddress方法
但是当我运行这个 Visual Studios 时会抛出这个错误
“MemorySharp.dll 中发生‘System.ArgumentOutOfRangeException’类型的未处理异常附加信息:相对地址不能大于主模块大小。”
它指向这行代码healthPtr = m[healthPtr + offset].Read<IntPtr>();
不太确定我在这里做错了什么。
编辑
这是我的更新代码,但仍然无法正常工作
发现编辑答案
我必须将最终指针读取为我想要的类型。所以只有2个指针我读取第一个指针然后在最后一个读取它作为值像这样
java - 可以从内存中读取特定类型吗?
使用 JNA,我已经弄清楚如何读取/写入地址,但我不确定如何弄清楚它是什么类型的数据,例如
我正在使用第三方内存查看器来查找这些值,以便我可以针对我的程序测试结果。
上面的两个地址包含 4 个整数,易于搜索,只需扫描每 4 个字节并将其转换为整数,但如果我有以下地址,则变得更加棘手
只是为了证明我的观点,它们与上述地址完全相同,但它们不是整数,它们是多头
它也可以存储 4 个短 8 个字节或类型的组合。
是否可以检测到值类型是什么并使用 JNA 读取正确的值?
读取内存的代码片段
c - How to edit another applications memory in C (Bypassing Protected mode)?
I want to know how to bypass protected mode in Windows 8.1, so that my C programs can access the memory of other applications and change their values...I know it can be done because I used to use memory editors to hack games; I just want to build one myself. Below is just a basic program that I threw together just to see if I could write a program that could simulate such an action. It works; of course the problem is that because of protected mode it will crash if I try to access memory outside the scope of the program.
c# - C# - 字节数组到十六进制字符串
我正在为《现代战争 2》制作培训师。我遇到的问题是将十六进制转换为字符串,我对此很陌生,但在尝试任何事情之前我都会环顾四周。在发布这个问题之前,我也环顾四周。这是我的代码:
我得到的返回值是:330400000100100100000000000000
但我需要它来返回这个:110000100000433
有什么建议么?