- OFRAK Tetris는 브라우저에서 ARM 명령어가 떨어지는 테트리스형 게임으로, 블록을 맞추는 대신 명령어를 배치해 프로그램 실행 흐름을 만듦
- 떨어지는 명령어 가젯은 회전한 뒤 고정되며, 고정된 명령어 중 화면 상단에 있는 것만 실행됨
- 점수는 R12가 가리키는 메모리 주소에 저장되고, R0~R12, LR, PC, SP와 메모리 덤프를 보며 상태를 추적할 수 있음
- 시간이 다 되거나 잘못된 메모리 접근, 잘못된 주소 점프가 발생하면 Game over가 되어 실행이 종료됨
- 단일 단계 실행, 음악 토글, 논리 명령어, 무한 모드, 낙하 간격, 최대 가젯 크기 같은 옵션으로 난이도와 실행 방식을 조정할 수 있음
ARM 명령어로 진행되는 테트리스
- OFRAK Tetris는 ARM 명령어로 구성된 가젯(gadget)이 떨어지는 테트리스형 게임임
- 사용자는 떨어지는 명령어를 회전한 뒤 왼쪽에 고정해 실행 흐름을 만듦
-
실행 규칙
- 명령어는 위에서 아래로 떨어짐
- 사용자는 명령어를 회전하고 고정함
- 고정된 명령어 중 맨 위 명령어만 실행됨
화면에서 확인하는 실행 상태
- 현재 실행 대상 명령어와 주소가 함께 표시됨
- 예:
add PC, PC, #61 - 예:
00010000,00010004,00010008
- 예:
- 레지스터와 메모리 상태를 보며 실행 결과를 추적할 수 있음
- R0~R12, LR, PC, SP 값이 표시됨
- 메모리 영역은 16진수 주소와 0으로 채워진 값 형태로 표시됨
- 점수는
Score: 0처럼 표시됨
점수 저장과 게임 종료 조건
- 점수는 R12가 가리키는 메모리 주소에 저장됨
- 다음 중 하나가 발생하면 게임이 끝남
- 시간이 다 됨
- 잘못된 메모리에 접근함
- 잘못된 주소로 점프함
- 종료 화면에는
Game over.와 최고 점수 입력 영역이 표시됨
조작과 설정
- 기본 조작은 단일 단계 실행, 가젯 고정, 레지스터 회전, 음악 재생/일시정지, 설명 표시/숨김을 포함함
- 게임패드 키 바인딩 설정도 제공됨
-
Single Step
-
Toggle Music
-
Lock In
-
Rotate Instructions Up / Down / Left / Right
- Toggle Game Instructions
- 게임 설정에서 실행 조건과 난이도를 조정할 수 있음
- Score multiplier
- Enable Logical Instructions
- Infinite mode
- Seconds between drops
- Maximum gadget size
-
DEF CON 현장 이벤트
- DEF CON에 있는 사용자는 Red Balloon Security 테이블을 방문해 Car Hacking Village에서 Tetris를 함께 플레이할 수 있음
- 충분히 높은 점수를 얻은 사람에게는 상품이 제공될 예정임