バイナリ コードの文字列を難読化する方法
バイナリ実行可能ファイル内の機密データの保護は、取得を防ぐために暗号化キーを隠すなど、必要な場合があります。 。ただし、文字列をバイナリ内にプレーン テキストで保存すると脆弱になります。ここで疑問が生じます: 機能を維持しながら文字列を非表示にすることはできますか?
従来の非表示方法
単純だが非効率なアプローチは、以下に示すように、手動で各文字を個別に保存することです。
char encryptionKey[30]; int n = 0; encryptionKey[n++] = 'M'; encryptionKey[n++] = 'y'; ...
ただし、この解決策は面倒であり、そうではありません。
文字列難読化の強化
前の方法を改善するには、Boost プリプロセッサ ライブラリを活用して、よりシームレスで効率的な文字列難読化を実現します。次のコードを考えてみましょう:
#include "HideString.h" DEFINE_HIDDEN_STRING(EncryptionKey, 0x7f, ('M')('y')(' ')('s')('t')('r')('o')('n')('g')(' ')('e')('n')('c')('r')('y')('p')('t')('i')('o')('n')(' ')('k')('e')('y')) DEFINE_HIDDEN_STRING(EncryptionKey2, 0x27, ('T')('e')('s')('t')) int main() { std::cout << GetEncryptionKey() << std::endl; std::cout << GetEncryptionKey2() << std::endl; return 0; }
この更新されたコード:
このソリューションでは暗号化を使用して文字を非表示にし、単純なスキャンによる検出に対する耐性を高めています。さらに、手動で文字の配列を作成するよりも簡潔で保守しやすいです。
難読化されたデータの例
結果の難読化された文字列「My Strongcryption key」は、次のようになります。バイナリ コード:
0x00B0200C 32 07 5d 0f 0f 08 16 16 10 56 10 1a 10 00 08 2.]......V..... 0x00B0201B 00 1b 07 02 02 4b 01 0c 11 00 00 00 00 00 00 .....K.........
このデータは一見ランダムな値を示します。
結論
この手法は、決意の強い攻撃者に対する確実な保護を提供するものではありませんが、攻撃者が特定の文字列を特定するのに必要な時間と労力が大幅に増加する可能性があります。バイナリ実行可能ファイル内の機密データを発見し、追加のセキュリティ層を提供します。
以上が機密データを保護するためにバイナリ コードの文字列を効果的に難読化するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。