|
|
|
#ifndef __OBFUSCATOR_H
|
|
|
|
#define __OBFUSCATOR_H
|
|
|
|
|
|
|
|
|
|
|
|
#include "Windas.h"
|
|
|
|
#include "XedWrap.h"
|
|
|
|
#include "NativeCode.h"
|
|
|
|
#include "Jit.h"
|
|
|
|
#include "OpaqueBranching.h"
|
|
|
|
|
|
|
|
#define OBF_ATTRIBUTE_JIT (1<<0)
|
|
|
|
#define OBF_ATTRIBUTE_OPAQUE_BRANCHES (1<<1)
|
|
|
|
#define OBF_ATTRIBUTE_RANDOMIZE_DIVISOR (1<<2)
|
|
|
|
|
|
|
|
typedef struct _OBFUSCATOR
|
|
|
|
{
|
|
|
|
ULONG MinDepthForRandomOpaqueBranch;
|
|
|
|
ULONG MinSizeForOpaqueBranch;
|
|
|
|
|
|
|
|
UCHAR OpaqueBranchChance;
|
|
|
|
UCHAR InstructionMutateChance;
|
|
|
|
UCHAR BlockDivisionFactor;
|
|
|
|
|
|
|
|
ULONG Flags;
|
|
|
|
PNATIVE_CODE_BLOCK GlobalBlock;
|
|
|
|
ULONG MaxDepth;
|
|
|
|
}OBFUSCATOR, *POBFUSCATOR;
|
|
|
|
|
|
|
|
BOOL ObfJitInst();
|
|
|
|
|
|
|
|
//Recursive obfuscation routine using opaque branches and jit
|
|
|
|
VOID ObfObfuscate1(POBFUSCATOR Obf, PNATIVE_CODE_BLOCK Block, ULONG Depth = 0);
|
|
|
|
|
|
|
|
#endif
|