MyUtils

View on GitHub

ランタイム Hack

  1. プログラムが main()に辿り着くまで
  2. 共有ライブラリを差し替える(LD_PRELOAD)
  3. trace 機能
  4. プログラムの起動高速化
  5. 実行中のプロセスにパッチを当てる

  6. 特定のプロセスに見せるファイルを置き換える

プログラムが main()に辿り着くまで


共有ライブラリを差し替える(LD_PRELOAD)

LD系機能まとめ

//NOTE: 以下のようにすることで、共有ライブラリを指定できる
LD_PRELOAD=./libHoge.so  fuga.exe 

unwind についてまとめる

trace 機能

実行中のプロセスにパッチを当てる



特定のプロセスに見せるファイルを置き換える

以下コマンドで置き換え先にアクセスした時に、置き換え元にアクセスされる これとネームスペースを使うことで、特定のプロセスに対してのみ見せるファイルを置き換えられる (🚨システム全体に反映されることに注意)

# 特定のファイルを置き換えて見せる
sudo mount -bind "置き換え元ファイルパス" "置き換え先ファイルパス"

# 再起動 or 以下で戻せる
sudo unmount "置き換え先ファイルパス"

🌟特定のプロセスでのみ置き換える場合は以下 unshareコマンドを用いることでマウントネームスペースを作成することができる。

# 例 以下のようにすることで、$USERに指定してコマンドが実行できる
sudo unshare -m sudo -u $USER /bin/bash 

# さらにバインドで、上記で実行したbash内で置き換えられることになり、bashを抜蹴る際にマウントが解除される。
# 内部的にさらにプロセスを立ち上げても置き換えられた状態が継続する。
sudo mount -bind "置き換え元ファイルパス" "置き換え先ファイルパス"