Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ll-34 — 회로 수준 PDP-11/34 에뮬레이터 | Kitploit
도구/GitHubGitHub/dbrll/ll-34
Embedded Systems SecurityReverse EngineeringDebuggersHardware SecurityLearning & EducationCurated ResourcesFirmware Analysis
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 (회로 수준)
  • 원본 부트 및 진단 ROM이 포함된 M9301 부트 카드
  • DL11 직렬 카드 (타이밍 정확)
  • KW11 라인 클록 (50/60 Hz)
  • 프로그래머 콘솔 (CPU 문제 해결을 위한 유지보수 모드 포함)
  • RK05 드라이브 (RK11 컨트롤러의 고수준 에뮬레이션)
  • RL01 및 RL02 드라이브 (RL11 컨트롤러의 고수준 에뮬레이션)
  • 테이프 리더
  • stdio, TCP 포트 또는 PTY 모드를 갖춘 VT100 터미널

아키텍처

모든 장치는 UNIBUS 백플레인(unibus.c)에 연결되어 있으며, 이 백플레인은 주소 디코딩, 타이밍 및 버스 사이클을 수행합니다.

내부적으로 CPU는 다음과 같은 구성 요소로 이루어져 있습니다:

파일설명
ucode_rom.hBitsavers Verilog 및 덤프를 기반으로 한 512x48비트 마이크로코드 저장소(바이폴라 PROM). 각 마이크로워드는 하나의 마이크로사이클 동안 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 버스에 와이어-OR로 연결됩니다.
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 버스 대기)을 모델링합니다. 짧은 사이클: 180ns, 긴 사이클: 240ns, 버스 전송은 SSYN이 반환될 때까지 지연됩니다.
clock.c실시간 속도 조절. 시뮬레이션 시간을 벽시계 시간과 동기화합니다.
int.c인터럽트 중재자. BR4-BR7 우선순위 큐, UNIBUS 데이지 체인 부여 순서를 근사화합니다.

프로그래머 콘솔 (Ctrl-P)

PDP-11/34A의 전면 패널 스위치 및 표시기를 에뮬레이트합니다. CPU가 정지되어 있을 때(전원 켜짐, HALT 명령어 또는 Ctrl-P) 활성화됩니다.

버스 초기화, CPU 부팅, 코드 단일 스텝 실행, 임의 주소에 데이터 검사 및 저장, 에뮬레이터 종료가 가능합니다.

프론트엔드는 엔진과 분리되어 있으므로, 포토리얼리스틱 전면 패널 GUI도 WebAssembly로 제공됩니다.

디버그 콘솔 (Ctrl-E)

디버그 콘솔은 마이크로코드 수준 및 명령어 수준 코드를 위한 대화형 디버거를 제공합니다:

  • s [n]: n개의 마이크로 명령어를 단일 스텝 실행하며 전체 상태 덤프(MPC, ALU, 버스, 레지스터)를 출력
  • b addr: PC 브레이크포인트 설정(8진수), bl로 목록 보기, bd n으로 삭제
  • g: 실행 재개
  • u [addr] [n]: 명령어 디스어셈블
  • c [addr] [n]: 메모리 덤프(8진수)
  • mmu: MMU 상태 표시(커널 + 사용자 PAR/PDR, 현재 모드 표시)
  • r: 레지스터 덤프

로직 분석기 (Ctrl-L)

ll-34 개발 중 문제 해결은 실제 하드웨어 문제 해결과 매우 유사한 것으로 드러나, 신호를 추적하고 데이터패스를 프로브하기 위해 내부 로직 분석기가 구현되었습니다. 이는 가상 CPU의 미묘한 ROM 및 타이밍 버그를 추적하는 데 결정적인 역할을 했습니다. 또한 실제 하드웨어 문제 해결을 위한 참고 자료로도 사용할 수 있으며, 마찬가지로 작동하는 하드웨어가 에뮬레이터 개발에 도움이 되었습니다.

로직 분석기는 주요 CPU 신호의 102개 지점을 프로브할 수 있으며, 물리적 칩 핀(DEC 회로도 K1-5 ~ K2-9에 해당하는 KD1:Exx:pin 표기법)에 매핑됩니다. 편의를 위해 논리적 별칭(MPC, ALU_OUT, IR, PSW 등)이 제공됩니다.

샘플 속도는 실시간 CPU 클록(5,555,556 Hz)이며 분해능은 샘플당 180ns입니다. 구성 가능한 분할기를 사용하여 더 긴 캡처 윈도우를 위해 샘플 속도를 낮출 수 있습니다.

캡처는 링 버퍼(최대 64K 샘플)를 사용하며, 모든 신호에 구성 가능한 트리거, 조정 가능한 트리거 위치(사전/사후 비율), 그리고 오프라인 분석을 위한 CSV 내보내기를 제공합니다.

로직 캡처는 프로젝트 전반에 걸쳐 제대로 이해되지 않은 멀티플렉싱 경로를 매핑하고 디버깅하는 데 널리 사용되었습니다.

샘플 프로그램

ll-34에는 시도해 볼 수 있는 몇 가지 프로그램과 시스템이 포함되어 있습니다: Game of Life, V6 UNIX, 원래 Tetris 게임이 포함된 RT-11 V4, 그리고 ATTN/11(자기 주의를 갖춘 작은 학습 가능한 Transformer)입니다.

RT-11

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

부트 ROM이 자동으로 RK11에서 로드되어 운영 체제를 시작합니다. DIR은 파일을 나열하고, HELP는 도움말을 출력하며, RUN TETRIS는 Tetris 데모를 시작합니다($TERM이 잘못되었을 가능성이 있지만). RUN ADVENT는 실제 PDP-11/34에서 제작된 Colossal Cave Adventure를 시작합니다.

v6 Unix

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

부트로더가 최소한의 @ 프롬프트를 출력합니다. rkunix를 입력하고 Enter를 누르면 몇 초 후에 login: 프롬프트가 나타납니다. 사용자 이름 root를 입력하고 비밀번호 없이 로그인하면 됩니다! 한 가지 참고 사항은 cd가 초기 유닉스에서는 chdir로 명명되었다는 것입니다.

빌드

make + C11 컴파일러만 있으면 되며, 다른 의존성은 없습니다.

Linux(x86_64 및 aarch64)에서 musl과 glibc 모두, macOS aarch64, NetBSD 10 aarch64에서 경고 없이 컴파일되는 것이 확인되었습니다.

실행

CLI 외에도 사진과 같은 GUI를 갖춘 독립형 WebAssembly 버전이 다음에서 제공됩니다: https://dbrll.github.io/ll-34

참고: ll-34는 리소스 집약적인 에뮬레이터입니다. 명령어 수준 에뮬레이터와 달리, 마이크로코드를 한 사이클씩 단계별로 실행하고 각 단계에서 ALU, 조합 ROM, 스크래치패드, 클록 생성기 및 버스 타이밍을 실행합니다. 호스트는 사이클 정확도를 유지하기 위해 5.5MHz 클록 생성기 속도를 지속적으로 유지해야 합니다.

시작 시 에뮬레이터는 자체 벤치마크를 수행하고 실제 KD11-EA 대비 속도를 보고합니다. 비율이 1x 미만이면 호스트가 따라잡을 수 없으며 타이밍 정확도가 보장되지 않습니다. WebAssembly 버전에서는 브라우저 타이머 분해능으로 인해 벤치마크를 사용할 수 없습니다. WASM 빌드는 네이티브보다 느리므로 스마트폰에서 실행하는 것은 일반적으로 너무 느립니다.

도구 다운로드