"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como podemos ofuscar efetivamente strings incorporadas em binários executáveis?

Como podemos ofuscar efetivamente strings incorporadas em binários executáveis?

Publicado em 2024-12-22
Navegar:859

How Can We Effectively Obfuscate Strings Embedded in Executable Binaries?

Ofuscando strings em código binário

Declaração do problema

Ofuscar strings incorporadas em binários executáveis ​​é valioso para proteger informações confidenciais, como chaves de criptografia, contra acesso não autorizado. No entanto, métodos simples, como armazenar a string em uma matriz de caracteres, podem facilmente revelar seu conteúdo durante a análise.

Solução

Para ocultar efetivamente strings em binários compilados, uma abordagem mais sofisticada pode ser empregada. Considere o seguinte exemplo:

#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 uma macro personalizada, "DEFINE_HIDDEN_STRING," para criptografar a string fornecida. A macro codifica cada caractere usando uma chave exclusiva derivada do valor inicial fornecido (por exemplo, "Minha chave de criptografia forte" -> 0x7f). Um algoritmo de criptografia baseado na semente é aplicado à sequência de caracteres, fazendo com que os dados resultantes pareçam aleatórios e difíceis de identificar no binário 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 

Essa abordagem ofusca efetivamente as strings incorporadas no código binário, tornando-as difíceis de extrair sem o conhecimento da chave de criptografia e do algoritmo. Ele atinge um equilíbrio entre segurança e facilidade de uso, oferecendo um método conveniente para proteger informações confidenciais.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3