프로젝트 소개

obfus.h는 Windows x86 및 x64에서 Tiny C Compiler(tcc)용으로 특별히 설계된, C 애플리케이션을 컴파일 타임에 난독화하기 위한 매크로 전용 라이브러리입니다. 소스에 포함시키는 단일 헤더로 배포되며, 컴파일 중에 난독화가 자동으로 적용됩니다. 저자는 거의 모든 tcc 버전을 지원하며 tcc 0.9.27을 권장하고, Visual C, GCC, Clang은 지원되지 않는다고 밝히고 있습니다. 문서화된 기능: - 함수 호출을 읽기 어렵게 만드는 함수 호출 난독화. - 런타임 분석을 방해하기 위한 안티 디버깅 메커니즘. 많은 기본 MSVCRT 함수 호출에 의해 보호가 트리거되며, 중요한 지점에 ANTI_DEBUG; 구문을 배치할 수 있습니다. - 조건문과 루프를 재구성하는 제어 흐름 코드 변형. CFLOW_V2 옵션은 더 강력한(그리고 더 느린) 변형을 제공합니다. - HIDE_STRING(str)을 통한 문자열 숨김. 문자열을 정적으로 선언하는 대신 런타임에 mov 명령어를 통해 스택에 조립합니다. README는 일부 디컴파일러가 정적 최적화로 인해 여전히 문자열을 드러낼 수 있다고 경고합니다. - 디컴파일러 출력을 시각적으로 깨뜨리기 위한 안티 디컴파일 기법. - 리버스 엔지니어를 혼란시키기 위한 다양한 패커 및 프로텍터의 가짜 서명. - 수학 가상 머신(VIRT로 활성화). VM_ADD, VM_SUB, VM_MUL, VM_DIV, VM_MOD, VM_EQU/VM_NEQ/VM_LSS/VM_GTR/VM_LEQ/VM_GEQ와 같은 비교 매크로, double 변형, VM_IF/VM_ELSE_IF/VM_ELSE 논리 구문을 노출합니다. README는 가상화가 최적화에 영향을 줄 수 있으므로 필요한 곳에만 사용해야 하며, 일부 double 비교 연산은 지원되지 않는다고 경고합니다. 구성은 VIRT, CFLOW_V2, ANTIDEBUG_V2, FAKE_SIGNS와 같은 define과 NO_OBF, NO_CFLOW, NO_ANTIDEBUG 비활성화 플래그를 통해, 또는 컴파일러 인수(예: tcc app.c -w -D NO_CFLOW -D ANTIDEBUG_V2 -D FAKE_SIGNS -D VIRT)를 통해 이루어집니다. README는 난독화 중에 생성되는 많은 경고를 억제하기 위해 -w로 컴파일할 것을 권장합니다. 사용법은 단일 #include "obfus.h" 줄입니다. Windows 배치 스크립트(include-updater/obfh-update.cmd)는 git 없이 저장소에서 최신 헤더를 가져올 수 있어, 빌드 전 자동화된 보안 업데이트에 유용합니다. README는 보호 메커니즘에 대한 블랙박스 분석(저자는 발견 사항이 패치되었다고 밝힘), 이전 세대를 사용한 CTF 풀이, obfus.h로 보호된 파일을 스캔하는 유틸리티인 ObfusHunter를 포함한 커뮤니티 보안 분석 링크를 제공합니다. 저자는 보호된 프로그램 로직을 복구하는 것이 거의 불가능하다고 말하지만, 난독화만으로는 완전한 보호가 보장되지 않으며 내부 보안 시스템을 계속 개발하고 유지해야 한다고 강조합니다.