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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
go_parser — IDAPro용 또 다른 Golang 바이너리 파서 | Kitploit
도구/GitHubGitHub/0xjiayu/go_parser
Reverse EngineeringDebuggersMalware AnalysisBinary Analysis
GitHub0xjiayu/go_parser

go_parser

IDAPro용 또 다른 Golang 바이너리 파서

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

IDAPro를 위한 또 다른 Golang 바이너리 파서

영어 | 중국어


참고:

현재 최신 master 브랜치는 Python3 버전입니다. 이전 master 브랜치는 py2 브랜치로 변경되었으며 임시로 유지보수되지 않습니다.

Python3 브랜치 사용법

이 버전은 macOS/Windows, IDA7.4+ 및 Python3.8.x에서 개발 및 테스트되었습니다. 다른 플랫폼이나 버전에서 문제가 발생하면 이슈나 Pull Request를 제출해 주세요.

또한 macOS의 IDA7.4는 기본적으로 설치된 Python3를 사용하므로, 사용자가 설치한 타사 라이브러리가 로드되지 않을 수 있습니다. brew로 설치된 Python으로 전환해야 합니다. 구체적인 전환 방법은 이 스크립트를 참조하세요.


golang_loader_assist와 jeb-golang-analyzer에서 영감을 받아 IDAPro용 보다 완전한 Go 바이너리 파싱 도구를 작성했습니다.

주요 기능:

  1. Go 바이너리 파일에서 firstmoduledata 구조를 찾아 파싱하고 각 필드에 주석을 추가합니다;
  2. firstmoduledata를 기반으로 pclntab(PC 라인 테이블)을 찾아 파싱합니다. 그런 다음 pclntab에서 함수 이름과 소스 파일 경로를 찾아 파싱하고 복구합니다. 소스 파일 경로는 IDAPro의 출력 창에 출력됩니다;
  3. 문자열과 문자열 포인터를 파싱하고 각 문자열에 주석을 추가하며 각 문자열 포인터에 dref를 생성합니다;
  4. firstmoduledata를 기반으로 각 type을 찾아 파싱하고, 각 type의 속성에 주석을 추가합니다. 이는 맬웨어 연구자가 복잡한 타입이나 데이터 구조 정의를 분석하는 데 매우 편리합니다;
  5. itab(인터페이스 테이블)을 파싱합니다.

Go 바이너리 리버스 엔지니어링에 유용한 정보:

또한 go_parser에는 두 가지 유용한 기능이 있습니다:

  1. 파일 헤더 정보가 잘못된 바이너리, 특히 잘못된 섹션 헤더 정보가 있는 바이너리에서도 잘 작동합니다;
  2. 위의 모든 기능은 buildmode=pie로 빌드된 바이너리에서도 유효합니다.

DDGMiner v5029 (MD5: 95199e8f1ab987cd8179a60834644663)의 설정 데이터 구조 파싱 결과는 다음과 같습니다:

사용자 정의 소스 파일 경로 목록:

프로젝트 파일:

  • go_parser.py: 진입 파일, [Alt+F7] 을 누르고 이 파일을 선택하여 실행합니다;
  • common.py: 공통 변수 및 함수 정의;
  • pclntbl.py: pclntab(PC 라인 테이블) 파싱;
  • strings.py: 문자열 및 문자열 포인터 파싱;
  • moduldata.py: firstmoduledata 파싱;
  • types_builder.py: types 파싱;
  • itab.py: itab(인터페이스 테이블) 파싱;

또한 str_ptr.py는 문자열 포인터의 시작 주소와 끝 주소를 수동으로 지정하여 문자열 포인터를 파싱합니다.

참고

  1. 이 도구는 Python3로 작성되었으며 IDA7.4+에서 테스트되었습니다;
  2. 문자열 파싱 모듈은 golang_loader_assist에서 가져왔으며, 문자열 포인터 파싱 기능을 추가했습니다. 현재는 x86(32비트 및 64비트) 아키텍처만 지원합니다.

참고 자료

  1. Golang 실행 파일 분석
  2. 프로처럼 GO 바이너리 리버싱
  3. Go 바이너리에서 프로그램 의미 재구성.pdf
  4. Go二进制文件逆向分析从基础到进阶——综述
  5. Go二进制文件逆向分析从基础到进阶——MetaInfo、函数符号和源码文件路径列表
  6. Go二进制文件逆向分析从基础到进阶——数据类型
  7. Go二进制文件逆向分析从基础到进阶——itab与strings
  8. Go二进制文件逆向分析从基础到进阶——Tips与实战案例
도구 다운로드