实际可移植的可执行文件

2021-02-27 00:52:21

您会注意到,通过处理Windows PE开始执行 标头就好像是代码。例如,ASCII字符串" MZqFpD" 解码为pop%r10; jno 0x4a; jo 0x4a和字符串 " \ 177ELF"解码为jg 0x47。然后跳 通过mov语句,该语句告诉我们程序正在从以下位置运行 用户空间而不是被引导,然后跳到入口点。 然后是魔术数字 容易地 使用分散的部分为主机操作系统解压缩 和GNU汇编器.sleb128指令。低熵数据 像UNICODE位查找表一般将使用以下任一方法进行解码 一个103 字节LZ4解压缩器或 一个17 字节游程长度解码器和运行时代码变形可以轻松实现 使用完成 英特尔的3kb x86解码器。 请注意,该模拟器不是必需的。 αcτµαllypδrταblε 如果仅在外壳上运行它们,NT命令就可以正常工作 提示,或从BIOS引导它们。这不是JVM。您只能使用 模拟器(如果需要)。例如,能够拥有 程序执行如何影响内存的出色可视化效果。 很高兴知道我们编写的任何普通PC程序都会 工作"在Raspberry Pi和Apple ARM上。我们要做的就是嵌入一个ARM 在我们的x86可执行文件中构建上面的模拟器,并让它们 适当地变形并重新执行,类似于Cosmopolitan已经存在的方式 与qemu-x86_64一起做,只是不需要这样做 预先安装。权衡是,如果我们这样做,二进制文件将 仅比Go's Hello World小10倍,而不是小100倍。这 另一个折衷方案是GCC Runtime Exception禁止代码变形,但是我 通过重写GNU运行时,已经为您解决了这一问题。 使x86-64-linux-gnu最小至最小的最引人注目的用例 借助全面仿真的可能性,它可以实现 普通的简单本机程序可以在任何地方运行,包括Web浏览器 默认情况下。该领域中建立的许多解决方案也倾向于重点关注 在尚未达成共识的界面上,例如GUI和 线程,否则它们只会模拟整个操作系统, 例如在浏览器中运行Windows的Docker或Fabrice Bellard。我想我们 需要只运行程序,忽略系统的兼容性胶, 并将x86_64-linux-gnu视为规范的软件编码。 我之所以喜欢与许多这些旧的不性感的女人一起工作,原因之一 技术,是我希望参与其中的任何软件工作都能站得住脚 花费最少的时间进行时间的考验。类似于《超级马里奥兄弟》 ROM在不需要GitHub的情况下成功生存了这么多年 问题跟踪器。 我相信我们这样做的最好机会是团结在一起 已经实现了数十年共识的二进制接口, 并忽略API。例如,这是 魔法 Mac,Linux,BSD和Windows发行版使用的数字。他们值得 一生中至少见过一次,因为这些数字构成了 您使用过的几乎所有计算机,服务器和电话的内部组件。 如果我们专注于数字的子集,则所有系统都共享同一点,并且 比较他们的共同祖先,贝尔系统五,我们可以看到 在过去的40年中,有关系统工程的几件事情没有发生变化 在二进制级别。大酒瓶很无聊。平台无法打破它们 不破坏自己。很少有人提出对 为何需要改变UNIX命理学? 下载 emulator.com(280k PE + ELF + MachO + ZIP + SH)tinyemu.com(188k PE + ELF + MachO + ZIP + SH) 源代码ape.S ape.lds blinkenlights.c x86ild.greg.c syscalls.sh consts.sh程序life.com(12kb ape符号) sha256.elf(3kb x86_64-linux-gnu) hello.bin(55b x86_64-linux-gnu) 示例bash hello.com#在本地运行 ./hello.com#本机运行 ./tinyemu.com hello.com#刚运行程序 ./emulator.com -t life.com#显示调试器gui 回声你好| ./emulator.com sha256.elf

手册简介 ./emulator.com [-?HhrRstv] [ROM] [ARGS ...] 描述 使用密集机器状态可视化仿真x86 Linux程序 请保持静止,仅观看停顿的das眨眼灯 旗帜 -h帮助 -z缩放 -v详细程度 -r实模式 -s统计 -H禁用突出显示 -t调试器模式 -R反应堆推模 -b ADDR推送一个断点 -L PATH日志文件位置 争论 ROM文件可以是ELF或平面格式。 它应根据系统五ABI使用x86_64。 SYSCALL ABI是用Linux内核编写的。 特征 8086、8087,i386,x86_64,SSE3,SSSE3,POPCNT,MDA,CGA,TTY 网站 https://justine.lol/blinkenlights/