Upgrade to Pro — share decks privately, control downloads, hide ads and more …

関数の挙動書き換える

Avatar for takato fukui takato fukui
November 19, 2025

 関数の挙動書き換える

Avatar for takato fukui

takato fukui

November 19, 2025
Tweet

More Decks by takato fukui

Other Decks in Programming

Transcript

  1. ⚙環境 • Go 1.25.4 • arm64 • Ubuntu 25.05(Lima) •

    各ライブラリは最新のものを使用 ⚠ • 通常のアプリケーションでの実用性なし • 内容に誤ってる可能性あり • 適切なエラーハンドリングはしていない
  2. 🧱前提: 関数値(function value)の実体 2 1 配列 ptr len = 2

    cap = 4 0x4000010080 refs. スライスの場合 0x400000e048 8B 8B 8B ↓ 24B
  3. 🧱前提: 関数値(function value)の実体 出典: "Computer Systems: A Programmer's Perspective" Figure

    7.13 00 ptr 0xa4b80 0x400009c030 00 機械語 ELFのレイアウト 機械語はtextセクションに入る ので低位アドレスになる
  4. 🚀 / 2. 元の機械語を表示 アドレス 値 0xa4b80 00 0xa4b81 00

    0xa4b82 01 0xa4b83 8b … … メモリイメージ
  5. 🚀 / 3. 機械語があるページを書き込めるようにする XX XX 1ページ ptr len =

    4096 cap = 4096 0xa4000 XX … foo関数(0xa4b80)の機械語が含まれる 変数pageSliceのイメージ pageSlice
  6. ☢関数弄る系ライブラリ / agiledragon/gomonkey 00 0xXXXXX 00 機械語 YY 0xXXXXX YY

    機械語 ジャンプするコードに置 き換える XX … 仕組み 関数foo パッチする関数 ZZ ZZ