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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
goblin — impish, Rust로 작성된 크로스 플랫폼 바이너리 파싱 크레이트 | Kitploit
도구/GitHubGitHub/m4b/goblin
Reverse EngineeringFuzzingBinary Analysis
GitHubm4b/goblin

goblin

impish, Rust로 작성된 크로스 플랫폼 바이너리 파싱 크레이트

저장소 보기
1.5k2002개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

libgoblin

Actions crates.io version

올바른 말을 하세요

문서

https://docs.rs/goblin/

변경 로그

사용법

Goblin은 rustc 1.85.0 (Rust 2024 에디션)이 필요합니다.

Cargo.toml에 추가하세요

root@kitploit:~
[dependencies]
goblin = "0.10"

기능

  • 멋진 크레이트 이름
  • 제로-카피, 크로스-플랫폼, 엔디안 인식, ELF64/32 구현 - 와우!
  • 제로-카피, 크로스-플랫폼, 엔디안 인식, 32/64비트 Mach-o 파서 - 대단해!
  • PE 32/64비트 파서 - 빙!
  • Unix 및 BSD 스타일 아카이브 파서 (후자는 @willglynn 덕분) - 만세!
  • 많은 cfg 옵션 - 머리가 핑 돌고 소스 읽다가 화날 거예요!
  • 퍼징됨 - "기쁘게도 goblin이 1억 번의 퍼징 실행, 시드 1~100에 대해 각 100만 번 실행을 견뎠습니다." - @sanxiyn
  • 테스트

libgoblin은 바이너리 파싱, 로딩, 분석을 위한 원스톱 솔루션을 목표로 합니다.

사용 사례

libgoblin은 주로 다음과 같은 중요한 사용 사례를 지원합니다:

  1. 코어, std-프리 #[repr(C)] 구조체, 작은 컴파일 시간, 32/64 (또는 둘 다) 자유롭게.

  2. 타입 퍼닝. 한 타입에 함수를 정의하면 32비트 또는 64비트 변형에서 작동하도록 - 실제로 아무것도 변경하지 않고, 매크로도 없습니다! 기본 예제는 examples/automagic.rs를 참조하세요.

  3. std 모드. Pread와 Pwrite를 통한 읽기/쓰기 구현, 파일 읽기, 편의 할당, 추가 메서드 등을 제공합니다. 이는 할당이 가능하고 디스크에서 바이너리를 읽고자 하는 클라이언트를 위한 것입니다.

  4. Endian_fd. 정말 끔찍한 이름이죠 😆 이것은 panopticon이나 falcon과 같은 바이너리 분석에서 외부 엔디언의 바이너리를 읽어야 하거나, 크로스 플랫폼 외부 아키텍처 binutils를 구축하는 기반으로 사용됩니다. 예를 들어 cargo-sym과 bingrep이 간단한 예시이며, 가능성은 무한합니다.

이 크레이트로 할 수 있는 몇 가지 예시입니다 (구현을 도와서 완성할 수도 있습니다):

  1. 컴파일러를 작성하고 이를 사용하여 바이너리 생성 (모든 원시 C 구조체는 Pwrite에서 파생됨).
  2. 다양한 바이너리 형식을 로드, 파싱, 분석하는 바이너리 분석 도구를 작성하세요, 예: panopticon 또는 falcon.
  3. 반-기능적 동적 링커를 작성하세요.
  4. 커널을 작성하고 no_std cfg를 사용하여 바이너리를 로드하세요. 즉, 기본적으로 구조체와 상수 정의(C 헤더와 같음)만 있을 뿐 - fd도, 출력도, std도 없습니다.
  5. bin2json 도구를 작성하세요, 바이너리 형식이 JSON에 있으면 안 될 이유가 있나요?

Cfgs

libgoblin은 대규모로 구성 가능하도록 설계되었습니다. 현재 플래그는 다음과 같습니다:

  • elf64 - 64비트 ELF 바이너리, repr(C) 구조체 정의
  • elf32 - 32비트 ELF 바이너리, repr(C) 구조체 정의
  • mach64 - 64비트 mach-o repr(C) 구조체 정의
  • mach32 - 32비트 mach-o repr(C) 구조체 정의
  • pe32 - 32비트 PE repr(C) 구조체 정의
  • pe64 - 64비트 PE repr(C) 구조체 정의
  • te - Terse Executable (TE) repr(C) 구조체 정의
  • archive - Unix 아카이브 파서
  • endian_fd - 바이너리의 엔디언에 따라 파싱
  • std - no_std 환경을 허용

