0

对于我用 Java 编写的混淆程序,我需要找到一种方法来获取特定地址的值。例如,在我在十六进制编辑器中打开的程序中,地址 0000001F 是十六进制值“00”。此外,是否可以写入特定的内存地址?例如写入 0000001F 并将其从“00”更改为例如“FF”

4

2 回答 2

1

您使用了错误的语言。C 或 C++ 将是更好的选择,因为您可以轻松调用操作系统库(在大多数系统上)并尝试访问特定位置的内存。

大多数符合 POSIX 的操作系统都实现了 mmap,它允许您将内存映射到当前进程地址空间中的特定位置。

于 2010-08-18T06:36:47.087 回答
1

要回答您的第一个问题,您可以将文件作为二进制流打开并从中读取您想要的任何内容。这不会对类加载器产生太大影响,但是如果您有一个自定义类加载器来操作文件并在运行时将其转换为有效的类并由 JVM 加载,那么理论上这当然是可能的。不过,我想知道重点是什么,因为类加载器本身不会以这种方式被混淆。

要回答您的第二个问题,不,您不能使用 Java 直接写入内存地址。您可以通过 JNI 调用一个可以这样做的函数(在 JVM 内存分配之外)。

在我看来,您使用错误的语言来执行您想做的事情。

于 2010-08-18T03:17:56.050 回答