C プログラムで単純な ELF ファイルを操作する必要があります。外部ライブラリは使用できませんが、elf.h
.
ソースとして hello.o ファイルを見てみましょう:
int Hello() { return 3; }
Hello
ファイルしかない別のCプログラムにアクセスするにはどうすればよいhello.o
ですか?
mmap
おそらく、またはこのように sthを使用してメモリにロードする必要があります。最後に、非常に複雑な ELF ファイルを処理する必要がありますが、今はどうやって開始すればよいかわかりません。
更新:学習目的のため、説明したとおりにこれを行う必要があります。全体の問題は、私が説明したものよりも複雑です。
この質問では、メソッドを書く必要があると仮定します:
int HelloFromElfO(const char* helloFile);
でHello
実装された関数を実行しhelloFile
ます。
私は完全な答えを望んでいません。コードは必要ありません。何か始める必要があります。
ELF ファイル構造に関する基本的な知識はありますが、このようなパーサーや sth を使用せずに C でバイナリ ファイルを操作する方法がわかりません。
UPDATE2: OK、readelf のようなアプリは非常に複雑です。hello.o
だから多分私はこの方法を試してみてください:でメモリにマップしたとしましょうptr
。Hello
関数へのポインタを取得するにはどうすればよいですか?
から構造化データを取得するにはどうすればよいhello.o
ですか? つまり、純粋なバイトではなく、操作できるものです。