問題タブ [kernel-extension]
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 - gdb を使用した kext のデバッグ: デッドロック
I/O Kit ドライバー: 仮想イーサネット デバイスがあります。一定期間作業した後、OS がハングするため、ドライバーにデッドロックが発生しているようです。
次の手順を実行しました:
- FireWire 経由で 2 台の Macbook を接続
- デバッグ環境をセットアップ
- NMI を初期化 (電源ボタン経由)
- gdb 経由でターゲットに接続
- kext のアドレスを取得
- シンボルを作成してロード (これが最後のポイントです)私が読んだすべてのドキュメントで)
これまでのところとても良いです。カーネル パニックの場合は、これで十分です。しかし、私の場合、カーネル パニックは発生せず、NMI を処理するスレッドに常駐しています。
ここで質問: kext のスレッドに切り替えるにはどうすればよいですか?
指示showalltasks
すべてのタスクのリストが表示されます.kextが実行されている唯一のタスクはkernel_taskであるため、showtaskthreads
andを介してこのタスクを調べようとしshowtaskstacks
ていますが、コードに似たものを見つけることができません. 何か不足していますか?
ドキュメントへの提案やリンクをいただければ幸いです。
macos - システムコールを呼び出すプロセスのpidを取得する方法は?
Re-routing System Callsを参照して、既存のシステム コールの代わりに自分のシステム コールを使用する kext を作成しました 。
テスト中に、どのプロセスがこのシステムコールを呼び出しているのか疑問に思います。
指定されたプロセスを除いて、アプリケーションが正常に続行できるようにする必要があります。
呼び出しプロセスの情報を取得するものはありますか?
macos - Mac OS X の NDIS 中間ミニポートの並べ替え
現在、Windows で NDIS IM として実装されている中間ネットワーク層のソリューションがあります。これを Mac OS X に移植する方法を調査中です。
理想的には、イーサネット対応アダプタの真上にある中間ドライバ/kext であり、IP/ARP/その他すべての下にあり、イーサネット フレームのみで動作する必要があります。
WDK のパススルー サンプルなど、いくつかのチュートリアル/サンプルが推奨されますが、ヒントをいただければ幸いです。
いいえ、これはフィルター/ファイアウォールではなく、vpn ではありません。そのレベルで動作する、まったく新しい非常に複雑な中間層です。
macos - OSX ネットワーク kext で静的変数がクラッシュする
Mac OS X ネットワーク カーネル エクステンションで、動的バッファではなく静的に割り当てられたバッファがある場合、printf() や send()、ctl_enqueuedata() などの API 関数を呼び出すと、カーネル パニックが発生することに気付きました。他の多くの人と同様に。静的に割り当てられたバッファーをコードの外部から読み書きできないかのようです。
例えば:
何故ですか?
編集:コードを投稿しようとしていましたが、コードが長く、機能するバージョンとパニックを引き起こすバージョンの唯一の違いは上記のとおりです。私が念頭に置いているのは、静的変数と OSMalloc で割り当てられた変数のメモリ位置の違いです。ctl_enqueuedata() 内のコードは両方にアクセスできますか?
何が起こったかは次のとおりです。
macos - シンボルは mach_kernel に存在するが、kpi には存在しない
MAC API "mac_iokit_check_device" を実装しようとしている MAC (Mandatory Access Control) ポリシー モジュールを開発しようとしています。mac_iokit_check_device API を実装する MAC ポリシー モジュール kext を構築でき、kext をロードできます。しかし、このポリシーモジュール API を利用するドライバー kext には問題があります。正常にコンパイルされています。しかし、シンボル「_mac_iokit_check_device」を解決できません。私が使用したドライバ kext の依存ライブラリは次のとおりです。
不思議なことに、どの kpi ライブラリもシンボル _mac_iokit_check_device を定義していないようです。コマンドを実行してこれを推測しました
ただし、カーネルイメージには、次のように推測されるシンボルがあるようです
ドライバー kext でこの未解決のシンボルの問題を解決する方法はありますか? この問題のヘルプ/ポインタは大歓迎です。