BasicCompiler:需要 BC.exe 或 QB.exe(编译器)生成的二进制文件

逆向工程
2021-06-28 05:59:59

在过去的几个月里,我负责分析和逆向旧的未知 EXE。该二进制文件适用于 NEC-PC98(复古 PC)的 MS-DOS,旧的(20 多年前),没有人知道它是如何制作的。

我完成了这项工作,并且知道二进制文件是由未知供应商的基本编译器生成的。二进制有有趣的技术;精心设计的 VM,像 DLL 一样部分重定位覆盖,数据段压缩和自熔。它给我留下了深刻的印象。所以我想知道编译器生成二进制文件。

现在我猜供应商可能是微软。我会尝试使用 QuickBasic 的编译器(BC.EXEQB.EXE) 并且会生成小的二进制文件,但不幸的是我不是旧工具链的所有者。

所以我很想请人帮忙,如果你有任何微软的基本编译器,那就去挖你的车库,把这样一个编译器生成的旧二进制文件放在我身上。我会看到它并想确定编译器和供应商。

该二进制文件具有以下特点:

  • 在其 exe 标头的 reloc 表偏移地址字段上表示 magicWORD,0x1e
  • 启动代码/地址位于较高地址(exe 的后向)
  • 包括可在单个二进制文件上重定位的公共库(例如 libc)
  • 生成完全本机代码而不是 P 代码。acall匹配(未知)VM-OP-code
  • 字符代码为 ASCII/Shift-JIS big endian(cp932,日语多字节代码)
  • 浮点 IEEE754 不是 MS-FP
  • rodata 部分很容易压缩(可选?)

EXE地址映射:

00000: MZ HEADER
00200: module1-header
00230: module1-code
00xxx: module1-data (compressed)
       : (repeats by module-N)
yyyyy: native libraries 
zzzzz: startup code
ZZZZZ: relocation table (for calling a library)

BC.EXE,Microsoft PDS,是我感兴趣的产品之一。请编译一个像这样的简单代码:

X = 0.5 * 100.0 PRINT X FOR I=0 TO 16 PRINT "Hello, World" NEXT I

如果您向我发送输出可执行文件,我将不胜感激。

0个回答
没有发现任何回复~