私が提供するマイクロコントローラーで焼いたHEXファイルを誰かが抽出できますか?
それが可能な場合、誰かが自分のコードが組み込みシステムで保護されていることをどのようにして確認できますか?PICおよびAVRマイクロコントローラーの場合、どのようにしてファームウェアが複製されないように保護できますか?
私が提供するマイクロコントローラーで焼いたHEXファイルを誰かが抽出できますか?
それが可能な場合、誰かが自分のコードが組み込みシステムで保護されていることをどのようにして確認できますか?PICおよびAVRマイクロコントローラーの場合、どのようにしてファームウェアが複製されないように保護できますか?
回答:
最近のほとんどのマイクロコントローラーには、組み込みファームウェアコードを保護するための部品またはメーカー固有の方法があります。これは一般に、通常コードメモリの読み出しを許可する回路をロックアウトすることで行われます。(該当するアプリケーションノートでデータシートまたはメーカーのWebサイトで部品固有の詳細を調べる必要があります)。
ロックされると、通常の技術を使用してコードメモリを読み出すことはできません。これにより、適切なレベルの保護が提供され、ほとんどのハッカーが組み込みアプリケーションのマシンコードを表示できなくなります。
最近の多くのMCUデバイスには、プログラムコードを保存するためのオンボードFLASHメモリがあります。FLASHに保存され、以前に保存され保護されたプログラムは、通常、新しいコードに置き換えることができますが、保護メカニズムのロックを解除するには、フルチップのFLASH消去操作が必要です。消去されると、パーツは元の保護ロックの前と同じように動作します。新しいプログラムがロードされた場合、新しくロードされたマシンコードを保護するために、一般的に部品を再ロックすることが可能です。
マイクロコントローラのコード保護についての議論は、部品メーカーが提供する保護スキームが完全な証拠であるという保証が通常ないことを述べずには完了しません。製造業者は、保護システムが100%絶対確実なものではないと述べさえするでしょう。この理由の1つは、勤勉なハッカーが支払いを希望する人のために保護された部分からコードを読み取る場所で、闇市場業界全体が進行していることです。彼らは、保護されたマイクロコントローラー上のROMまたはフラッシュからコードを読み出すことを可能にするさまざまなスキームを考案しました。これらのスキームのいくつかは非常に巧妙ですが、一部の家族では他の家族よりも成功するように機能します。したがって、この事実に注意して、プログラムをpr索好きな目から保護しようとします。
誰かがマイクロコントローラーから読み取られたマシンコードのバイナリイメージに手を触れると、それが保護されたマイクロコントローラーであるかどうかに関係なく、彼らは逆アセンブラーと呼ばれるツールを通してマシンコードを処理できます。これにより、バイナリデータがアセンブリ言語コードに戻り、プログラムのアルゴリズムがどのように機能するかを学習することができます。マシンコードを正確に分解することは骨の折れる仕事であり、膨大な量の作業が必要になります。最後に、プロセスは、私が説明したようにアセンブラーコードにつながる可能性があります。プログラムがC、C ++、Basicなどの高水準言語で記述されている場合、アセンブリコードはプログラムのコンパイルおよびリンクされた結果のみを表します。一般に、盗まれたコードを高レベルの言語レベルまでさかのぼってリバースエンジニアリングすることはできません。
これが意味することは、組み込みアプリケーションファームウェアを高水準言語で書くことには実際に利点があるということです。プログラムを完全にリバースエンジニアリングすることをより困難にする別の層を提供します。最高のパフォーマンスオプティマイザーは文字通り、プログラムを非常に難しい短いサブルーチンへの多数の呼び出しでいっぱいの巨大なスパゲッティボウルに変えることができるため、コンパイラーの最適化に最先端の技術を使用して組み込みアプリケーションをコンパイルすると、さらに大きなメリットが得られます逆アセンブラで解読します。
ほとんどの経験豊富な組み込み開発者は、先に進み、アプリケーションのMCUで提供される保護スキームを使用するように指示します。ただし、製品の最終段階に依存することはありません。競合他社に勝つための最善の方法は、製品を絶えずアップグレードして、ハッカーがコードを複製した時点で古いバージョンが古くなって面白くならないようにすることです。コードを変更したり、新しい機能を追加したり、PCボードを時々スピンさせて、すべてのI / Oや考えられるその他のものを入れ替えます。これにより、毎回レースに勝つことができます。
私はマイケルの答えは、この質問のために十分であると思いますが、私はこれらの両方のリンクを追加: PIC 18F1320ハッキングし、彼らが作るすべてを、私たちは破ることができます! これらは両方とも私にとって非常に興味深いものでした。