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.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.