Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
r2gopclntabParser — Go 바이너리의 리버스 엔지니어링을 용이하게 하기 위해 gopclntab을 파싱하는 radare2 스크립트입니다. | Kitploit
도구/GitHubGitHub/asherdll/r2gopclntabparser
Static AnalysisReverse EngineeringDebuggersForensicsMalware AnalysisBinary Analysis
GitHubasherdll/r2gopclntabparser

r2gopclntabParser

Go 바이너리의 리버스 엔지니어링을 용이하게 하기 위해 gopclntab을 파싱하는 radare2 스크립트입니다.

저장소 보기
17225개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

r2gopclntabParser

참고: 이 기능은 gopc 분석 플러그인으로 radare2 코어에 직접 구현되었습니다.

완전히 스트립된(stripped) 바이너리를 포함한 Go 바이너리에서 함수 심볼을 복구하기 위한 radare2 기반 Go gopclntab 파서입니다. Go 버전 1.2, 1.16, 1.18, 1.20+의 ELF, Mach‑O, PE 바이너리를 지원합니다.

모든 Go 1.2+ 바이너리에는 gopclntab(Program Counter Line Table)이라는 데이터 영역이 내장되어 있으며, Go 런타임이 스택 트레이스, 패닉 메시지, 가비지 컬렉션, 디버거 지원에 사용합니다. 이는 Go 바이너리에서 가장 가치 있는 심볼 정보 소스 중 하나입니다.

r2gopclntabParser는 radare2를 통해 이 영역을 읽고, 버전별 구조를 파싱하여 복구된 함수 목록(주소, 소스 파일, 줄 번호 포함)을 출력하거나 복구된 이름을 함수 정의, 플래그, 코멘트로 radare2 세션에 다시 적용합니다.


목차

  • 전제 조건
  • 빠른 시작
  • CLI 참조
  • 출력 모드 및 예제
    • 기본 모드 (헤더 + 함수 목록)
    • 상세 모드 (-v)
    • 검색 모드 (-n)
    • JSON 출력 (--json)
    • 소스 파일 목록 (--files)
    • 적용 모드 (--apply)
  • 결과 요약: Mach‑O (스트립된 테스트 바이너리)
  • PE 테스트: Greenblood, Go 랜섬웨어 바이너리
  • 리버스 엔지니어링 활용 사례
  • 지원 플랫폼 및 Go 버전
  • 방법론
    • 섹션 위치 전략
    • textStart vs .text 섹션
    • 버전 인식 구조체 파싱
    • PC 데이터 디코딩
  • 제한 사항
  • 추가 문서
  • 참고 자료

전제 조건

의존성최소 버전
Python 33.8+
radare25.0+ (6.0.9에서 테스트 완료)
r2pipe모든 버전

다른 Python 패키지는 필요하지 않습니다. 스크립트는 표준 라이브러리(struct, json, argparse, os, sys)와 r2pipe만 사용합니다.


빠른 시작```bash

List all functions recovered from a Go binary

python3 r2_gopclntab.py -f ./mybinary -l

Search for a specific function (substring match)

python3 r2_gopclntab.py -f ./mybinary -n main.main

Verbose header + function list

python3 r2_gopclntab.py -f ./mybinary -v -l

Apply recovered names into an r2 session

python3 r2_gopclntab.py -f ./mybinary --apply

JSON output

python3 r2_gopclntab.py -f ./mybinary --json

From within r2 (attach to running session)

#!pipe python3 r2_gopclntab.py --r2pipe --apply -v

## CLI 참조```
usage: r2_gopclntab.py [-h] [-f FILE] [-n FUNCNAME] [-v] [-l]
                       [--apply] [--json] [--files] [--r2pipe]

필수 (하나 선택)

플래그설명
-f FILE, --file FILE분석할 Go 바이너리 파일의 경로입니다. 스크립트가 자체 r2 인스턴스를 생성합니다.
--r2pipe이미 실행 중인 r2 세션에 연결합니다 (r2 콘솔 내에서 사용).

