問題タブ [otool]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
macos - LC_LOAD_DYLIB コマンドを Mach-O バイナリに挿入する方法 (OSX)
いくつかのコードで放棄されたソフトウェアにパッチを適用しようとしています。
ソフトウェアはカーボン ベースなので、InputManager は使用できません (少なくとも、使用できるとは思いません)。私のアイデアは、マッチョ ヘッダーに dylib 参照を追加し、初期化ルーチンが呼び出されたときに新しいスレッドを起動することでした。
適切なロード コマンド (LC_LOAD_DYLIB) を追加するために、hexeditor を使用して mach-o ヘッダーをいじりました。
otool は私が期待するものを報告するので、ファイルが正しくフォーマットされていることはかなり確信しています。
ただし、バイナリを起動すると、次のエラーが表示されます
これは、LC_SYMTAB または LC_DYNSYMTAB セクションを変更する必要があることを意味していると推測できます...
誰にもアイデアはありますか?
iphone - Macでotoolを使うコツは?
アプリケーションのヘッダーを表示したい。私はこれを試します:
myMac:~ me$ /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/otool [-fahlLDtdorSTMRIHvVcXm] /Developer/Platforms/TheIPhoneApplication -f
ファイルは確かにあります。
しかし、「ファイルが見つかりません」と表示されます。何か案が?
cocoa - アプリに必要な共有ライブラリを見つけるためにotoolを(再帰的に)使用する
アプリが正しく機能するために必要な共有ライブラリを見つけるためにotoolを使用するCocoaアプリがあります。たとえば、QTKit.frameworkを使用するアプリでotool-Lを実行するとします。プログラムで使用される共有ライブラリのリストを取得します(Cocoa.frameworkやAppKit.frameworkなどの基本的なフレームワークを含む)。
これは、アプリがQTKit.frameworkを使用していることを示しています。ただし、QTKit.framework(/System/Library/Frameworks/QTKit.framework/Versions/A/QTKit)のバイナリで「otool-L」を再度使用すると、次のようになります。
これは、アプリバイナリの元のotool出力が示したより多くのフレームワークを示しています。otoolを再帰的に実行する方法はありますか?つまり、アプリが必要とするフレームワークを取得してから、それらの各フレームワークに依存関係を検索しますか?
macos - OSX App Bundle のビルド
Xcode を使用せずに osX アプリを作成したとします。GCC でコンパイルした後、他のいくつかのライブラリにリンクされている実行可能ファイルを取得します。これらのライブラリの一部は、他の非標準システム ライブラリに再び動的にリンクされる可能性があります。
最初に必要なディレクトリ構造を作成し、次にリンクを再帰的にコピー/チェック/修正して、すべての動的依存関係がアプリバンドルにも含まれていることを確認することにより、OSX アプリバンドルを作成するツールはありますか?
私はこのようなものを書いてみることができると思いますが、このようなものがすでに存在するのだろうかと思っていました.
assembly - 実行可能ファイル内の逆アセンブルされたコードの場所を特定するにはどうすればよいですか?
バグを含む実行可能ファイル(C ++、i386、MacOS / X Tigerでコンパイルされています)があります。バグの修正は簡単です。コード内にfork()を呼び出す場所がありますが、そうすべきではありません。修正は簡単で、実行可能ファイルを最初から再コンパイルするのは現時点では難しいため(質問しないでください)、実行可能ファイル/バイナリファイルに直接パッチを適用したいと思います。
そのための最初のステップとして、実行可能ファイルで「otool -tV MyExecutableName」を実行しました。これは、逆アセンブリの出力で見つかりました。
したがって、私がやりたいのは、行0002ce19のオペコードを置き換えることです。これにより、_forkを呼び出す代わりに、無条件に失敗のケースにジャンプします(つまり、fork()が-1を返したかのように動作するはずです)。
残念ながら、私は分解/バイナリパッチの完全な初心者なので、これを行う方法がわかりません。特に、私の質問は次のとおりです。
1)必要なものを取得するには、場所0002ce19から0002xe1dにどのバイトを書き込む必要がありますか?「jmp0x0002cf02」と同等のアセンブルされたものになると思いますが、これらのバイトが何であるかをどのように把握できますか?
2)「otool-tV」によって出力されたオフセットは、実行可能ファイルの__TEXTセグメントにオフセットされているように見えます。印刷されたオフセットとファイルの先頭の間のバイトデルタを把握して、ファイル内の正しいバイトを編集/パッチできるようにするにはどうすればよいですか?
あなたが与えることができるアドバイスをありがとう!
c++ - MacOSX:依存関係をローカルバンドルに収集する方法は?
他のいくつかのライブラリに依存するプラグインアプリケーション(dylib)を作成しています。これらの他のライブラリは私のシステムにインストールされていますが、どのユーザーのシステムにもインストールされるとは限りません。したがって、アプリケーションと依存関係をバンドルする方法を見つける必要があります。
otool
他のdylibへのパスを一覧表示または変更するために使用できることがわかりました。これにより、プラグインアプリケーションと必要なすべての依存関係をバンドルするフォルダーを作成できます。
ただし、これを手動で行うことは、時間のかかる馬鹿げた作業のように思えます。それを自動化するために利用できるユーティリティはありますか?
それとも、私はそれを間違ってやっていて、この問題に対してより良い、より明白なアプローチがありますか?
編集ほとんどのタスクを自動化するスクリプト を作成しました。
assembly - アーム アセンブリ コード構造の理解に関する問題
コードは以下の通り、エンディングで知りたい
終了部分で定義されたアドレスをロードするため、これはこのコード行の計算を行いますか
そして、なぜコードはこのように編成されているのでしょうか?
assembly - otoolの結果の最初の列が連続していないのはなぜですか?
これが本当に初心者の質問であるならば、すみません。私はotoolを使用してファイルを逆アセンブルしていますが、これは私が興味を持っているメソッドの結果です。
ご覧のとおり、最初の列は連続していません。これは、otoolが分解できないいくつかの指示があることを意味しますか?それとも、これは、一部の組み立て命令が実際の(機械)命令の長さが異なることを意味しますか?
ありがとうございました!
macos - otoolの「caps」フィールドの意味
私が実行otool -favh some/library.so
すると、次のフィールドがあります。
- 「caps」列の意味は何ですか?
- キャップ列が異なると、リンクエラーが発生しますか?
macos - otool の出力をコンパイル可能な形式に変換するには?
こんにちは、Mac i386 バイナリから ( otxおよび otool -tVを介して) いくつかのテキスト ファイルを作成しましたが、それらを再コンパイルしようとすると失敗します。
私は試しましたが
cc -x assembler test.s
、ほぼすべての行でこれを取得し続けます:
test.s:9342:Junk character 48 (0).
test.s:9342:Rest of line ignored. 1st junk character valued 48 (0).
otool の出力をコンパイル可能な形式に変換するにはどうすればよいですか? 可能です?
これを行う方法のヒントとヒントを事前にありがとう