Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ScratchABit — 쉽게 재대상화 가능하고 해킹 가능한 대화형 디스어셈블러로, IDAPython 호환 플러그인 API를 제공합니다. | Kitploit
도구/GitHubGitHub/pfalcon/scratchabit
Static AnalysisReverse EngineeringDebuggersBinary Analysis
GitHubpfalcon/scratchabit

ScratchABit

쉽게 재대상화 가능하고 해킹 가능한 대화형 디스어셈블러로, IDAPython 호환 플러그인 API를 제공합니다.

저장소 보기
4134845년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

ScratchABit

ScratchABit는 데이터/제어 흐름 분석 기능을 갖춘 대화형 증분식 디스어셈블러입니다. ScratchABit는 오픈소스 리버스 엔지니어링 커뮤니티의 노력에 전념합니다(벤더가 제대로 지원하지 않는 하드웨어에 대한 오픈소스 드라이버/펌웨어 생성, 하드웨어 및 소프트웨어 상호 운용성, 보안 연구를 위한 리버스 엔지니어링).

ScratchABit는 디스어셈블리/확장 모듈 작성을 위해 커뮤니티에서 잘 알려진 IDAPython API를 지원합니다.

ScratchABit는 진행 중인 작업이며, 필요에 따라 기능이 추가됩니다. 기여는 환영합니다.

ScratchABit는 GNU General Public License v3(GPLv3) 하에 배포됩니다.

요구 사항/선언문

  1. 난독화된 언어로 작성되지 않아야 합니다. 여기에는 너무 저수준인 언어, 초기화되지 않은 변수에 접근할 수 있는 언어, 변수와 함수/프로시저를 구분하지 않는 언어, 배열 인덱스를 임의의 숫자로 시작하는 언어 등이 포함됩니다. ScratchABit는 여러분의 즐거움과 정신 건강을 위해 Python(최신 버전, Python3)으로 작성되었습니다.

  2. 사용자 인터페이스 프레임워크는 필요한 수준의 사용자 상호작용을 허용해야 하며, 종속성, 블로트, 문제 및 프레임워크 버전 간 비호환성을 추가하지 않아야 합니다. ScratchABit는 현재 ANSI/VT100 터미널 이스케이프 시퀀스를 사용하는 간단한 전체 화면 텍스트 사용자 인터페이스를 사용합니다(네, curses 라이브러리조차 사용자에게 강제하기에는 너무 무거운 종속성으로 간주되었습니다).

  3. "데이터베이스"를 저장하기 위해 사용하기 쉬운 텍스트 형식을 활용하여 재사용 및 도구 작성을 용이하게 하고 버전 관리 시스템에 저장할 수 있도록 해야 합니다.

설치

ScratchABit를 사용하려면 Python3가 설치되어 있어야 하며(Python 3.3 ~ 3.7에서 테스트됨), VT100(최소) 또는 XTerm(권장) 터미널 또는 터미널 에뮬레이터가 필요합니다(모든 Unix 시스템이 호환되어야 함, 예: Linux/BSD 등, 자세한 내용은 아래 FAQ 참조).

다음을 사용하여 코드를 클론하세요:

root@kitploit:~
git clone --recursive https://github.com/pfalcon/ScratchABit

--recursive 없이 코드를 클론한 경우 ScratchABit 디렉터리에서 git submodule update --init을 실행하세요.

이제 ScratchABit는 Capstone Engine 기반 CPU 플러그인을 포함하여 여러 CPU 아키텍처에 대한 액세스를 제공합니다. 이를 사용하려면 최신 Capstone Python 바인딩 모듈을 설치해야 합니다(OS 배포판에서 제공하는 패키지보다는 종종 구식이므로 더 선호됨). 가장 쉬운 설치 방법은 Python 사용자 패키지 디렉터리에 설치하는 것입니다:

root@kitploit:~
pip3 install --no-cache-dir --user capstone

또는 ScratchABit 디렉터리 내 Python 가상 환경에 설치하는 방법도 있습니다:

root@kitploit:~
python3 -m venv .venv
source .venv/bin/activate
pip3 install --no-cache-dir capstone

ScratchABit로 작업하기 위해 새 터미널 세션을 열 때마다 source .venv/bin/activate 명령을 다시 실행하여 가상 환경을 활성화하세요.

위 방법이 모두 작동하지 않으면 capstone 패키지를 시스템 전체에 설치해 볼 수 있습니다(권장하지 않음):

root@kitploit:~
sudo pip3 install --system capstone

빠른 시작

자체 설명 실행 파일 형식(예: ELF)의 파일을 디스어셈블하려면 해당 파일을 ScratchABit.py의 인수로 전달하면 됩니다. 저장소에는 빠른 시작을 위해 다양한 아키텍처의 여러 example-*.elf 파일이 포함되어 있습니다. 예를 들어 x86 32비트 버전을 시도하려면:

root@kitploit:~
python3 ScratchABit.py example-x86_32.elf

