https://github.com/umaumax/ldhookgen
https://github.com/umaumax/ldhookgen
asm cpp ld-preload tracer
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/umaumax/ldhookgen
- Owner: umaumax
- Created: 2020-06-20T08:29:22.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2020-06-24T13:40:49.000Z (over 5 years ago)
- Last Synced: 2025-05-25T12:12:46.132Z (4 months ago)
- Topics: asm, cpp, ld-preload, tracer
- Language: C++
- Size: 11.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ldhookgen
auto generator functions for hook by `LD_PRELOAD`
you can generate functions from only symbol names (without arg infos)
for `x86_64` only
## how to build
run build command at test directory
```
cp test/libtrace_test .
./auto_gen.sh
```## how to run
```
LD_LIBRARY_PATH=. ./libtrace_test
LD_LIBRARY_PATH=. LD_PRELOAD=./libauto_gen.so ./libtrace_test
```## 開発のステップ
* `test`のディレクトリで手動でプログラムを変更して検証し,OKと判断したら,テンプレートの方にそれを反映し,自動生成できるようにする## memo
* `nm`でシンボル情報が取れない場合は`objdump -R`でシンボル情報がとれる## TODO
* post call hook対応
* フックした関数の実行時間取得
* ログ出力
* 関数呼び出しのindent
* TID
* シンボルの変数と関数の区別をする方法の調査## ltraceとの比較
* `ltrace`では`LD_PRELOAD`ではなく`ptrace`を利用しているため仕組みが異なる
* `plt`を利用しないバインド方法では`ltrace`ではトレースができない(e.g. rustバイナリの`malloc`)
* `ltrace`コマンドが存在しない環境でも利用可能