Sobre o projeto

obfus.h é uma biblioteca somente de macros para ofuscar aplicações C em tempo de compilação, projetada especificamente para o Tiny C Compiler (tcc) no Windows x86 e x64. É distribuída como um único cabeçalho que você inclui no seu código-fonte; a ofuscação é aplicada automaticamente durante a compilação. O autor observa que ela suporta quase todas as versões do tcc, recomenda o tcc 0.9.27 e afirma que Visual C, GCC e Clang não são suportados. Recursos documentados: - Ofuscação de chamadas de função para tornar as chamadas menos legíveis. - Mecanismos anti-depuração destinados a dificultar a análise em tempo de execução; a proteção é acionada por chamadas a muitas funções básicas do MSVCRT, e uma construção ANTI_DEBUG; pode ser colocada em pontos críticos. - Mutação de código de fluxo de controle que reestrutura condições e laços; uma opção CFLOW_V2 fornece uma variante mais forte (e mais lenta). - Ocultação de strings via HIDE_STRING(str), que monta strings na pilha por meio de instruções mov em tempo de execução em vez de declará-las estaticamente. O README alerta que alguns descompiladores ainda podem revelá-las devido a otimizações estáticas. - Técnicas anti-descompilação destinadas a quebrar visualmente a saída do descompilador. - Assinaturas falsas de vários packers e protetores para confundir engenheiros reversos. - Uma máquina virtual matemática (habilitada com VIRT) que expõe VM_ADD, VM_SUB, VM_MUL, VM_DIV, VM_MOD, macros de comparação como VM_EQU/VM_NEQ/VM_LSS/VM_GTR/VM_LEQ/VM_GEQ, variantes para double e construções lógicas VM_IF/VM_ELSE_IF/VM_ELSE. O README alerta que a virtualização pode impactar a otimização e deve ser usada apenas onde necessário, e que algumas operações de comparação com double não são suportadas. A configuração é feita por meio de defines como VIRT, CFLOW_V2, ANTIDEBUG_V2, FAKE_SIGNS e sinalizadores de desativação NO_OBF, NO_CFLOW, NO_ANTIDEBUG, ou via argumentos do compilador (por exemplo, tcc app.c -w -D NO_CFLOW -D ANTIDEBUG_V2 -D FAKE_SIGNS -D VIRT). O README aconselha compilar com -w para suprimir os muitos avisos produzidos durante a ofuscação. O uso é uma única linha #include "obfus.h". Um script em lote do Windows (include-updater/obfh-update.cmd) pode buscar o cabeçalho mais recente do repositório sem git, útil para atualizações de segurança automatizadas antes das compilações. O README indica análises de segurança da comunidade, incluindo uma análise de caixa preta dos mecanismos de proteção (cujas descobertas o autor diz terem sido corrigidas), um write-up de CTF usando uma geração anterior e o ObfusHunter, um utilitário para escanear arquivos protegidos pelo obfus.h. O autor afirma que a lógica de programas protegidos é quase impossível de recuperar, mas enfatiza que a ofuscação por si só não garante proteção completa e que sistemas de segurança internos ainda devem ser desenvolvidos e mantidos.