Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
r2gopclntabParser — Goバイナリのリバースエンジニアリングを支援するために、gopclntabを解析するradare2スクリプトです。 | Kitploit
ツール/GitHubGitHub/asherdll/r2gopclntabparser
静的分析リバースエンジニアリングデバッガフォレンジックマルウェア分析バイナリ解析
GitHubasherdll/r2gopclntabparser

r2gopclntabParser

Goバイナリのリバースエンジニアリングを支援するために、gopclntabを解析するradare2スクリプトです。

リポジトリを見る
17215ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

r2gopclntabParser

注意: この機能は radare2 のコアに直接実装され、gopc analysis plugin として提供されています。

radare2ベースのGo gopclntab パーサーで、完全にストリップされたものを含むGoバイナリから関数シンボルを復元します。ELF、Mach-O、PEバイナリをサポートし、Goバージョン1.2、1.16、1.18、1.20+に対応しています。

Go 1.2以降のすべてのバイナリには、gopclntab(Program Counter Line Table)と呼ばれるデータ領域が埋め込まれており、Goランタイムがスタックトレース、パニックメッセージ、ガベージコレクション、デバッガサポートに使用します。これはGoバイナリにおける最も貴重なシンボル情報源の1つです。

r2gopclntabParserは、radare2を介してこの領域を読み取り、バージョン固有の構造を解析し、復元された関数リスト(アドレス、ソースファイル、行番号を含む)を表示するか、復元された名前を関数定義、フラグ、コメントとして開いているradare2セッションに適用します。


目次

  • 前提条件
  • クイックスタート
  • CLIリファレンス
  • 出力モードと例
    • デフォルトモード (ヘッダー + 関数リスト)
    • 冗長モード (-v)
    • 検索モード (-n)
    • JSON出力 (--json)
    • ソースファイル一覧 (--files)
    • 適用モード (--apply)
  • 結果概要: Mach-O (ストリップされたテストバイナリ)
  • PEテスト: Greenblood(Goランサムウェアバイナリ)
  • リバースエンジニアリングのユースケース
  • 対応プラットフォームとGoバージョン
  • 手法
    • セクション特定戦略
    • textStart と .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としてstdoutに出力します。
--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

(このチャンクは空です。翻訳するテキストがありません。)```
============================================================
  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

| DetectorChecker | マルウェアやステガノグラフィを検出するための強力なツールを提供します。 | | PulseDive | オープンソースの脅威インテリジェンスプラットフォームです。 |

[*] 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+
  ...
```
### 検索モード (-n)

関数リストを部分文字列一致でフィルタリングします。完全一致が存在する場合、そのアドレスが別途表示されます。

部分文字列検索で `main.` を含むすべての関数:```
$ python3 r2_gopclntab.py -f ./gotest_stripped -n "main."
```
インストール方法
以下のコマンドでインストールできます:

```
yum install -y feroxbuster
```

またはDockerを使用:

```
docker pull feroxbuster/feroxbuster

ADDRESS FUNCTION NAME

0x100041920 runtime.main.func2 (/opt/homebrew/Cellar/go/1.26.1/libexec/src/runtime/proc.go:207) 0x10006CE30 runtime.main.func1 (/opt/homebrew/Cellar/go/1.26.1/libexec/src/runtime/proc.go:174) 0x1000A0BB0 main.fibonacci (/tmp/gotest/main.go:13) 0x1000A0C20 main.main (/tmp/gotest/main.go:20)

[+] 4 function(s) shown (filtered from 2030 total)

完全一致検索:```
$ python3 r2_gopclntab.py -f ./gotest_stripped -n "main.fibonacci"

リソース説明: このリソースはセキュリティ状況を調査し、重大な脆弱性を特定し、特定の設定ミスやCVE IDに対する概念実証を示します。適切なセキュリティ構成の重要性を強調し、セキュリティ原則の理解を検証する役割を果たします。

シナリオは現実的: ラボ環境は、実際のペネトレーションテスト業務で遭遇する実世界の構成、ネットワーク、脆弱性を反映するように設計されています。

チャレンジを求める方: このラボは単なるウォークスルーにとどまらず、スキル、批判的思考、問題解決能力を必要とすることを目指しています。

学ぶことがある: クライアントが意図的にサービスを誤設定し、バイパスされるセキュリティ機構を設定しているため、ラボではポストエクスプロイテーションの機会が提供されます。

リソース

用語集

ツールをダウンロード