"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo podemos ofuscar eficazmente cadenas incrustadas en archivos binarios ejecutables?

¿Cómo podemos ofuscar eficazmente cadenas incrustadas en archivos binarios ejecutables?

Publicado el 2024-12-22
Navegar:607

How Can We Effectively Obfuscate Strings Embedded in Executable Binaries?

Ocultar cadenas en código binario

Declaración del problema

Ocultar cadenas incrustadas en archivos binarios ejecutables es valioso para proteger información confidencial, como claves de cifrado, contra el acceso no autorizado. Sin embargo, métodos sencillos como almacenar la cadena en una matriz de caracteres pueden revelar fácilmente su contenido durante el análisis.

Solución

Para ocultar cadenas de manera efectiva en archivos binarios compilados, se puede emplear un enfoque más sofisticado. Considere el siguiente ejemplo:

#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 

Este código incorpora una macro personalizada, "DEFINE_HIDDEN_STRING", para cifrar la cadena proporcionada. La macro codifica cada carácter utilizando una clave única derivada del valor inicial proporcionado (por ejemplo, "Mi clave de cifrado segura" -> 0x7f). Se aplica un algoritmo de cifrado basado en la semilla a la secuencia de caracteres, lo que hace que los datos resultantes parezcan aleatorios y difíciles de identificar en el binario compilado.

#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)), \
        '\0' \
    }; \
    static bool isEncrypted = true; \
    if (isEncrypted) \
    { \
        for (unsigned i = 0; i 

Este enfoque ofusca eficazmente las cadenas incrustadas dentro del código binario, lo que hace que sea difícil extraerlas sin conocer la clave y el algoritmo de cifrado. Logra un equilibrio entre seguridad y facilidad de uso, ofreciendo un método conveniente para proteger información confidencial.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3