【问题标题】:How to binary analyze a Windows exe file?如何对 Windows exe 文件进行二进制分析?
【发布时间】:2020-11-02 01:58:54
【问题描述】:

我想在没有 Windows API 调用的情况下对 Windows EXE 文件进行二进制分析(因为我会从另一个操作系统进行)。我想区分 2 x 2 类型:

  • 它是窗口程序还是命令行程序?
  • 是 Win32 还是 Win64 程序?

希望有通用的位结构可以查询。

【问题讨论】:

标签: windows binary exe


【解决方案1】:

链接Microsoft PE and COFF Specification 很有用,但有点棘手。这是我现在的结果:

每个 Windows 程序都有一个 DOS 程序块,显示诸如“此程序无法在 DOS 下运行”之类的文本或类似文本。 DOS 块的长度可以不同。 “真正的 Windows 程序”部分稍后开始。 Windows 程序的起始偏移地址编码在字节偏移 0x3c 和 0x3d 中。 0x3d 保存 hi 值,0x3c 保存 lo 值。所以你得计算256*(0x3d) + (0x3c)才能得到真实Windows程序的偏移地址。

真正的 Windows 程序以四个字节开始:“PE”,然后是两个空字节。第五个和第六个字节如果是Win32程序是0x4c01,如果是Win64程序是0x6486。

要检查程序是否基于文本,您必须读取偏移字节(从“PE”=0x00 开始计数)0x5c。值 3 表示基于文本,2 表示窗口 GUI 程序。

【讨论】:

    猜你喜欢
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 2014-01-25
    相关资源
    最近更新 更多