問題タブ [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 に答える
1193 参照

macos - ドライバーのlaunchd plistファイルを削除した後、kextcacheを無効にします

/Library/LaunchDaemonsドライバーのアンインストーラーを作成しました。これは、次の起動サイクルで launchd によって再度読み込まれないように、一致する plist ファイルを削除します。ただし、マシンの起動後にまだ正常にロードされているドライバーには何の影響もないようです。

この問題についていくつかの調査を行った後、これがkextcacheこの動作の理由であることがわかりました。クリーン/無効化するにtouchは、インストール先のボリュームがあるフォルダーに移動する必要があります。ただし、効果はありませんでした。

私の質問は、対応する plist ファイルが削除された後に launchd が kext をロードしないように、kext キャッシュを適切に無効にする方法です。

以下の回答のおかげで、kext キャッシュを無効化できました。ただし、アンインストーラーヘルパーが基づいているobjective-cの既存のフォルダーにアクセスするための同等のものを用意したいと思います。

正確には、Objective-C に変換したいコードは次のとおりです。

sudo touch /System/Library/Extensions; sudo touch /Library/Extensions

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

asynchronous - OS X で /dev/autofs_nowait を使用するリスクとメリット

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

mach-o - Mach-O 実行可能ファイルをロードするには何が必要ですか?

Mach-O 実行可能ファイルを手書きしようとしています。次の 3 つのロード コマンドがあります。

  • LC_SEGMENT_64読み込み中__PAGEZERO
  • LC_SEGMENT_64ロード__TEXT中、単一の__textセクションで
  • LC_UNIXTHREAD適切に設定されたrip

mach/loader.hすべてのコマンドは、構造体と関連するヘッダーに一致します。otool -l期待どおりに情報がリストされ、エラーは報告されません。すべてのアカウントで、これは整形式のオブジェクト ファイルですが、OS X 10.10.5 はタスクを終了します (SIGKILL)。

OS X がロードする前に、Mach-O 実行可能ファイルのどの機能がチェックされますか? この情報はどこにありますか? これらの機能はバージョンごとに変更されますか? (よく引用される「OS X ABI Mach-O リファレンス」は明らかに欠落しています。)


これは、部分的に注釈が付けられたバイナリの 16 進ダンプです。

otool健全性チェック (抜粋):

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

macos - Mac OS X でシステム コールをキャッチする

自作プログラムを使用して、特定の PID によって呼び出されるすべてのシステム コールをキャッチしようとしています (strace、dtruss、gdb のいずれも使用できません...)。
kern_return_t task_set_emulation(task_t target_port, vm_address_t routine_entry_pt, int routine_number)だから私はで宣言された関数を使用しました/usr/include/mach/task.h
syscall をキャッチする小さなプログラムを作成しましたwrite

出力は次のとおりです。

カーネル エラー 46 はKERN_NOT_SUPPORTED、「空のスレッド アクティベーション (スレッドがリンクされていません)」として説明されているマクロに対応し、/usr/include/mach/kern_return.hを呼び出す前に発生していwriteました。
私の質問は次のとおりです。このプロセスで何が間違っていましたか? Kern_not_supported は、無意味なスレッドの問題ではなく、まだ実装されていないことを意味しますか?

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

macos - Mac OS で SIP がオフになっているが、kext を読み込めない

私は、kextプログラミングが初めてなので、私の問題は次のとおりです。

私は、macOS 10.11.6 を実行しています。SIP をオフにしましたが、kextloadと -v フラグを使用して kext をロードしようとすると、kext が正常にロードされたことがわかります。

kext がロードされたことを確認するために、kextstatを使用しました。

しかし 、次のコマンドを使用して/var/log/system.logからカーネルログを追跡すると:tail -f /var/log/system.log

そのエラーが表示されます:

allowing invalid signature -67050 0xFFFFFFFFFFFEFA16 for kext

私の kext は単純な Hello World kext で、私のコードがあります

助けてくれてありがとう

編集:

多くのテストの後、kextが正常にロードされたように見えますが、コード署名の問題に関しては、Xcodeビルド設定を調べたところ、コード署名が見つかりました。コード署名はコード署名IDがあるため、 Don'tに設定しましたコードに署名し、Xcodeビルドツールを使用してビルドしまし xcodebuild -configuration Debug -target kern たが、まだ進歩していないので、誰かが少なくともリンクなどを提供してくれることを願っています.

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

macos - MacOS ドライバーで SIGKILL をキャッチ

現在、SIGKILL が原因で停止していると思われるデーモンをデバッグしています。

私のプロセス向けのシグナルをキャッチし、このプロセスが得たプリントアウトを追加したいと思います。

プロセス レベルのシグナル ハンドラでは SIGKILL をキャッチできないことはわかっているので、kext を使用することにしました。

xnu ソース コードを調べたところ、psignalそれがシグナルをターゲット プロセスに渡すメソッドであることがわかりました。ただし、トランポリンを使用してパッチを適用しようとしましたが、このメソッドは static という名前の別の静的メソッドを呼び出すだけpsignal_internalであり、おそらくコンパイラの最適化によって排除されます。

おそらく、sigkill のこのイベントをキャッチするのに役立つ何らかのメカニズムを取得し、この場合に適切なコールバック関数を設定するオプションを提供する他の方法があるでしょうか?

ありがとう