Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
ll-34 — 电路级PDP-11/34仿真器 | Kitploit
工具/GitHubGitHub/dbrll/ll-34
嵌入式系统安全逆向工程调试器硬件安全学习与教育精选资源固件分析
GitHubdbrll/ll-34

ll-34

电路级PDP-11/34仿真器

查看仓库
69415个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

ll/34

ll/34 是一个针对 PDP-11/34A(1976 年)的电路级模拟器,运行着一个根据实际 PDP-11/34A 的原理图、微码和逻辑捕获逆向工程出的虚拟 CPU。

它最初被设计为实际 CPU 的数字复制品,以辅助在信号层面进行故障排除。 虚拟 KD11-EA CPU 本质上由原理图的 C 语言翻译和 ROM 表的查找组成。所有组合逻辑 ROM 均已被逆向工程,且时钟发生器被精确建模。

选择电路级(ROM 真值表 + 组合逻辑)而非门级(Verilog)的原因是,它能够低到足以复现硬件错误,同时又快得足以运行程序。

模拟的设备

  • UNIBUS 背板(时序和信号精确)
  • KD11-EA CPU(电路级)
  • M9301 启动卡,带有原始启动和诊断 ROM
  • DL11 串口卡(时序精确)
  • KW11 线路时钟(50/60 Hz)
  • 程序员控制台(包括用于 CPU 故障排除的维护模式)
  • RK05 驱动器(RK11 控制器的高层模拟)
  • RL01 和 RL02 驱动器(RL11 控制器的高层模拟)
  • 纸带阅读器
  • VT100 终端,支持 stdio、TCP 端口或 PTY 模式

架构

所有设备都插入 UNIBUS 背板(unibus.c),该背板执行地址解码、时序和总线周期。

在内部,CPU 由以下组件组成:

文件描述
ucode_rom.h512x48 位微代码存储(双极型 PROM),基于 Bitsavers 的 Verilog 和转储。每个微字控制 ALU、暂存器、总线接口和分支,用于一个微周期。
combo_roms.h组合逻辑 ROM(E51-E83, E107)、IR 解码(E59/E60/E63/E69/E70/E71/E74)、ALU 功能选择(E61/E82/E83)、陷阱/服务优先级(E52/E53)和条件代码逻辑(E68/E107),全部从原理图和逻辑捕获中重新构建。集电极开路 ROM 通过线或连接到 MPC 总线。
kd11ea.c数据通路引擎。每个周期执行一步微代码。基本 74xx 门通过 C 逻辑运算符(!、&&、>> 等)模拟。74S181 位片 ALU 被完整建模(4 个切片,16 位)。
mmu.c内存管理。内核/用户地址空间,18 位重定位(3 个 74S283 加法器),16 个 PAR/PDR 对,带冻结逻辑的 SR0/SR2 中止寄存器。
clockgen.c时钟发生器。模拟 E106 延迟线(TAP 30/90/120 反馈,TRAN INH 总线等待)。短周期:180 ns,长周期:240 ns,总线传输会一直延伸直到 SSYN 返回。
clock.c实时节拍。使模拟时间与墙钟时间保持同步。
int.c中断仲裁器。BR4-BR7 优先级队列,近似 UNIBUS 菊花链授权顺序。

程序员控制台(Ctrl-P)

模拟 PDP-11/34A 的前面板开关和指示灯。当 CPU 暂停时(上电、HALT 指令或 Ctrl-P)激活。

它允许初始化总线、启动 CPU、单步执行代码、检查与存入任意地址的数据,以及退出模拟器。

前端与引擎分离,因此还以 WebAssembly 形式提供了一个逼真的前面板 GUI。

调试控制台(Ctrl-E)

调试控制台为微代码级和指令级代码提供交互式调试器:

  • s [n]:单步执行 n 条微指令,并完整显示状态转储(MPC、ALU、总线、寄存器)
  • b addr:设置 PC 断点(八进制),bl 列出,bd n 删除
  • g:继续执行
  • u [addr] [n]:反汇编指令
  • c [addr] [n]:内存转储(八进制)
  • mmu:显示 MMU 状态(内核 + 用户 PAR/PDR,当前模式标记)
  • r:寄存器转储

逻辑分析仪(Ctrl-L)

在开发 ll-34 过程中的故障排除与在真实硬件上的故障排除非常相似,因此实现了一个内部逻辑分析仪来追踪信号并探测数据通路。这有助于发现虚拟 CPU 中微妙的 ROM 和时序错误。它也可以作为真实硬件故障排除的参考,就像工作硬件帮助开发了模拟器一样。

逻辑分析仪允许探测 102 个主要 CPU 信号点,映射到物理芯片引脚(KD1:Exx:pin 表示法,匹配 DEC 原理图 K1-5 到 K2-9)。提供了逻辑别名(MPC、ALU_OUT、IR、PSW…)以方便使用。

采样率是实时 CPU 时钟(5,555,556 Hz),分辨率为每样本 180 ns。可配置的分频器可降低采样率以获取更长的捕获窗口。

捕获使用环形缓冲区(最多 64K 样本),可在任意信号上配置触发、可调触发位置(前/后比例),并支持 CSV 导出以进行离线分析。

在整个项目中大量使用逻辑捕获来映射和调试不为人知的多路复用通路。

示例程序

ll-34 附带了一些可供尝试的程序和系统:生命游戏、V6 UNIX、RT-11 V4 及原始俄罗斯方块游戏,以及 ATTN/11,一个带有自注意力机制的小型可训练 Transformer。

RT-11

root@kitploit:~
./ll-34 --rk ./wasm/demos/rtv4_rk.dsk

引导 ROM 会自动从 RK11 加载并启动操作系统。DIR 列出文件,HELP 打印帮助信息,RUN TETRIS 启动俄罗斯方块演示(尽管 $TERM 可能设置错误?)。RUN ADVENT 启动 巨洞冒险,它是在真实的 PDP-11/34 上构建的。

v6 Unix

root@kitploit:~
./ll-34 --rk ./wasm/demos/v6bin.rk

引导加载程序会打印一个最小的 @ 提示符。输入 rkunix 并回车,几秒钟后您应该会看到一个 login: 提示符。输入用户名 root(无密码),即可进入系统!注意:在早期 Unix 中,cd 被称为 chdir。

构建

make + C11 编译器,无其他依赖。

已验证可在 Linux(x86_64 和 aarch64)上使用 musl 和 glibc 编译无警告,macOS aarch64 以及 NetBSD 10 aarch64。

运行

除了 CLI 外,还有一个独立的 WebAssembly 版本,带有逼真的 GUI,可在此处获取:https://dbrll.github.io/ll-34。

注意:ll-34 是一个资源密集型模拟器。与指令级模拟器不同,它逐周期执行微代码,并在每一步运行 ALU、组合逻辑 ROM、暂存器、时钟发生器和总线时序。 宿主必须持续维持 5.5 MHz 的时钟发生器速度,以保持周期精确。

启动时,模拟器会进行自基准测试,并报告其相对于真实 KD11-EA 的速度。低于 1x 的比率意味着宿主无法跟上,时序精度无法保证。该基准测试在 WebAssembly 版本中不可用,因为浏览器计时器分辨率使其不可靠。由于 WASM 构建比本机慢,在智能手机上运行通常会过慢。

下载工具