lldを読む
- 構成がシンプル
- RELROの実装はどうなっているか?
- とりあえず $ rg RELRO
- Writer.cpp: isRelroSection() – コメントが親切というかコードより多い – 関数シンボルをlazyで読み込まない(実行前に読み込む)なら.got.pltにもRELROつけますよー、みたいな – .fini_arrayなどにも付く
- Writer.cpp: finalizeSections() セクションに中身を入れる – RISC-Vのgpのデフォルトは.sdata + 0x800だが、gpを+/- 2KiBの範囲で任意の値にできる(12bit即値で指定できるため) — そして__global_pointer$というシンボルで見つけられる ?
-
GOT, PLTはどこで作られるのか?
- AArch64ErrataFix.h: class AArch64Err843419Patcher
Backlinks
SecHack365
SecHack365は学生(と社会人)が、1年間指導を受けながらセキュリティに関連したり関連しなかったりするテーマで何かをつくる長期ハッカソン。無料で、交通費も全部出る。筆者は2018年度に、「ライブラリ・リンカ・ローダ・コンパイラetcを連携させたセキュリティ機能の開発」というテーマで参加した。