バイナリファイルを取得し、そのパスワード(宿題)を解読することになっています。また、指定された関数(バイナリファイルの一部である関数)もありました。その関数は、入力文字列が文字ごとに正しいパスワードと比較され、文字が間違っていたときに即座に偽を返したことを示しました(それは安全な方法ではありません例)。しかし、教師は結果を返すランダムタイマーを追加しました(正しい/間違った)。
とにかく、私はすでにリバースエンジニアリングで正常に実行し、正しいパスワードを取得しました。今、私はコマンドラインでそれを遊んでいます:
/usr/bin/time -v ./program_name enter_password
このコマンドを使用すると、システム時間、スワップ、実行時間などの多くの情報が得られます。しかし、私にとって最も興味深いのは、「任意のコンテキストスイッチ」です。 「わかった!
間違った文字を入力するほど、「任意のコンテキストスイッチ」が表示されます。
そのコマンドを入力し、文字を入力し、「任意のコンテキストスイッチ」を観察するだけで、パスワードを解読するのに2時間近くかかりました。1つのキャラクターが正しかったときはいつでも、「自発的なコンテキスト切り替え」は1つ減少しました。
私の質問、「自発的コンテキスト切り替え」とは正確に何であり、なぜパスワードを解読するのに役立つのですか?