オープンソース/フリー ソフトウェア コミュニティは、ドキュメントを提供しない製品のドライバをどのように開発していますか?
3 に答える
どうやって何かをリバースエンジニアリングしますか?
- 入力と出力を観察し、オブジェクトの操作を記述する一連のルールまたはモデルを開発します。
例:
USB カメラ ドライバーを開発するとします。「ブラック ボックス」はソフトウェア ドライバーです。
- ドライバーの入力と出力を確認できるように、OS やドライバーへのフックを開発します。
- 典型的なインプットを生成し、アウトプットを記録する
- アウトプットを分析し、インプットとアウトプットの関係を説明するモデルを合成する
- モデルのテスト - ブラック ボックス ドライバーの代わりに配置し、テストを実行します。
- それが必要なすべてを行う場合は完了です。そうでない場合は、すすぎを繰り返します
これは単なる通常の問題解決/科学的プロセスであることに注意してください。たとえば、気象予報士も同じことを行います。天気を観察し、現在の状況をモデルと比較してテストします。モデルは、今後数日間に何が起こるかを予測し、モデルの出力を現実と比較します。一致しない場合は、元に戻ってモデルを調整します。
この方法は、誰かが実際にコードを逆コンパイルしたり、製品を逆アセンブルしたり、徹底的に分析したり、見たものに基づいてモデルを作成したりするクリーンルーム リバース エンジニアリングよりも (法的に) 少し安全です。次に、モデル ( AND NOTHING ELSE ) が開発者に渡され、製品の機能が複製されます。ただし、オリジナルを分解したエンジニアは、コード/デザインの著作権で保護された部分を持ってきて、うっかり新しいコードに挿入してしまう可能性があるため、参加できません。
ただし、製品を分解したり逆コンパイルしたりしない場合は、法的に安全な場所にいる必要があります。残された唯一の問題は、特許の問題です。
-アダム
通常、コードをリバース エンジニアリングします。ただし、一部の国では法的な問題が発生する可能性があります。
これはかなり漠然とした質問ですが、リバース エンジニアリングと言えます。それがどのように行われるかは、それがどのような種類のデバイスであり、何が利用できるかによって異なります。多くの場合、デバイスには、動作するように変更できる別のデバイスと同様のコア チップセットが搭載されている場合があります。