선택 사항

플래그설명
-l, --list복구된 모든 함수와 해당 주소를 출력합니다.
-n NAME, --funcname NAME이름에 NAME을 포함하는 함수만 출력합니다 (부분 문자열 일치). 정확히 일치하는 이름이 있으면 해당 주소가 별도로 출력됩니다.
-v, --verbose진행 메시지, 구문 분석된 헤더 필드 및 내부 오프셋을 출력합니다.
--apply복구된 함수 이름을 radare2 세션에 함수 정의(af+), go. 플래그스페이스 플래그, 원래 Go 이름 및 소스 위치가 포함된 주석으로 기록합니다.
--json헤더와 전체 함수 목록을 JSON 형식으로 표준 출력에 출력합니다.
--files파일 테이블에서 추출된 소스 파일 경로 목록을 출력합니다.
-h, --help도움말 메시지를 표시합니다.

플래그는 자유롭게 조합할 수 있습니다. 출력 플래그가 지정되지 않은 경우 기본 동작은 헤더와 전체 함수 목록을 출력하는 것입니다.


출력 모드 및 예제

아래의 모든 예제는 스트립된 Go 1.26 Mach-O arm64 바이너리(-ldflags="-s -w"로 빌드됨)를 대상으로 실행되었습니다. 테스트 프로그램은 main.main, main.fibonacci, main.helloWorld, main.addNumbers를 정의합니다. 컴파일러가 helloWorld와 addNumbers를 인라인화했으므로 gopclntab에 나타나지 않습니다.

기본 모드 (헤더 + 함수 목록)

플래그 없이(또는 -f만 사용하여) 실행하면 구문 분석된 헤더 다음에 전체 함수 테이블이 출력됩니다.``` $ python3 r2_gopclntab.py -f ./gotest_stripped

puf - 🎃 URL 및 셸코드 난독화 도구

# 🎃 P.U.F

## 겉은 금과 옥, 속은 헌 솜

P.U.F (P.U.F) 는 강력한 URL 및 셸코드 난독화 도구입니다. 다양한 고급 알고리즘을 사용하여 사람이 읽을 수 있으면서도 파악하기 어려운 난독화된 URL과 셸코드를 생성합니다.

## Features

- **Double Obfuscation U**: 이중 난독화로 은닉성을 향상시킵니다.
- **Randomness Obfuscation D**: 랜덤화 처리를 통해 공격 시그니처를 예측할 수 없게 만듭니다.
- **Multiple Encodings E**: URL 인코딩, Base64 등 다양한 인코딩 방식을 통합했습니다.
- **Highly Deceptive R**: 매우 기만적인 시각적 외관을 생성합니다.
- **Multi-Platform Adaptability**: Windows, Linux, macOS 등 다양한 환경을 지원합니다.
- **Extensive Protocol Compatibility**: HTTP, HTTPS, FTP 등 여러 프로토콜을 지원합니다.
- **Code as Art**: 난독화 결과를 일반 파일 내용으로 위장할 수 있으며, 시각적 효과는 추상 미술 작품과 같습니다.
- **Customizable Compression**: 난독화 결과를 ZIP, TAR.GZ 등의 형식으로 압축할 수 있습니다.
- **Dual Execution**: 역방향 셸코드 주입과 메모리 수준에서 기존 프로세스와의 상호 작용 제어를 지원합니다.
- **Interactive Shell Interface**: 직관적인 명령줄 셸 인터페이스를 제공합니다.

## 설치

```bash
git clone https://github.com/hvck2vj2/puf
cd puf
pip install -r requirements.txt
sudo mv puf.py /usr/local/bin/puf
puf

사용법

P.U.F 시작:

puf

============================================================ Go pclntab Header

Magic: 0xFFFFFFF1 Go version: 1.20+ Pointer size: 8 Min LC (quantum):4 Num functions: 2030 Num files: 261 funcnameOffset: 0x48 cuOffset: 0x14D20 filetabOffset: 0x158D8 pctabOffset: 0x19A98 pclnOffset: 0x55E40

