ホームページ > バックエンド開発 > C++ > 実行可能バイナリに埋め込まれた文字列を効果的に難読化するにはどうすればよいでしょうか?

実行可能バイナリに埋め込まれた文字列を効果的に難読化するにはどうすればよいでしょうか?

Mary-Kate Olsen
リリース: 2024-12-01 18:27:15
オリジナル
462 人が閲覧しました

How Can We Effectively Obfuscate Strings Embedded in Executable Binaries?

バイナリ コード内の文字列の難読化

問題ステートメント

実行可能バイナリ内に埋め込まれた文字列の難読化は、暗号化キーなどの機密情報を不正アクセスから保護するのに役立ちます。ただし、文字列を文字配列に保存するような単純な方法では、分析中にその内容が簡単に明らかになります。

解決策

コンパイルされたバイナリ内の文字列を効果的に隠すには、より洗練されたアプローチを使用できます。次の例を考えてみましょう:

#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;
}
ログイン後にコピー

このコードには、指定された文字列を暗号化するカスタム マクロ「DEFINE_HIDDEN_STRING」が組み込まれています。マクロは、提供されたシード値から派生した一意のキーを使用して各文字をエンコードします (例: 「私の強力な暗号化キー」 -> 0x7f)。シードに基づく暗号化アルゴリズムが文字シーケンスに適用されるため、結果のデータはランダムに見え、コンパイルされたバイナリ内で識別することが困難になります。

#define CRYPT_MACRO(r, d, i, elem) (elem ^ (d - i))
ログイン後にコピー
#define DEFINE_HIDDEN_STRING(NAME, SEED, SEQ) \
static const char* BOOST_PP_CAT(Get, NAME)() \
{ \
    static char data[] = { \
        BOOST_PP_SEQ_ENUM(BOOST_PP_SEQ_FOR_EACH_I(CRYPT_MACRO, SEED, SEQ)), \
        '' \
    }; \
    static bool isEncrypted = true; \
    if (isEncrypted) \
    { \
        for (unsigned i = 0; i < (sizeof(data) / sizeof(data[0])) - 1; ++i) \
        { \
            data[i] = CRYPT_MACRO(_, SEED, i, data[i]); \
        } \
        isEncrypted = false; \
    } \
    return data; \
}
ログイン後にコピー

このアプローチは、ファイル内の埋め込み文字列を効果的に難読化します。バイナリ コードであるため、暗号化キーとアルゴリズムの知識がなければ抽出することが困難になります。セキュリティと使いやすさのバランスが取れており、機密情報を保護する便利な方法を提供します。

以上が実行可能バイナリに埋め込まれた文字列を効果的に難読化するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート