問題タブ [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.
xcode - install_name_tool -change と -id の違い
-change
私はしばらくの間、この概念に苦労してきましたが、との違いが本当に理解できません-id
。
これまでのところ、私は で実験しまし-change
た。次の構造があるとします
ここで、itemB で次のコマンドを実行したとします。
上記の結果は、場所を変更する必要があるかどうかに応じて、test_library.dylib
これを行うことを示していますanother_library.dylib
another_library.dylib
これにより、アイテムDの場所が変更されます。私の質問は、何install-name_tool -id
をし、いつそれを使用するのですか?
xcode - Otool - ファイルサイズのみ取得
Otool を使用してコンパイル済みライブラリ (.a) を調べています。バイナリ内の各コンポーネントのファイル サイズを確認したいと考えています。私はそれを見る
otool -l [lib.a]
この情報が表示されますが、他にも必要のない情報がたくさんあります。他のすべてではなく、ファイルサイズだけを確認できる方法はありますか? あったとしても見つからない。
macos - MachO ファイル形式 - LC_SEGMENT_64 ロード コマンドの「fileoff」フィールドの値
次のような簡単なプログラムをコンパイルしました
Clang を実行可能ファイルに使用otool
し、コンパイラによって生成されたロード コマンドを報告するように求めました。私が興味を持っているのは、特にファイル内のセグメントLC_SEGMENT_64
を記述するものです。__TEXT
私が得る説明はこれです:
私の質問はfileoff
、2 番目のロード コマンドのフィールドがゼロに設定されているのはなぜですか?
このフィールドに関する Apple のドキュメントには、次のように記載されています。
ファイルは、fileoff からメモリ内のセグメントの先頭である vaddr にマップされます。
filesize
これにより、最初は、このフィールドが と組み合わせて、ローダーに次のようなものを示していると信じるようfileoff
にfileoff + filesize
なりました。しかし、もちろん、この値がゼロの場合、私の仮定は成立しません。
セグメントには少なくとも 1 つのセクションがあるため、ローダーはセクションの説明にあるそれぞれのオフセットの値を使用して実行するコードを特定するため、そのような値は必ずしも必要ではないと考えました。 、実際には、このセグメント内の最初のセクションにはoffset
フィールドの値があります (この場合は 3984 で、これは検証済みでotool -s __TEXT __text -j foo
あり、ファイル内でこのセクションが配置されているオフセットを実際に参照しています)。
しかし、同じソース ファイル (つまり、 のMH_OBJECT
代わりにtype を持つファイル) から生成されたオブジェクト ファイルに対して同じことを行うとMH_EXECUTE
、得られる結果は次のようになります。
この場合、load コマンドのfileoff
フィールドの値は、最初のセクションの値と同じ__text
です。
unix - otool の実行失敗を修復するにはどうすればよいですか?
brew で何かをインストールしようとすると、次のエラーが表示されます。
これを解決するにはどうすればよいですか?
ios - otool -L ファイル名/パスが機能しない
さまざまなプログラミング/デバッグのチュートリアルを実行しており、ターミナルで「otool」コマンドを使用しています。例として、共有ライブラリのチェックがあります。エラーは常に 2 つのうちの 1 つです。ファイルがあるディレクトリから実行しています。otool とだけ入力すると、otool の「-x」スイッチのリストが表示されます。複数のファイルとディレクトリのスイッチのリストを調べたところ、同じエラーが発生しました。
私は何が欠けていますか?
$ otool -L DemoApp
エラー: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/otool: ファイルを開けません: DemoApp (そのようなファイルやディレクトリはありません)
また
$ otool -L DemoApp.app
エラー: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/otool: ファイルをマップできません: DemoApp.app (無効な引数)
macos - OS X 実行可能ファイルの場合、未定義のシンボルが期待されるライブラリを表示する方法は?
nm を使用して未定義のシンボルをバイナリで表示する方法を知っています。また、otool を使用してバイナリがリンクされているライブラリを表示する方法も知っています。
しかし、未定義のシンボルごとに表示する方法がわかりません。リンカーがそれらを見つけると予想されるライブラリはどれですか?
注: このような情報は mach-o バイナリに格納されていると想定しています。なぜなら、ランタイム エラーの前に、dyld が不足しているシンボルについて通知し、シンボルが見つかると予想されるライブラリを正確に指摘するのを見たからです。
ios - iOS アプリ otool cryptid=0 の修正
こんにちは最近、会社用のアプリを作成しましたが、後でこのツールを見つけました-otool. そこで、otool でアプリをチェックしようとしたところ、次のことがわかりました。
cryptid をググったところ、私のアプリは暗号化されておらず、クラックされて RE になる可能性があることがわかりました。それを修正する方法またはcryptid = 1を設定する方法を知っている人はいますか? ありがとう。
virtual-memory - otool を使用してバイナリ ファイルのサイズを取得するにはどうすればよいですか?
otool を使用してバイナリに関する情報を取得しています。ここに私の出力の一部があります:
ここで、command 1
でsegname __TEXT
始まることがわかりますvmaddr 0x0000000100000000
問題は、バイナリ サイズが 2.3 MB で、0x0000000100000000 が 4 GB であることです。
アドレスの真ん中の「1」は64ビットアーキテクチャに関係していると思いますが0x0000000100000000
、実際には address 0x00
. 私はそれについていくつかの情報を探していましたが、有用なものは何も見つかりませんでした. 誰かが私の仮定を確認し、これがどのように機能しているかを説明できますか?