問題タブ [xnu]

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 投票する
1 に答える
164 参照

macos - Kext ドライバーがシンボル OSPrintBacktrace を見つけられない

私のiokitコマンドの1つが呼び出されているときに、次の関数を使用しています。で定義されています

ただし、このシンボルが見つからなかったため、kext の読み込みに失敗したようです。

カーネルバイナリには存在しますが

ここで何が欠けているのか誰か教えてもらえますか?

0 投票する
0 に答える
533 参照

xcode - Xcode を使用した Kext のデバッグ

私の lldb デバッガーを xcode で実行できれば素晴らしいことです。ユーザー空間のアプリケーションでは問題なく動作しますが、Kext はどうでしょうか。

次のシナリオのいずれかでデバッガーを使用する場合は、ユーザー空間で:

  1. プロジェクトから新しいプロセスを開始します。
  2. 特定の名前のプロセスが立ち上がるのを待ちます。
  3. (IP に従って) 既存のプロセスに接続します。

これらのオプションはすべて、lldb コマンド ラインで開始する必要がないため、xcode 構成チャートから簡単にトリガーできます。

kdp <remote ip>ただし、カーネル拡張機能のデバッグでは、デバッグ中のマシンを接続するためにトリガーする必要があるため、まったく別の話です。xcode からそうするのはオプションですか?

あるいは、このタスクに対応できる lldb の他の GUI ラッパーについて聞きたいです。

ありがとう

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

macos - kext のデバッグ時にユーザー空間アドレス address を読み取る

lldb経由でリモート マシン ドライバー (kext) をデバッグするときに、ユーザー空間アドレスを読み取りたいと思いますkdp。コードをカーネル空間に移動して簡単に読み取るために使用できるコードを知っているcopyinので、予想どおり、ユーザーメモリを直接読み取ろうとすると失敗しました:

copyinランタイム デバッグ セッション中にデータをデバッガーから読み取ることができる場所に変換するための代替手段はありますか?

ありがとう

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

c - mmap ファイルのメモリにファイルをロードする Mach ページャー

ここでの質問に続いて、ファイル mmap を呼び出すときのファイルからメモリへの実際の読み取り/書き込み、およびその逆についての調査を拡張しました。READ および WRITE システムコールとは異なり、MMAP のケースは異なります。以下のバックトレースに示されています。

マッハページャーがここですべての作業を行っているようです (ファイルをメモリに読み込む)。に新しい画像をロードするときにload_machfileファイルの読み取り部分を通常使用することは知っていますが、関数ツリーに同義語が見つかりませんでした。vn_rdwrexecvevnode_pager_map

私の質問は、どのメソッドが実際に mmap sys call でファイルの内容を読み取ったかです。

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

macos - Mac OS X での mmap システムコールの何が問題になっていますか?

標準ライブラリを使用せずに syscall のみを使用して、Mac OS X で簡単なアプリケーションを作成しようとしています。

main.c

start.s

ご覧のとおり、アプリケーションは基本的に simple を反映していますechoexit引数なしでプログラムを実行すると、プログラムは正常に終了するため、呼び出しが機能すると想定しています。しかし、引数を指定して実行すると、Segmentation fault: 11. 私が今理解している限り、mmapが呼び出されると、カーネルは奇妙な値を返します: 9. 9 は適切なアドレスではないと思いますが、ドキュメントによると、渡されたすべての値syscallが正しいため、私の間違いを理解できません。syscall 番号はここから取得されます。