実行可能ファイルをリバースエンジニアリングから保護していますか?
私はC / C ++コードを逆アセンブリやリバースエンジニアリングから保護する方法を検討しています。通常、私は自分のコードでこの動作を自分で容認することは決してありません。しかし、私が取り組んでいる現在のプロトコルは、さまざまな人々のセキュリティのために、決して検査または理解されてはなりません。 今、これは私にとって新しい主題であり、インターネットはリバースエンジニアリングを防止するために実際に機知に富んでいるのではなく、リバースエンジニアリングの方法に関する大量の情報を示しています 私がこれまでに考えたことのいくつかは次のとおりです。 コードインジェクション(実際の関数呼び出しの前後にダミー関数を呼び出す) コードの難読化(バイナリの逆アセンブリを壊す) 独自のスタートアップルーチンを記述する(デバッガーがバインドするのが難しい) void startup(); int _start() { startup( ); exit (0) } void startup() { /* code here */ } デバッガーのランタイムチェック(検出された場合は強制終了) 機能トランポリン void trampoline(void (*fnptr)(), bool ping = false) { if(ping) fnptr(); else trampoline(fnptr, true); } 無意味な割り当てと割り当て解除(スタックは大幅に変更されます) 無意味なダミー呼び出しとトランポリン(逆アセンブリ出力での大量のジャンプ) 大量のキャスト(難読化された分解用) これらは私が考えたことの一部ですが、適切な時間枠が与えられれば、コードアナリストがそれらをすべて回避または把握することができます。私が持っている他の選択肢はありますか?