学期の締め切りのアプローチとして、私は大学でオペレーティングシステムコースのプロジェクトに取り掛かることにしました。 プロジェクト割り当ての問題は、単純なカーネル(基本プロセスとスレッド管理)として実行するユーザーアプリケーション(exe
)を開発する必要があることです。ユーザアプリケーションからリング0モードにアクセスする(そして、なぜボーランドがこれを許可するのか)
私の頭に浮かぶ最初のことは、私はユーザーアプリケーションで特権コードをどのように実行することになっていますか?
(時間通りにプロジェクトを行った)他の学生と相談した結果、Borland 3.1コンパイラを使用しても問題なく、特権コードを実行できることがわかりました。しかし、彼らの誰もそれが奇妙で、なぜそれが働いたのか分かっていませんでした。なぜボーランドはこれを行うのですか(ここではより良い質問)ですか? OSセキュリティの基本原則に違反していませんか?
注:プロジェクトはC++アプリケーションとして作成され、ほとんどの特権コードがインラインアセンブリとして実行されるため、C++タグを追加しました。
更新私の質問は、もともと多少言い表せませんでした。もちろん、どのコンパイラでも特権命令を使ってコードをコンパイルすることができました。コードを実行することが問題でした。
あなたが望むものは何でもできます(もちろんtpmモジュールを持っていなければ)。なぜそれは驚くべきことでしょうか? os全体は、多かれ少なかれ特権を持つアプリケーションで構成されています。 – Solarflare
@Solarflare申し訳ありませんが、これはWindowsプロジェクトです。 – tellerath
@Solarflare:管理者としての実行と特権命令の実行には違いがあります。後者はあなたに**道**より多くの特権を与えます(例えば、サービスアプリケーションのプロセスメモリの読み込み)。 – IInspectable