
OBFUS.H 는 Compile-Time Offuscating C 응용 프로그램을위한 매크로 전용 라이브러리로, Tiny C (Tiny C)를 위해 특별히 설계되었습니다. Windows X86 및 X64 플랫폼에 맞게 조정되며 거의 모든 버전의 컴파일러를 지원합니다. C 프로그램을위한 매우 신뢰할 수있는 갑옷!
OBFUS.H를 프로젝트에 통합하는 것은 간단한 프로세스입니다. 코드에 다음 줄만 포함하십시오.
#include "obfus.h"이것은 편집 중에 코드를 자동으로 난독 화하여 지적 재산의 보호 및 기밀성을 보장합니다.
보호 구성을위한 사용 가능한 옵션 :
// Advanced code protection (see the "Virtualization" part of the documentation!) #define VIRT 1 // Allows you to use the functions of a math VM // Additional options #define CFLOW_V2 1 // More powerful Control Flow obfuscation (slowly!) #define ANTIDEBUG_V2 1 // Use better dynamic anti-debugging protection #define FAKE_SIGNS 1 // Adds fake signatures of various protectors or packers // Disabling default features #define NO_CFLOW 1 // Don't use Control-Flow obfuscation #define NO_ANTIDEBUG 1 // Don't build in debugging protection또는 컴파일러 Args와 함께 사용하십시오.
tcc "app.c" -w -D NO_CFLOW -D ANTIDEBUG_V2 -D FAKE_SIGNS -D VIRT
경고
난독 화로 응용 프로그램을 컴파일 할 때 -w 인수를 사용하여 경고를 억제하십시오. 그렇지 않으면 콘솔에는 최종 결과에 영향을 미치지 않는 수많은 협박 로그가 표시됩니다. 그들에게 놀라게 될 필요가 없습니다.
? 디버깅 보호는 많은 기본 MSVCRT 기능에 대한 호출로 인해 트리거됩니다. 코드의 중요한 장소에서는 ANTI_DEBUG; 건설하다. 예를 들어:
ANTI_DEBUG ;
if (! licenseExpired ()) {
// ...
} 이것은 명령시 포함 된 가상 머신을 통해 특정 계산이 수행되는 보호 기술입니다. 수학 연산 분석을 매우 어렵게 만듭니다! VIRT 옵션이 활성화 된 상태에서 작동합니다 (그리고 전용!). 그렇지 않으면 모든 가상 머신 명령은 일반 수학 연산자로 대체됩니다.
경고
중요한 위치의 가상화는 최적화에 영향을 줄 수 있습니다. 실제로 필요한 지역에서만주의를 기울이십시오.
| 기능 | 유형 | OP | 설명 | 예 |
|---|---|---|---|---|
VM_ADD | 긴 | + | 두 숫자를 추가합니다 | VM_ADD(5, 3) = 8 |
VM_SUB | 긴 | - | 두 숫자를 빼냅니다 | VM_SUB(5, 3) = 2 |
VM_MUL | 긴 | * | 두 숫자를 곱합니다 | VM_MUL(5, 3) = 15 |
VM_DIV | 긴 | / | 두 숫자를 나눕니다 | VM_DIV(6, 3) = 2 |
VM_MOD | 긴 | % | 두 숫자의 계산을 계산합니다 | VM_MOD(5, 3) = 2 |
VM_EQU | 부 | == | 두 숫자가 같는지 확인합니다 | VM_EQU(5, 5) = true |
VM_NEQ | 부 | != | 두 숫자가 같지 않은지 확인합니다 | VM_NEQ(5, 3) = true |
VM_LSS | 부 | < | 첫 번째 숫자가 두 번째 숫자보다 적은지 확인합니다. | VM_LSS(3, 5) = true |
VM_GTR | 부 | > | 첫 번째 숫자가 두 번째 숫자보다 큰지 확인합니다. | VM_GTR(5, 3) = true |
VM_LEQ | 부 | <= | 첫 번째 숫자가 두 번째 숫자보다 작거나 같은지 확인합니다. | VM_LEQ(3, 5) = true |
VM_GEQ | 부 | >= | 첫 번째 숫자가 두 번째 숫자보다 크든 같은지 확인합니다. | VM_GEQ(5, 3) = true |
VM_ADD_DBL | 긴 더블 | + | 두 개의 이중 숫자를 추가합니다 | VM_ADD_DBL(5.5, 3.2) = ≈8.7 |
VM_SUB_DBL | 긴 더블 | - | 두 개의 이중 숫자를 빼냅니다 | VM_SUB_DBL(5.5, 3.2) = ≈2.3 |
VM_MUL_DBL | 긴 더블 | * | 두 개의 이중 숫자를 곱합니다 | VM_MUL_DBL(5.5, 3.2) = ≈17.6 |
VM_DIV_DBL | 긴 더블 | / | 두 개의 이중 숫자를 나눕니다 | VM_DIV_DBL(6.0, 3.0) = ≈2.0 |
VM_LSS_DBL | 부 | < | 첫 번째 이중 번호가 두 번째 이중 번호보다 작은지 확인합니다. | VM_LSS_DBL(3.5, 5.2) = true |
VM_GTR_DBL | 부 | > | 첫 번째 이중 번호가 두 번째 이중 번호보다 큰지 확인합니다. | VM_GTR_DBL(5.5, 3.2) = true |
가상 머신은 일부 기본
double비교 작업을 지원하지 않습니다.
가상 머신 호출을 사용하는 논리 연산자를 사용하여 코드의 이해를 더욱 복잡하게 할 수 있습니다.
| 연산자 | 설명 |
|---|---|
VM_IF | if 대신 사용하십시오 |
VM_ELSE_IF | else if 대신 사용하십시오 |
VM_ELSE | else 대신 사용하십시오 |
가상화 사용의 간단한 예 :
// ...
#define VIRT 1
// ...
// if ((2 + 2) == 4) { ... }
VM_IF ( VM_EQU ( VM_ADD ( 2 , 2 ), 4 )) {
printf ( "2 + 2 == 4!" );
}
// if (condition1) { ... }
// else if (condition2) { ... }
// else { ... }
VM_IF ( condition1 ) {
// if
} VM_ELSE_IF ( condition2 ) {
// else if
} VM_ELSE {
// else
}파일 테스트/virtualmachine.c에서 가상 머신의 모든 기능을 사용하는 예를 찾을 수 있습니다.
숙련 된 반전에 대한 고급 보호가 필요한 경우 CFLOW_V2 및 ANTIDEBUG_V2 옵션을 사용하십시오.
// Let's obfuscate your code!
#include <stdio.h>
#define VIRT 1 // [+] Use math virtual machine
#define CFLOW_V2 1 // [+] ControlFlow v2
#define FAKE_SIGNS 1 // [+] Fake signatures
#define ANTIDEBUG_V2 1 // [+] AntiDebug v2
#define NO_CFLOW 0 // [-] Disable ControlFlow
#define NO_ANTIDEBUG 0 // [-] Disable AntiDebug
#include "obfus.h"
void main () {
char * out = malloc ( 256 );
strcpy ( out , "Hello, world!n" );
if ( out ) {
printf ( out );
} else {
printf ( "Error!n" );
}
free ( out );
int result = VM_ADD ( 5 , 7 ); // 5 + 7
VM_IF ( VM_EQU ( result , 12 )) { // (5 + 7) == 12
printf ( "5 + 7 == 12" );
}
} 최신 버전의 Tiny C ( 0.9.27 )는 사용하기 위해 권장됩니다. 불행히도, 일부 버전의 컴파일러는 완전히 난독 화하는 데 필요한 기능을 지원하지 않습니다. Visual C , GCC 및 Clang은 지원되지 않으며 지원되지 않을 것입니다.
공식 저장소에서 패키지를 다운로드하여 Windows 용 특수 스크립트를 사용하여 최신 버전의 obfus.h 얻을 수 있습니다. git 사용하지 않고 보안 업데이트를 자동화 해야하는 경우 유용합니다.
예를 들어 프로젝트를 구축하기 전에 사용할 수 있습니다.
+ C:...> call obfh-update C:...> tcc app.c -w스크립트는 현재 디렉토리에서 OBFUS.H 파일의 내용을 업데이트합니다 (지정된 구성에 따라)
OBFUS.H를 사용하여 보호되는 프로그램 코드 (및 원래 논리)는 복구하기가 거의 불가능합니다 (deobfuscate) . 그러나이 Oppuscator를 사용한다고해서 모든 유형의 위협에 대한 완전한 보호를 보장하지는 않습니다. 내부 프로그램 보안 시스템을 개발하고 유지하는 것이 중요합니다.
난독 화 후에도 다이어그램 코드가 어떻게 보이는지 :
리버스는 디 컴파일러를 사용하려고한다면 이와 같은 것을 볼 것입니다.
이 프로젝트의 개발에 도움을 준 모든 분들께 감사드립니다. 감사합니다! ❤️
그리고 당신 덕분에 ? 이 프로젝트에주의를 기울여!