12

私はかなり珍しいことをする必要があります: elf 実行可能ファイルを手動で実行します。つまり、すべてのセクションを適切な場所にロードし、main() を照会して呼び出します (その後、クリーンアップします)。実行可能ファイルは静的にリンクされるため、ライブラリをリンクする必要はありません。ベースアドレスも管理しているので競合の心配はありません。

それで、そのためのライブラリはありますか?

OSKit とその liboskit_exec を見つけましたが、プロジェクトは 2002 年以来死んでいるようです。

プロジェクトの一部を取り (もちろんライセンスを尊重して)、自分のニーズに合わせて調整することは問題ありませんが、私は Linux の世界では初心者なので、それらの部分がどこにあるかさえ知りません! :)

PS。ARMプラットフォームにはそれが必要です。

UPDうーん、elfs をロードするという問題は、それについての十分な知識が必要なようです (ため息)。それで、仕様書とマニュアルを読みに行きます。そして、bionic/linker と libelfsh に固執すると思います。みんなありがとう!

要約された調査結果:

4

4 に答える 4

2

簡単なapt-cache search提案libelf1libelfg0および/またはlibelfsh0elfshこのプログラム(名前の由来のパッケージ)は、の使い方の興味深い実用的な例かもしれないと思いますlibelfsh0

自分で試したことはありませんが、お役に立てば幸いです。幸運を :-)

于 2009-11-23T17:05:14.907 に答える
1

「バイオニック」な libc 実装の Google の Android には、完全に再実装された ELF ローダーがあります。それはかなりきれいで、単純なものを探しているなら、おそらく gilbc よりも優れたソースです。

于 2009-11-23T19:13:45.130 に答える
0

実行可能形式を読み取るには、libelfを参照してください。あなたはこれで問題を起こすだろうと私は思います。

ライブラリは何も必要ないので、実行可能ファイルをmmapして、さまざまなメモリ領域とjmp / bに関するデータを設定してみませんか?

ARMに同等のNXビットがあるかどうかはわかりませんが、確認する価値があります。

于 2009-11-23T17:05:25.887 に答える
0

このツールには ELF ローダーが含まれています: http://bitwagon.com/rtldi/rtldi.html

別のプロジェクトの ELF チェーンローダーの rtldi のコードを再利用しました。コードはここにあります:http://svn.gna.org/viewcvs/plash/trunk/chroot-jail/elf-chainloader/?rev=877そしてここにいくつかの背景があります: http://plash.beasts.org/wiki/Story16. (どうやら、stackoverflow では 1 つ以上のリンクを投稿できないため、これらのリンクを切断する必要があるようです!)

于 2009-11-27T18:43:51.823 に答える