또는 원시 바이너리 파일을 디스어셈블하려면 .def(정의) 파일을 생성하여 코드에 정의된 메모리 영역, 바이너리 파일을 로드할 주소 등을 지정해야 합니다. (참고: .def 파일은 .elf 및 유사 파일에도 유용할 수 있습니다.) 저장소에는 간단한 x86_64 원시 바이너리 코드와 해당 example-x86_64.def 파일이 포함되어 있습니다(사용 가능한 옵션에 대한 설명은 내부 참조):

root@kitploit:~
python3 ScratchABit.py example-x86_64.def

F9를 눌러 메뉴에 액세스하세요(XTerm 호환 터미널에서 마우스도 작동합니다). F1을 눌러 키 바인딩에 대한 도움말을 확인하세요(대부분의 작업은 메뉴를 통해서도 접근 가능). ScratchABit의 워크플로는 다른 대화형 디스어셈블러와 유사합니다(약간의 사전 경험이나 배경 지식이 도움이 될 수 있습니다).

플러그인 사용

IDAPython 프로세서 플러그인은 Python 모듈 경로의 어디에서나 로드할 수 있습니다. 또는 플러그인 .py 파일을 plugins/cpu/ 하위 디렉터리에 심볼릭 링크하거나 복사할 수 있습니다.

플러그인을 사용할 수 있게 만든 후, example-x86_64.def를 기반으로 cpu xxx 줄에 플러그인 모듈 이름(.py 확장자 제외)을 설정하는 새 정의 파일을 만드세요.

외부 플러그인을 사용하는 매우 간단한 예제는 ida-xtensa2 저장소의 xtensa.py 플러그인과 함께 작동하는 esp8266.def 파일을 참조하세요.

TODO/결정할 사항

  • 현재 "데이터베이스"에 여러 파일을 사용하며, 각 파일은 특정 유형의 정보를 저장합니다. 대신 단일 YAML 파일로 전환할까요?
  • 색상 추가(낮은 우선순위, (가벼운!) 패치 환영).
  • 편안한 작업을 위해 아직 구현해야 할 중요한 UI 명령 몇 가지. (가장 중요한 명령은 모두 있어야 하며, 다른 기능은 플러그인을 사용하여 구현할 것으로 예상됩니다.)
  • 수정된 경우 종료 시 DB 저장 제안.
  • DB 저장을 위한 Git 통합.
  • 견고성 향상(메인 루프 수준에서 예외 처리기 추가, 응용 프로그램 중단 대신 사용자에게 표시/기록 및 계속).
  • 코드 흐름 불일치(예: 명령어 내 - 의도한 사용에서 낮은 우선순위) 및 데이터 접근 불일치(예: 이전에 감지된 단어의 개별 바이트에 접근 - 더 높은 우선순위) 처리 시도. (1.4에서 개선됨.)
  • 프로세서 모듈 외에도 다른 유형의 IDAPython 플러그인을 지원하는 방법 살펴보기.
  • ELF(등) 파일에 있는 디버그 정보(예: DWARF)를 구문 분석하고 사용하기.

FAQ

Q: 어떤 프로세서/아키텍처가 지원되나요?

A: ScratchABit는 자체적으로 어떤 프로세서 아키텍처도 지원하지 않으며, IDAPython API 플러그인을 사용하여 완전히 재타겟팅이 가능합니다. 많은 플러그인을 사용할 수 있으며, 새 플러그인 작성은 쉽습니다. 사용자가 ScratchABit를 시험해 볼 수 있도록 내부적으로 Pymsasid 디스어셈블러를 사용하는 간단한 x86 프로세서 플러그인이 배포판에 포함되어 있습니다.

버전 2.0부터는 Capstone 플러그인도 포함되어 있어 x86, ARM, MIPS, PowerPC, SPARC 등을 포함한 여러 아키텍처에 액세스할 수 있습니다(아키텍처 지원은 사용자 테스트에 따라 점진적으로 활성화됩니다).

ScratchABit와 함께 제공되는 플러그인에 대한 자세한 내용은 plugins/cpu/ 디렉터리의 README를 참조하세요.

Q: 디버거?

A: ScratchABit는 정적 분석과 새로운 CPU 아키텍처의 쉬운 지원(새 CPU 플러그인을 Python으로 코딩하면 몇 시간 내에 초기 결과를 얻을 수 있음)에 전념합니다. 동적 분석은 핵심 기능으로 고려되지 않았으며 즉시 구현할 계획은 없습니다. 그러나 패치는 환영합니다.

Q: 디컴파일러?

A: 심층 프로그램 분석, 변환 및 디컴파일을 위한 관련 프로젝트인 ScratchABlock이 있습니다. ScratchABlock이 성숙해짐에 따라 일부 기능이 ScratchABit 내에서(아마도 플러그인을 통해) 제공될 것으로 예상됩니다.

Q: Linux를 사용하지 않습니다. 어떻게 ScratchABit를 실행할 수 있나요?

A: 시스템에 에뮬레이터/VM에 Linux를 설치하고 즐기세요.

Q: 필수 스크린샷?

A: 물론:

스크린샷

도구 다운로드