AI로 하드웨어 리버스 엔지니어링하기: 스캐너·MIPI 카메라 드라이버를 Claude로 고친 후기
Using AI to reverse engineer hardware
TL;DR Highlight
Windows VM 캡처와 Linux 캡처를 비교시켰더니 스캐너 드라이버와 카메라 패치가 나왔다
Who Should Read
드라이버가 없는 장비를 Linux에서 쓰고 싶어 AI 에이전트로 시도해 보려는 개발자
Core Mechanics
- 기준 캡처를 비교시키는 게 핵심
- Windows 드라이버를 KVM VM에서 돌리며 호스트에서 usbmon으로 USB 트래픽을 기록한다.
- Linux 드라이버로 같은 동작을 하고 같은 방식으로 캡처한 뒤 두 기록을 diff한다.
- 차이점 목록이 곧 드라이버 버그 목록이다.
- 버스가 없는 장치는 Windows 쪽을 뒤진다
- 내장 MIPI 카메라처럼 탭할 버스가 없으면 INF 파일, 레지스트리, ACPI 테이블, 장치 속성을 본다.
- 코드를 복사하지 않고 관찰한 설정값만 추출하므로 새 드라이버의 모든 상수가 기록으로 추적된다.
- 스캐너 드라이버는 몇 시간 만에 첫 스캔이 나왔다
- Plustek OpticFilm 8200i(Genesys GL128)는 몇 달 막혀 있다가 이 방식으로 몇 시간 만에 첫 스캔을 얻었다.
- 며칠 뒤 적외선 스캔까지 지원하는 거의 완벽한 드라이버가 됐다.
- 그 사이 SANE 업스트림에도 같은 스캐너 지원이 들어가 있었다.
- 내 드라이버와 업스트림을 비교하니 일장일단이었다
- 3600 dpi에서 세부 해상도는 둘 다 같다.
- 최대 해상도 스캔은 내 쪽이 34.6초, 업스트림이 54.4초였다.
- 내 쪽은 적외선 먼지 제거를 지원하고, 업스트림은 해상도 단계가 더 많다.
Community Reactions
- 오디오 장비 회사 대표가 경쟁사 제품 펌웨어를 AI로 디컴파일했다는 경험
- 에뮬레이터로 원본 ROM을 실행해 같은 코드를 돌리는지 확인했고, 소리도 훌륭했다고 한다.
- 누구나 같은 일을 할 수 있어 하드웨어 해자가 사라졌다는 우려를 밝혔다.
- 저렴한 모델로 라우터 펌웨어를 풀었다는 경험
- 이름 모를 Alcatel 모뎀/라우터에 UART를 납땜하고 에이전트에게 맡겼더니 반나절 안에 OpenWRT 빌드·플래시 파이프라인이 나왔다.
- 비용은 0.86달러였다고 한다.
- 프린터 드라이버를 만들며 AI의 손발 역할을 했다는 경험
- Claude가 용지 비우기, 듀플렉스 확인 같은 물리 작업을 사람에게 시키며 진단했다고 한다.
- 하드웨어 지식이 거의 없어도 강한 모델에 장치를 연결하고 토큰을 쓰면 된다는 의견이다.
- 이미 NegPy라는 도구가 있다는 반론
- 8200i를 리버스 엔지니어링한 NegPy가 이미 있는데 왜 새로 만들었냐는 의견이 있었다.
- 업스트림에 기여된 코드와 내 코드를 비교해 빠진 부분만 기여하라는 조언도 있었다.
How to Apply
- 쓰던 장치 하나를 USB로 연결해 AI에 맡겨 보기
- 드라이버 없는 USB 장치를 Linux에 꽂고 lsusb 출력과 usbmon 캡처를 AI에 붙여넣어라.
- 반복되는 패턴과 바뀌는 바이트를 찾아 의미를 추정하게 하라.
- 기준 캡처와 실패 캡처를 쌍으로 만들기
- 같은 동작을 정상 환경(Windows VM 등)과 실패 환경에서 각각 기록하라.
- 두 캡처를 AI에 주고 차이점 목록을 뽑게 하라.
- hw-harness를 Claude나 Codex 세션에 붙이기
- 작성자가 공개한 hw-harness로 KVM 패스스루, usbmon 캡처, diff 절차를 세션에 넘겨라.
- 원문에 따르면 자신이 쓴 코드와 완전히 같은 형태는 아니므로 필요한 부분은 손봐야 한다.
- 결과는 실제 하드웨어에서 검증하기
- AI가 낸 상수와 패치는 실제 장치에서 동작을 확인한 뒤 반영하라.
- 업스트림에 이미 같은 코드가 있는지 먼저 확인하라.
Try It
# Claude Code 또는 Claude/ChatGPT에 붙여넣기 (원문 방법의 간이 버전)
너는 드라이버 리버스 엔지니어링 보조야. 아래는 같은 동작을 정상 환경과 실패 환경에서 캡처한 USB 트래픽이다.
[정상 캡처]
{{정상 캡처}}
[실패 캡처]
{{실패 캡처}}
1. 두 캡처를 단계별로 비교해 차이점을 목록으로 만들어라.
2. 각 차이가 어떤 레지스터나 제어 전송 때문일지 가설을 세우고, 근거가 된 캡처 줄을 함께 적어라.
3. 가설 하나씩 확인할 수 있는 테스트 코드를 제안해라.
이어서 해 볼 것: 테스트 결과를 다시 붙여넣고 가설을 좁혀 가라.Terminology
관련 논문
같은 시뮬레이션, 다른 근거: 도구 출력을 파일로 넘기면 LLM 에이전트 정확도가 어디서 깎이나
긴 툴 출력을 파일로 넘기자 GPT-5.1은 정확도 11.3%p 하락, 정식 출력 지정하니 회복
가짜 뉴스가 진짜 폭락을: LLM 트레이딩 에이전트 대상 정보 주입 공격
가짜 헤드라인 한 줄로 LLM 트레이딩 에이전트 62%를 조종했다(프롬프트 주입은 14%)
Harness Engineering 101: LLM은 뇌, harness는 몸
에이전트는 JSON 배열을 관리하는 루프이고, 16개 챕터로 직접 만들어 본다
Harness²: 에이전트 harness를 스스로 고쳐 쓰는 재귀 최적화 프레임워크
모델은 고정하고 harness를 재귀로 고쳤더니 벤치마크 점수가 최대 11.8%p 올랐다
해고된 Savannah 경찰관, ICE 요원 남편에게 Flock 계정 공유
경찰관이 Flock 계정을 남편(ICE 요원)에게 공유했고, 감사에서 983건 검색이 드러나 해고됐다
tmux와 Claude Code: 세션, send-keys, 그리고 한계선
tmux로 Claude Code 여러 개를 돌리면 편하지만 에이전트 4개쯤에서 한계가 온다
Hybrid Reasoning Agents: 잠재 공간에서 생각하고 텍스트로 행동하는 LLM 에이전트
잠재 공간 추론과 텍스트 도구 호출을 섞었더니 성능 10.4%↑, 토큰 최대 54.7%↓