質問

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

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

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

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

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

upd まあ、ELFをロードする問題は、それについての良い知識を必要とするようです(ため息)ので、私はいくつかの仕様とマニュアルを読みに出かけています。そして、私はバイオニック/リンカーとlibelfshに固執すると思います。みんなありがとう!

要約された調査結果:

役に立ちましたか?

解決

クイック apt-cache search 提案します libelf1, libelfg0 および/または libelfsh0. 。私は思います elfsh プログラム(同名のパッケージ)は、使用方法の興味深い実用的な例かもしれません libelfsh0.

私は自分で試したことはありませんが、彼らが助けになることを願っています。幸運を :-)

他のヒント

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

を見てみましょう libelf 実行可能な形式を読むため。あなたはこれに問題があると思います。

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

ARMにNXビットに相当するものがあるかどうかはわかりませんが、チェックする価値があります。

このツールには、エルフローダーが含まれています。 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リンクを投稿させないので、どうやらこれらのリンクを破らなければなりません!)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top