繁体   English   中英

字节数组和十六进制地址

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM