問題タブ [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.

0 投票する
2 に答える
363 参照

macos - gdb を使用した kext のデバッグ: デッドロック

I/O Kit ドライバー: 仮想イーサネット デバイスがあります。一定期間作業した後、OS がハングするため、ドライバーにデッドロックが発生しているようです。

次の手順を実行しました:
- FireWire 経由で 2 台の Macbook を接続
- デバッグ環境をセットアップ
- NMI を初期化 (電源ボタン経由)
- gdb 経由でターゲットに接続
- kext のアドレスを取得
- シンボルを作成してロード (これが最後のポイントです)私が読んだすべてのドキュメントで)
これまでのところとても良いです。カーネル パニックの場合は、これで十分です。しかし、私の場合、カーネル パニックは発生せず、NMI を処理するスレッドに常駐しています。

ここで質問: kext のスレッドに切り替えるにはどうすればよいですか?
指示showalltasksすべてのタスクのリストが表示されます.kextが実行されている唯一のタスクはkernel_taskであるため、showtaskthreadsandを介してこのタスクを調べようとしshowtaskstacksていますが、コードに似たものを見つけることができません. 何か不足していますか?

ドキュメントへの提案やリンクをいただければ幸いです。

0 投票する
1 に答える
1097 参照

macos - システムコールを呼び出すプロセスのpidを取得する方法は?

Re-routing System Callsを参照して、既存のシステム コールの代わりに自分のシステム コールを使用する kext を作成しました 。

テスト中に、どのプロセスがこのシステムコールを呼び出しているのか疑問に思います。

指定されたプロセスを除いて、アプリケーションが正常に続行できるようにする必要があります。

呼び出しプロセスの情報を取得するものはありますか?

0 投票する
1 に答える
522 参照

macos - Mac OS X の NDIS 中間ミニポートの並べ替え

現在、Windows で NDIS IM として実装されている中間ネットワーク層のソリューションがあります。これを Mac OS X に移植する方法を調査中です。

理想的には、イーサネット対応アダプタの真上にある中間ドライバ/kext であり、IP/ARP/その他すべての下にあり、イーサネット フレームのみで動作する必要があります。

WDK のパススルー サンプルなど、いくつかのチュートリアル/サンプルが推奨されますが、ヒントをいただければ幸いです。

いいえ、これはフィルター/ファイアウォールではなく、vpn ではありません。そのレベルで動作する、まったく新しい非常に複雑な中間層です。

0 投票する
1 に答える
486 参照

macos - OSX ネットワーク kext で静的変数がクラッシュする

Mac OS X ネットワーク カーネル エクステンションで、動的バッファではなく静的に割り当てられたバッファがある場合、printf() や send()、ctl_enqueuedata() などの API 関数を呼び出すと、カーネル パニックが発生することに気付きました。他の多くの人と同様に。静的に割り当てられたバッファーをコードの外部から読み書きできないかのようです。

例えば:

何故ですか?

編集:コードを投稿しようとしていましたが、コードが長く、機能するバージョンとパニックを引き起こすバージョンの唯一の違いは上記のとおりです。私が念頭に置いているのは、静的変数と OSMalloc で割り当てられた変数のメモリ位置の違いです。ctl_enqueuedata() 内のコードは両方にアクセスできますか?

何が起こったかは次のとおりです。

0 投票する
1 に答える
807 参照

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 でこの未解決のシンボルの問題を解決する方法はありますか? この問題のヘルプ/ポインタは大歓迎です。