
Binary Ninja를 사용하여 리버스 엔지니어링을 배우려는 초보자를 위한 리소스를 제공하는 플러그인입니다. 여러 다른 플러그인을 자동으로 설치하며, 이러한 플러그인의 기능을 보여주는 예제를 제공합니다.
Binary Ninja용 교육 도구
이 플러그인은 Binary Ninja를 사용하여 리버스 엔지니어링을 배우려는 초보자를 위한 리소스를 제공합니다. 여러 다른 플러그인을 자동으로 설치하며, 이 플러그인들의 기능을 보여주는 예제를 제공합니다.
이 프로젝트는 NCC Group의 2017년 여름 인턴십 프로그램의 결과물입니다. 향후 업데이트는 https://github.com/ehennenfent/binja_sensei에서 추적됩니다. NCC Group은 2017년 8월 18일 이후 이 저장소에 적용된 추가 변경 사항에 대해 책임을 지지 않습니다.
미래 대비를 위해 Binja Sensei는 아직 완성되지 않은 Plugin Manager API를 통해 플러그인을 설치합니다. 플러그인 매니저에는 현재 GUI가 없으므로, Binary Ninja 스크립트 콘솔(Ctrl+`로 접근)에서 다음 스니펫을 실행하여 설치해야 합니다.
manager = RepositoryManager()
manager.enable_plugin('binja_sensei', install=True)
참고: Binja를 설치한 시기에 따라 이 플러그인이 표시되도록 manager.check_for_updates()를 실행하고 Binja를 재시작해야 할 수 있습니다. 새 VM에 설치하는 것을 강력히 권장합니다.
2017년 8월 31일 이전에 실행하는 경우, 의존성 설치가 b0778fc 및 326253a에 의존하므로 Binary Ninja 개발 버전을 사용해야 합니다.
다음으로 Binary Ninja를 재시작하세요. 로드되면 Sensei는 번들된 모든 플러그인을 최신 버전으로 업데이트하고 각 플러그인의 Python 의존성을 설치합니다. 설치 스크립트는 자동으로 실행하지 않습니다. 따라서 Ubuntu를 사용 중이고 binja_dynamics를 설정하려면 ~/.binaryninja/repositories/default/plugins/binja_dynamics로 이동하여 ./install.sh를 실행해야 합니다.
플러그인 설치 중 일부가 실패하는 경우 수동 설치를 수행하면 더 나은 결과를 얻을 수 있습니다. 이슈 #753이 해결되기 전까지, 절대 파일 경로에 의존하는 일부 플러그인은 수동으로 설치하지 않으면 작동하지 않을 수 있습니다. 수동으로 설치하려면 아래 관련 저장소 링크를 복사하여 플러그인 디렉터리 안에 클론하세요.
https://github.com/carstein/Annotator.git
https://github.com/ehennenfent/binja_arch_ref.git
https://github.com/ehennenfent/binja_dynamics.git
https://github.com/ehennenfent/binja_explain_instruction.git
https://github.com/carstein/Syscaller.git
번들 도구는 각 작성자의 소유로 남아 있습니다. 이 플러그인은 MIT 라이선스로 제공되지만, 해당 라이선스는 아래의 어떤 플러그인에도 적용되지 않습니다.
이 플러그인들의 잠재적 사용 사례를 보여주기 위해 PicoCTF 2013의 5개 오버플로 챌린지에 대한 솔루션이 포함되어 있습니다. 라이트업 작성 이후 기능, 색 구성표, 버그 수정 측면에서 사소한 변경이 적용되었을 수 있습니다.
Annotator는 가상 스택을 사용하여 libc 함수 호출에 인자 프로토타입을 주석으로 추가합니다.

이 플러그인은 아키텍처에 대한 Binary Ninja 내부 정보가 담긴 치트 시트를 표시합니다.

이 플러그인은 Binjatron에 Qt 프런트엔드를 추가하며, 초보자가 중요한 메모리 위치를 찾는 데 도움이 되는 하이라이트를 포함합니다.

어셈블리 명령어가 수행하는 작업을 쉬운 영어로 설명하는 팝업 창을 추가합니다.

시스템 호출에 인자를 주석으로 추가합니다.