ADDRESS FUNCTION NAME

0x100001000 go:buildid 0x100001070 internal/abi.BoundsDecode (/opt/homebrew/Cellar/go/1.26.1/libexec/src/internal/abi/bounds.go:86) 0x100001150 internal/abi.NoEscape (/opt/homebrew/Cellar/go/1.26.1/libexec/src/internal/abi/escape.go:19) 0x100001160 internal/abi.Kind.String (/opt/homebrew/Cellar/go/1.26.1/libexec/src/internal/abi/type.go:143) 0x1000011E0 internal/abi.TypeOf (/opt/homebrew/Cellar/go/1.26.1/libexec/src/internal/abi/type.go:181) 0x1000011F0 internal/abi.(*Type).ExportedMethods (/opt/homebrew/Cellar/go/1.26.1/libexec/src/internal/abi/type.go:453) ... 0x1000A0BB0 main.fibonacci (/tmp/gotest/main.go:13) 0x1000A0C20 main.main (/tmp/gotest/main.go:20) 0x1000A0D20 go:textfipsstart 0x1000A0D30 go:textfipsend

[+] 2030 function(s) shown

### 상세 모드 (-v)

섹션 스캔 진행률, textStart 해상도 세부 정보 및 내부 오프셋 정보를 추가합니다:```
$ python3 r2_gopclntab.py -f ./gotest_stripped -v

Please provide the Markdown content to translate.``` [] Running radare2 analysis... [] Binary format: mach0, endian: little, arch: arm, bits: 64 [] Scanning binary for gopclntab magic bytes... [] Scanning section '0.__TEXT.__text' (0x100001000, 0x9FD44)... [] Scanning section '1.__TEXT.__symbol_stub1' (0x1000A0D60, 0x2B8)... [] Scanning section '2.__TEXT.__rodata' (0x1000A1020, 0xACC2)... [] Scanning section '3.__TEXT.__gopclntab' (0x1000ABCE8, 0xA48AE)... [] Found magic at vaddr=0x1000ABCE8 [] Parsed header: PcHeader(magic=0xFFFFFFF1, version=1.20+, ptrSize=8, minLC=4, nfunc=2030, nfiles=261, textStart=0x0) [] textStart is 0, using .text section vaddr: 0x100001000 [*] Parsed 2030 functions

============================================================ Go pclntab Header

Magic: 0xFFFFFFF1 Go version: 1.20+ ...

### Search Mode (-n)

함수 목록을 부분 문자열 일치로 필터링합니다. 정확히 일치하는 항목이 있으면 해당
주소가 별도로 출력됩니다.

`main.`을 포함하는 모든 함수에 대한 부분 문자열 검색:```
$ python3 r2_gopclntab.py -f ./gotest_stripped -n "main."

and our community. We are truly humbled by your support, enthusiasm, and contributions.

⚠️ Important Notes

🔒 Security

  • 보안을 중요하게 생각합니다. 보안 관련 문제가 있을 경우, 보안 정책을 참조하거나 직접 문의해 주세요.
  • 취약점이 해결되기 전에 공개적으로 공개하지 마십시오.

📝 Versioning

  • 이 프로젝트는 Semantic Versioning (SemVer)를 따릅니다.
  • 주요 버전 릴리스에서는 호환성이 깨지는 변경이 있을 수 있습니다.

💬 Feedback

  • 피드백과 제안은 언제나 환영합니다! 이슈를 열거나 토론을 시작해 주세요.
  • 자세한 내용은 기여 가이드라인을 확인하세요.

📚 Documentation

전체 문서, 예제 및 고급 사용법은 위키를 방문해 주세요.

🤝 Contributing

모든 분들의 기여를 환영합니다! 자세한 내용은 기여 가이드를 참조해 주세요. 버그 신고, 기능 제안, 풀 리퀘스트 제출 등 여러분의 도움에 감사드립니다.

도구 다운로드