動的リンク、遅延バインドについて
遅延バインドについて
@plt一行目 : jmp (.got.pltを参照するアドレス)
@plt二行目 : push (.rel.pltの中の書き換えが必要な行数)
@plt三行目 : jmp (.pltセクションの先頭)
.pltセクション一行目 : push (動的リンクの際に必要なパラメータ)
.pltセクション二行目 : jmp (動的リンカのアドレス)
ELFのセクションについて
たぶんこんな感じなんだと思う。たぶん。
ELFヘッダ : MagicNumber, bit, エンディアン, CPU, 後続のヘッダへのポインタ
プログラムヘッダ : ローダのための情報。つまりセグメントの情報と動的リンク関係が格納。
.interp : インタープリタのファイルパスが格納
.hash : ハッシュ値とシンボルアドレスのハッシュテーブル。
.dynsym : .hashでハッシュ化されたシンボル名(ハッシュ値)とシンボル情報(シンボルアドレスやシンボル名など)のテーブル。
.dynstr : .dynsymから参照したシンボル名が格納。.dynamicから参照した共有ライブラリのファイル名が格納。
.rel.plt : 動的リンクのために書き換えが必要なアドレス(.plt一行目のアドレス)とシンボル情報のリスト。
.plt : .textから共有ライブラリ内の関数へ飛ぶ際の中継点。
.text : 機械語コードが格納。
.dynamic : 動的リンクに必要な情報が格納。共有ライブラリの名前や.hashのアドレス、.dynstrのアドレス、.dynstrのサイズなどなど。
.got.plt : .plt一行目のjmp先のアドレス(書き換え先アドレス)と共有ライブラリ内の関数のアドレス(書き換えアドレス)のテーブル
.shstrtab : セクション名の文字列リスト。
セクションヘッダ : セクションの情報が格納。
"sudo vim" is detected. This feature is disabled.
rmで削除してしまったファイルの復元方法(ext3/ext4)
ext4magicを用いる。
# apt-get -y install ext4magic
# cd ~/Downloads
# mkdir ext4magic
# cd ext4magic
# wget http://downloads.sourceforge.net/project/ext4magic/ext4magic-0.3.2.tar.gz
# tar xzvf ext4magic-0.3.2.tar.gz
# cd ext4magic-0.3.2
# ./configure
以上でext4magicの導入完了
# df -hT
削除してしまったファイルが存在するファイルシステムを確認
# cd [削除してしまったファイルが存在するファイルシステム以外のファイルシステムのパス]
# ext4magic [削除してしまったファイルが存在するファイルシステム名] -l | grep [削除してしまったファイルのパスまたはファイル名]
# ext4magic [削除してしまったファイルが存在するファイルシステム名] -L | grep [削除してしまったファイルのパスまたはファイル名]
以上でリストに出力されれば、復元可能である。
# ext4magic [削除してしまったファイルが存在するファイルシステム名] -r -f [削除してしまったファイルのパス(リストに出力されたパス)]
これで、カレントディレクトリに作成されたRECOVERDIRの中に復元されている。
Enjoy!