問題タブ [mach-o]
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 - mach_vm_region_recurse、osx上のメモリと共有ライブラリのマッピング
vm_region_recurse_64を使用して、特定のプロセスのメモリをvmmapスタイルでマップします。
ただし、メモリ内の各ライブラリのMach-Oヘッダーを調べて、アプリケーションによってロードされた共有ライブラリの完全なリストを取得しようとすると、vm_region_recurseは、特定のメモリセクションの一部が開始および終了する場所についてvmmapコマンドラインツールと一致しないようです。
これは、ほとんどのos共有ライブラリがロードされる90000000-a0000000システムサブマップで特に当てはまります。
そして今、私はちょっと困惑しています。メモリセグメントを一覧表示し、それらがどのタイプであるかを一般的に伝え、vm_readを使用してそれらから読み取ることができます。しかし、それらをリストし、正確で特定の地域情報を取得することは困難であることが証明されています。
vmmapは、ライブラリがロードされている特定の場所のリストをどのように取得しますか?私の方法は効果がないようです。
編集:これが私が使用している基本的なコードです。vmmapと類似しているが同一ではないメモリマップを返します。特定のライブラリのメモリ領域がありません。
linux - ELF/linux での Mach-O の 2 レベルの名前空間シンボル解決
ELF/Linux での Mach-O の 2 レベルの名前空間シンボル解決に相当するものを知っている人はいますか? sym ではなく、lib+sym にリンクするコードが必要です。
私は、通常は JIT コンパイルとなるもののプリコンパイルとして最もよく説明できることをしようとしています。通常は dlopen/dlsym によって行われる、コンパイル時のシンボルのバインディングを取得したいと考えています。ただし、競合が発生する可能性がありますが、dlopen/dlsym によって適切に回避されます。
ELFには実際にはこれが欠けているようで、バージョンのものがありますが、回避策や提案をいただければ幸いです。
mach-o - Mach-O 64bit 逆アセンブルでメソッドがありません。なぜですか?
i386 アーキテクチャ用に 1 回、x86_64 アーキテクチャ用に 1 回はファット バイナリ (otx を使用) である自分のプログラムを逆アセンブルすると、i386 に含まれている特定のメソッドが見つからないのはなぜですか?
たとえば、メソッド isAvailable の逆アセンブリは、i386 disasm では全体が表示されますが、x64 では表示されません...? アイデアはなぜですか?Mach-O 構造の基本的な理解が欠けていますか?
ありがとう!
ios - Apple Mach-O リンカー (id) 警告: MacOSX 用にビルドしていますが、iOS 用にビルドされた dylib に対してリンクしています
リンカの問題について不平を言う過去のxCode 4のある時点から始めます:
ld: 警告: MacOSX 用にビルドしていますが、iOS 用にビルドされた dylib に対してリンクしています: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks//CoreGraphics.framework/CoreGraphics
すべてをチェックしましたが、構成に疑わしいものは何もなく、コンパイルして実行します。CoreGraphics.framework の前の二重スラッシュだけが表示されますが、その理由はわかりません。「ビルドフェーズ」でライブラリを削除して再度追加しようとしましたが、役に立ちませんでした。
cocoa - Macアプリケーションのアーカイブ-AppleMach-Oリンカー(Id)エラー
Obectiveflickr、PHFacebookなどのフレームワークを使用するMacアプリケーションがあります。これらのフレームワークはLibrary / Frameworksにコピーされ、そこからアプリケーションにリンクされます。アプリケーションは正常に実行されますが、アーカイブしようとすると(パッケージ化するため) )、'"Apple Mach-O Linker(Id)Error" .objc_class_name_PhFacebook "のようなエラーが発生します。参照元:'。これを解決するにはどうすればよいですか?
ありがとう、
LS開発者
objective-c - Objective-C メタデータを使用してクラス依存関係グラフを生成する
この男は、クラスの依存関係グラフを生成するための非常に優れたツールを思いつきましたが、それはソース コードの解析と#import
ディレクティブの検索に依存しています。
これはきちんとしていますが、これには多くの問題があります。特に、インポートのインポートやプレフィックスヘッダー、インポートによって参照されるファイル内のクラスが実際に使用されているかどうかは考慮されていません。
class-dump
Mach-O ファイルに保存されている Objective-C のメタデータを調べて、クラスの依存関係のメモリ内表現を生成したいと考えています。
私はむしろこれを最初からやりたくないので、私は疑問に思っています:
- すでに行われていますか?
- この情報を抽出するために必要な基本的なツールを提供するオープンソース ライブラリはありますか (Mach-O ファイルを調べ、そこに含まれる Objective-C 情報のファサードを作成するライブラリ-繰り返し処理できるようにします)すべてのクラス、それらのメソッド、プロパティ、ivar などをスキャンし、他のクラスへの参照をスキャンします) class-dump のソースから始めるのが良いと思います。
- この種の経験がある場合、私が達成しようとしていることは実行可能ですか?
- どのような障害を克服する必要がありますか?
macos - MacOSX:プロセス(PIDを指定)が32ビットまたは64ビットのIntelモードで実行されているかどうかを確認します
PIDを持っていますが、プロセスが32ビットまたは64ビットのIntelモードで実行されているかどうかを確認したいと思います。どのように?
objective-c - Cocoa プロセスを fork し、Cocoa を再起動します。どうやって?
fork()
Cocoa プロセスで新しい Cocoa/ObjC 環境をセットアップしようとしましたが、次のエラーが表示されます。
フォークされたプロセスで Cocoa/ObjC を再初期化する方法はありますか?
ドキュメントには制限があると書かれていることは知っていますがfork()
、ドキュメントに書かれていることだけでなく、それを行う方法がまだあるのではないかと思います。
execve syscall (bsd/kern/kern_exec.c) を処理する XNU カーネルのソース コードを読み取ろうとしましたが、同じようなことを実行できるかどうかを簡単に判断できないコードに慣れていません。ユーザー空間かどうか。
xcode - Apple Mach-O Librarian(libtool)エラー、特定のエラーなし
以前はlibtoolのエラーをたくさん処理する必要がありましたが、ヒントが得られないエラーをどうすればよいのか本当にわかりません。
完全なエラーは次のとおりです。
リンカフラグを使用しています-lxml2-ObjC-all_load
例外のないlibtoolの失敗の原因に関するアイデアはありますか?
ああ、私は静的ライブラリターゲットを構築しています。以前はこれはアプリでしたが、使用できるアプリフレームワークを開始するために、再利用できないものをすべて削除しました。
iphone - iPhone Mach-O バイナリ、文字列ストレージ、__TEXT/__DATA
iPhone Mach-O バイナリ ファイルから定数 (または初期化) 文字列を読み取ろうとしています。関連する 3 つの segment.sections が _TEXT であることを理解しています。_cstring_TEXT . _ustring および _DATA 。_cfstring. ただし、抽出したこれら 3 つのデータ ブロックに文字列情報が格納されていることはわかっていますが、意味がわかりません。すべてゴミのように見えます。認識可能な文字列は見当たりません。誰かがこれに光を当てて、文字列データを読み取るために必要な手順を教えてもらえますか?
私はいくつかのコード ( http://llvm.org/svn/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cppの GetAddrOfConstantCFString() ) を見てきましたが、それを私が何に関連付けることができませんでした。バイナリで参照してください。
私の場合、問題のセクションのサイズは次のとおりです。
参考までに、実際の文字列を含む __cfstring セクションの最初の 32 バイトは次のようになります。
_DATA をダンプします。_cfstring
助けてくれてどうもありがとう!