Macカーネル拡張機能を逆コンパイルすることはできますか?Mac Kernel Extensionを逆コンパイルしますか?
答えて
理論上、バイナリコードを逆コンパイルすることは可能です。
a)C++であるため、バーチャルメソッドでコードを実行するのが難しくなります。 b)カーネル拡張ではリンクが異なるため、依存関係とシンボル名を見つけるためにカーネル拡張を扱うように特別に設計する必要があります。
カーネル拡張のアセンブリコードを検査するために、gdb(nate c推奨)を使用することができます。カーネル拡張用のデコンパイラを特に認識していません。
kextloadツールを使用して、gdbにロードできるシンボルファイルを作成できます。関数のデコードされたシンボル名を表示させます。& c。ここにクラッシュがありますか?チュートリアル:http://praveenmatanam.wordpress.com/2008/05/22/kext-debugging-on-mac/
なぜこれをやりたいですか?
hexrays decompilerを使用して32ビットkextを逆コンパイルすることは問題ありません。
C++コードの逆コンパイルは、正しい方法で構造体を定義する必要があることを意味します。オブジェクトに仮想メソッドがある場合、オブジェクトの最初の項目はオブジェクトのvtableへのポインタになります。 vtableをIDAまたはhexraysに宣言し、関数ポインタのすべての型が正しいことを確認した場合、hexraysは非常に読みやすいコードを生成します。
あなたが興味を持っているkextの部分は、CのようなC++で書かれている可能性があります。そのことについてはまったく心配する必要はありません。
32ビットのみの場合、idaデモには32ビットのみのデコンパイラが含まれている。 – Barry
64ビットkextsを逆順にするには、ida proとx64 Decompiler(mac/lin/winのいずれか)を取得します。
また、通常、lldbリモートセットアップを使用してkext(シンボルなし)をデバッグすることができます。 (gdbはなくなった)
大規模なセキュリティショップで働く場合は、NDAに署名し、最初に生まれた人に権利を与えて、OSXソースを入手するだけです。
また、ここでは逆コンパイラの大規模なリストです:
https://en.wikibooks.org/wiki/X86_Disassembly/Disassemblers_and_Decompilers
- 1. mac kernel-extensionのエラーコードの意味は何ですか?
- 2. Kernel Extensionをアンロードできません。クラスにインスタンスがあります
- 3. なぜLinux kernelのアップグレード後にvmware kernel moduleを再コンパイルする必要がありますか?
- 4. ダウンロードTorvalds Kernel、QEMUで起動(再コンパイル)
- 5. PHP - MSSQL用FreeTSD Extensionのコンパイル
- 6. dllファイルのコンパイルと逆コンパイル
- 7. 逆コンパイル&瓶
- 8. 逆コンパイルqt exe
- 9. java逆コンパイル
- 10. C#逆コンパイル
- 11. AccessibilityTraversalOrderの逆コンパイル
- 12. バイトコードの逆コンパイル
- 13. DLLの逆コンパイル
- 14. C#AsyncStateMachine逆コンパイル
- 15. 逆コンパイル式
- 16. Androidアプリケーションフォームを逆コンパイルしてコードに記入できますか?
- 17. linux kernel/Documentationの特定のプログラムをコンパイルする
- 18. IEnumeratorsを逆コンパイルする
- 19. MacでC++をどのようにコンパイルしますか?
- 20. MACでXV6をコンパイル
- 21. MACでX265をコンパイル
- 22. 非カーネルヘッダを含むlinux kernel(2.6)モジュールをコンパイル
- 23. armv7m kernel kernel-4.4.5がcalibrate_delay_converge()でハングする
- 24. テクニック/スロー逆コンパイルに
- 25. JADC DLLの逆コンパイル
- 26. .libファイルと逆コンパイル
- 27. Cで書かれたDLLを逆コンパイルできますか?
- 28. JSをJSXに逆コンパイル
- 29. APKを逆コンパイルしてアンドロイドスタジオにインポート
- 30. Javaクラスの逆コンパイルと再コンパイル
私はあなたはそれがMacのカーネル拡張の逆コンパイルを必要としているようだ何をしたいのか、より興味があります。 – OmnipotentEntity
目的-Cではありません。 OS Xのカーネルモジュールは、C++のサブセットで書かれています。 –
あなたはおそらく反対の解答を得るでしょうが、Cからの逆コンパイルは不可能です。 1対1のマッピングではなく、いくつかのツールがCコードであった可能性のあるプログラムを提供していると主張することはできません。実際のCコードを確実に再現するツールはありません。デバッガは、実行ファイルをリバースエンジニアリングするツールです。 –