Claude Code로 노트북 BIOS 잠금을 해제했다!
Claude Code unlocked my laptop's bios!
핵심 요약
사용자가 Claude Code를 활용해 HP 노트북의 BIOS 서명 검증을 우회하고 숨겨진 설정 메뉴를 활성화함.
- BIOS 잠금 해제 — Claude Code를 사용해 BIOS 덤프를 분석하고 서명 검증을 우회함
- 기술적 성과 — RSA-2048 서명 검증 우회 및 숨겨진 고급 설정 탭 활성화 성공
- 사용 도구 — Ghidra, UEFITool, Unicorn Engine 등 리버스 엔지니어링 도구 활용
- 주의 사항 — BIOS 수정은 위험하므로 칩 플래셔(ch341a) 등 복구 장비 필수
주의: 이거 따라 해볼 생각이면 ch341a 같은 칩 플래셔 하나 장만해라. 바이오스 날려 먹었을 때 복구하려면 필수다!
내 노트북은 HP 15-dw1036ne(이름 한번 기가 막히네)고 바이오스 버전은 F.68이다.
HP 바이오스는 조금이라도 수정된 게 감지되면 바로 "BIOS Corruption Detected" 메시지 띄우면서 먹통이 된다.
내 노트북 바이오스 언락한 놈이 아무도 없길래, 그냥 Claude Code한테 바이오스 덤프랑 툴 몇 개 던져주고 알아서 언락해보라고 시켰다. 근데 진짜 해내더라!
아래 내용은 전부 Claude가 쓴 거다... 마지막에 바이오스 파일 수정하는 파이썬 스크립트도 넣어놨는데, 내 노트북에선 잘 돌아갔다. 비슷한 HP 모델들도 될지 모르니 참고해라!
사용한 툴
- Ghidra (GhidrAssistMCP 사용): 바이오스 드라이버 읽고 디스어셈블해서 탭 차단 함수랑 서명 검증 코드 찾아냄
- UEFITool / UEFIExtract / UEFIFind: 바이오스 이미지를 드라이버 파일 단위로 분해함
- Unicorn Engine: 실제 하드웨어에 플래싱하기 전에, 추출한 서명 검증 함수를 실제 바이오스 밖에서 유효한 서명이랑 깨진 서명으로 테스트함
- Capstone: 에뮬레이션 테스트 중에 명령어 디코딩함
- cryptography (파이썬 라이브러리): 에뮬레이션 검증 때 가짜 데이터가 아니라 진짜 암호화 데이터로 테스트하려고 유효한 서명 생성함
- Python (커스텀 스크립트): Ghidra 분석에서 놓친 상수랑 함수 호출 찾아냄
발견 #1: RSA-2048 DXE-FV 서명 검증 우회
HP/Compal은 압축된 DXE 펌웨어 볼륨 전체를 RSA-2048 서명으로 잠가놨다. 순정 펌웨어에서 바이트 하나라도 건드리면 바로 "BIOS corruption detected" 뜨면서 부팅 거부당함.
검증 로직 자체가 LZMA로 압축되어 있어서 플래시 이미지 그냥 스캔해선 안 보이고, 압축 풀려야만 나타난다. 검증 함수 끝부분이 SHA-256이랑 SHA-1 경로 둘 다 이렇게 생겼음:
CALL RsaVerifyCore
TEST AL, AL
JNZ ok ; verify passed
MOV EBX, 0x8000001a ; verify FAILED
ok:
RET
1바이트 패치: JNZ(0x75)를 JMP(0xEB)로 바꾸면 끝. 키나 서명 건드릴 필요 없이 함수가 무조건 성공을 반환하게 만듦.
발견 #2: 숨겨진 55개 설정 필드
SetupUtility의 IFR 폼에 설정 필드가 잔뜩 박혀 있는데, 하드코딩된 불리언 상수(SuppressIf{True} / GrayOutIf{True}) 때문에 막혀 있다. 상수 바이트(TRUE 0x46을 FALSE 0x47로)만 바꿔주면 필드가 튀어나옴. SuppressIf 27개, GrayOutIf 28개, 총 55개인데 전부 1바이트씩만 수정하면 된다.


