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