
Binary Ninja용 binjatron 플러그인의 PyQt5 프런트엔드로, 초보자가 리버스 엔지니어링을 더 쉽게 배울 수 있도록 하이라이팅 기능을 포함합니다.
x86 바이너리를 리버스 엔지니어링하는 능력은 정보 보안 업계 밖에서도 중요한 기술입니다. 그러나 풍부한 교육 자료가 있음에도 불구하고 여전히 배우기 어려운 기술로 남아 있습니다. 많은 학생들이 단순한 바이너리에서 조금만 진전을 이루는 데도 요구되는 배경 지식의 양에 대해 좌절감을 표현했습니다.
Binary Ninja는 비교적 저렴한 비용, 깔끔한 인터페이스, 사용 편의성 덕분에 학생들에게 자주 소개됩니다. 저수준 및 중간 수준 중간 언어(IL)는 또한 명령어가 무엇을 하는지 쉽게 이해할 수 있는 방법을 제공합니다. 이 프로젝트는 바이너리의 실행을 더 쉽게 시각화할 수 있게 함으로써 Binary Ninja를 초보자에게 더 나은 도구로 만드는 것을 목표로 합니다.
이 프로젝트는 NCC Group의 2017년 여름 인턴십 프로그램의 결과물입니다. 시각적 디버깅 구성 요소는 Matasano Security가 제작한 임베디드 보안 CTF인 Microcorruption의 정신적 후속작으로 볼 수 있습니다. 추가 업데이트는 https://github.com/ehennenfent/binja_dynamics에서 추적됩니다. NCC Group은 2017년 8월 18일 이후 리포지토리에 적용된 추가 변경 사항에 대해 책임을 지지 않습니다.
Binary Ninja 플러그인 폴더 안에서 다음을 실행하세요:
git clone https://github.com/ehennenfent/binja_dynamics.git
cd binja_dynamics
./install.sh
바이너리를 로드한 후 도구 메뉴에서 Enable Dynamic Analysis Tools 항목을 클릭하세요. 디버거 창이 열리며, 도구 모음의 버튼으로 제어할 수 있습니다. 실행을 단계별로 진행하면서 UI는 프로그램 상태를 반영하여 실시간으로 업데이트됩니다. Binjatron 덕분에 현재 명령어와 모든 중단점이 바이너리 뷰에서 강조 표시됩니다. 각 메모리 주소와 레지스터에 대해, 이전 명령어의 결과로 값이 변경되었을 때마다 해당 값이 주황색으로 강조 표시됩니다. 비슷한 방식으로, 현재 스택 프레임의 상단과 하단(예상 복귀 주소의 위치 포함)이 강조 표시되어 초보자가 메모리에서 중요하게 살펴봐야 할 부분을 더 쉽게 식별할 수 있게 합니다. 백트레이스 뷰어는 현재 스택 프레임의 백트레이스를 표시하며, 플러그인이 복귀 주소가 있을 것으로 예상하는 메모리 주소의 위치로 바이너리 뷰를 자동으로 이동시키는 버튼을 제공합니다. 일부 함수에서는 스택 프레임이 플러그인이 예상하는 방식대로 해제되지 않으므로, 이 예상 복귀 주소가 항상 정확하지 않을 수 있습니다.

(위 스크린샷에서 베이스 포인터는 올리브 그린으로 표시됩니다)
때때로 인터페이스의 정확한 동작을 이해하려면 소스 코드를 참조해야 할 수도 있습니다. 이러한 상황을 대비하여 많은 설계 결정 사항과 구현 세부 정보가 인라인 주석으로 설명되어 있습니다.
위키는 아직 상대적으로 내용이 빈약하지만, 걸림돌 목록이나 개발 로그 같은 콘텐츠는 문제 해결에 도움이 될 수 있습니다.
시작하는 데 도움이 될 수 있는 예제를 보려면 binja_sensei 리포지토리를 참조하는 것을 고려해 보세요.
Binary Ninja를 제외하고는 install.sh가 이러한 종속성을 처리해 줍니다.