(簡単にどうぞ - 私は Linux の専門家ではありません)
Linux で実行されている C++ アプリケーションから syscall を直接呼び出すことを妨げるものはありますか?
プロセス間でメモリを共有することに関して、次の 2 つの「新しい」機能/機能に興味がありました。
http://lwn.net/Articles/405346/
Windows のユーザー/カーネル モードのようなセキュリティ アクセス許可に遭遇することはありますか?
(簡単にどうぞ - 私は Linux の専門家ではありません)
Linux で実行されている C++ アプリケーションから syscall を直接呼び出すことを妨げるものはありますか?
プロセス間でメモリを共有することに関して、次の 2 つの「新しい」機能/機能に興味がありました。
http://lwn.net/Articles/405346/
Windows のユーザー/カーネル モードのようなセキュリティ アクセス許可に遭遇することはありますか?
C++ には、「syscall を直接呼び出す」ことを本質的に妨げるものは何もありません。read()
、write()
、open()
およびその他のシステムコールを呼び出すときは、すでにそれを行っています。
いつものように、パーミッションに注意する必要があります。あなた自身のリンクから:
現在の実装では、flags 引数は使用されません。当然のことながら、copy_to_process() はターゲット プロセスのアドレス空間にデータを書き込みます。両方のプロセスが同じ所有権を持っているか、コピー プロセスが CAP_SYS_PTRACE 機能を持っている必要があります。それ以外の場合、コピーは許可されません。
したがって、これらの関数を呼び出すことはできますが、エラー コードが返される可能性があることに注意してください。そのため、適切なエラー処理が行われていることを確認してください。もちろん、これはカーネルのバージョンが実際にこれらのシステムコールをサポートしていることを前提としています。Linux を初めて使用する場合、この記事で参照されているパッチをカーネルに適用することは、おそらくあなたの能力を超えています。