관리자

  1. PE: @kkent030315
  2. Elf: @m4b, 지원 가능
  3. Mach-o: @m4b, 지원 가능

관리자는 해당 백엔드에 대한 첫 번째 연락 리뷰어입니다. 이전 기여, 활동, 기본 지식, 그리고 우호적이고 사교적인 행동을 기준으로 선정됩니다 :D

현재 저(@m4b)만 모든 PR에 대한 병합 권한이 있습니다. 미래에는 해당 백엔드의 관리자도 병합 권한을 가질 가능성이 높습니다.

마지막으로, 저는 여전히 모든 PR에 대해 간략한 리뷰를 할 가능성이 높지만, 대부분/전적으로 해당 백엔드의 관리자에게 맡길 것입니다.

그리고 항상 Bill과 Ted의 지혜를 기억하세요: "서로에게 훌륭하게 행동하세요!"

기여자

모두 감사합니다 ❤️ !

사전순으로:

  • @000lbh
  • @2vg
  • @5225225
  • @alessandrod
  • @amanieu
  • @anfedotoff
  • @apalm
  • @baloo
  • @BinFlip
  • @burjui
  • @CalebFenton
  • @chf0x
  • @connorkuehl
  • @dancrossnyc
  • @DreydenGys
  • @dureuill
  • @Evian-Zhang
  • @ExPixel
  • @flanfly
  • @glandium
  • @glslang
  • @Gelbpunkt
  • @gunbux
  • @h33p
  • @hannahfluch
  • @Hexorg
  • @ibabushkin
  • @ideeockus

기여하기

명시적으로 달리 언급되지 않는 한, 귀하의 기여는 함께 제공되는 LICENSE 파일(MIT)에 설명된 대로 라이선스가 부여됨에 동의합니다.

  1. 커밋에는 영향을 받은 바이너리 구성 요소를 접두사로 붙여주세요; 더 구체적일수록 좋습니다. 예를 들어, elf 모듈에서 재배치만 수정했다면 "elf.reloc: Z80에 대한 새로운 상수 추가"와 같이 해주세요.
  2. 커밋 메시지는 변경 사항을 설명해야 하며, 일반적인 "변경됨" 또는 "수정"은 안 됩니다; 이런 식으로 PR에 커밋을 푸시하면 @m4b 또는 다른 사람이 스쿼시할 가능성이 높습니다.
  3. 모듈에 큰 변경을 가하려면 먼저 이슈를 제기하고 논의해주세요; 좋은 기술 방향이 아니라면 시간을 낭비하고 싶지 않습니다.
  4. PR이 주목받지 못하는 경우, PR에 제기된 모든 관련 의견에 응답하고, 여전히 응답이 없으면 GitHub에서 @m4b를 핑하고 이메일도 보내주세요.
  5. 새 기능을 추가하는 경우 테스트를 추가해주세요. 그렇지 않더라도 테스트를 추가하셔도 됩니다. 테스트는 멋지고 Rust에서 쉽습니다.
도구 다운로드
@ivlzme
  • @jackcmay
  • @jan-auer
  • @Javagedes
  • @jessehui
  • @jdub
  • @Jhynjhiruu
  • @johannst
  • @JohnScience
  • @joschock
  • @jrmuizel
  • @jsgf
  • @Jvlegod
  • @keith
  • @kjempelodott
  • @kkent030315
  • @ko1n
  • @le-jzr
  • @Lichtso
  • @lion128
  • @lissyx
  • @llogiq
  • @lumag
  • @lzutao
  • @lzybkr
  • @m-hilgendorf
  • @makubacki
  • @mmaekr
  • @m4b
  • @messense
  • @mitsuhiko
  • @mkroening
  • @mre
  • @Mrmaxmeier
  • n01e0
  • nathaniel-daniel
  • @nick96
  • @nico-abram
  • @npmccallum
  • @pchickey
  • @philipc
  • @PJB3005
  • @prettyroseslover
  • @Pzixel
  • @quake
  • @raindev
  • @RaitoBezarius
  • @ReturnRei
  • @rocallahan
  • @sanxiyn
  • @SAY-5
  • @skdltmxn
  • @sollyucko
  • @supervacuus
  • @Swatinem
  • @SweetVishnya
  • @SquareMan
  • @tathanhdinh
  • @Techno-coder
  • @tiann
  • @ticki
  • @Timmmm
  • @Tiwalun
  • @track-5
  • @tux3
  • @wickerwacka
  • @willglynn
  • @woodruffw
  • @wyxloading
  • @xcoldhandsx
  • @x0rb3l
  • @x64k