[英]Byte array and hex addresses
我有代码:
public static void main(String[] args) throws IOException {
byte[] exeBytes = Files.readAllBytes(new File(EXE_PATH).toPath());
int decAddr = Integer.parseInt("4b613f8", 16);
String hexByte = Integer.toHexString(exeBytes[decAddr]);
System.out.println(hexByte);
}
它打印2e
,但是在十六进制编辑器中我绝对可以看到55
。 我在转换中做错了什么吗?或者Files.readAllBytes
以我在十六进制编辑器中看到的不同方式读取文件?
140000000是第一个字节地址
有问题的程序似乎是一些反汇编器/反编译器,而不仅仅是一个十六进制编辑器(Ghidra?)。
加载的文件显然是Portable Executable文件或 DOS 可执行文件(以MZ
开头)。 它由不同的部分和一个不线性加载到 memory 的Layout组成,也就是说,文件位置与 memory 位置不同(甚至不相对于文件/内存存储的开始)。
要获得正确的文件索引,可能必须使用节标题转换相应节中的索引......但我只是 Java 开发人员。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.