ELFファイルのグローバル構造を変更したいと思います。 まず、グローバル変数が構造体であるかどうかを知りたいですか? しかし、私が知る唯一の情報は、変数の名前とサイズです。ELFファイルで変数の型を見つける方法は?
0
A
答えて
5
あなたはそれを見つけることができません。 ELF形式のタイプ情報は非常に限定されています(一部のグローバル変数がstruct
またはint
であるかどうかはわかりませんが、変数はほとんどがsizeof
です)。 elf(5)を参照してください。
ただし、デバッグサポート(例:g++ -Wall -g
)のためにプログラム(および使用しているライブラリ)をコンパイルする場合。 ELFファイルには、多くの場合、DWARF形式を使用する追加のデバッグセクションが含まれています。これらの情報は、strip
コマンドを使用してELFファイルから削除できます。だからstrip(1) & readelf(1) & objdump(1)を参照してください。
実際にはsource codeを使用します。したがって、プログラムのソースを入手してください(Linuxは主にfree softwareで作られているので、これは一般的に可能です)。そしてそれを再コンパイルします(もちろん、プログラムのソースコードを調べてください)。コンパイラをカスタマイズするには(たとえば、独自のGCCプラグインを作成するか、GCC MELTを使用するか、Clangコンパイラをカスタマイズするなど)、コードを再コンパイルするために使用したいと思うかもしれません(そして、すべてのグローバル変数宣言)。
関連する問題
- 1. 変数を見つける方法は配列の型です
- 2. Javaを使用してファイルから整数の型を見つける方法
- 3. ファイルをクリアケースで見つける方法
- 4. 型の変数に型をつける
- 5. グローバル(ish)変数のソースを見つける方法は?
- 6. Djangoで未使用のテンプレート変数を見つける方法
- 7. Emacs:その値で変数を見つける方法?
- 8. Drupal 7でビューフィールドの変数名を見つける方法
- 9. Javascriptでグローバル変数を見つける最良の方法
- 10. オブジェクトの祖先の型を見つける方法は?
- 11. インスペクタからパブリック変数を見つける方法は?
- 12. Emacs diredでは、複数のファイルを見つける/訪れる方法は?
- 13. 複数のファイルの違いを見つける方法
- 14. Pythonで数値の素因数を見つける方法は?
- 15. GAEでのpythonファイルのパスを見つける方法は?
- 16. 変数の特定の領域を見つける方法AS3
- 17. 2つのコンポーネントpickerViewで両方の変数を見つける
- 18. Node.jsでファイルのサイズを見つける方法は?
- 19. Laravelアプリケーションで特定のファイルを見つける方法は?
- 20. 最近gitでファイルのコミッターを見つける方法は?
- 21. サブディレクトリで最大のファイルを見つける方法は?
- 22. 変数の最大値を見つける方法
- 23. strings.xmlのstring-arrayから変数名を見つける方法
- 24. extern変数のリンクパスを見つける方法
- 25. 文字列中のregexpを見つけて変数につける方法
- 26. Python変数を所有するクラスを見つける方法
- 27. Kotlin - 型で要素を見つけてキャストする方法
- 28. スカラー型でスーパータイプを見つける方法
- 29. elfファイルで、変数が定義されているコンパイル単位を見つける方法を教えてください。
- 30. 素数を見つける方法
タイプの詳細はデバッグ情報にのみ格納されます。プログラムが他の方法で実行されているときは情報は必要ありません。あなたが何をしているのかは間違っているようです - 失敗が予想されます。構造体を使用するコードは、ソースのコンパイル時に使用された構造体の形状/サイズに密接に関連しています。これを変更すると、プログラムが誤動作します。 –
ELFファイルには「変数」や「タイプ」はありません。これらはソースコードの概念です。 ELFファイルには、単にデータの先頭を指すバルクデータとシンボルがあります。あなたが好きなら、すべてのelfファイルは 'char []'と 'void *'です。 –
なぜあなたは尋ねていますか?あなたの質問は不明です(ELF定義がその構造を定義していることを確認してください)、[XY問題](http://xyproblem.info)になる可能性があります。だから、**あなたの質問を編集して**動機づけて、もっと説明してください。 –