Skip to content

Commit 8c7a997

Browse files
committed
initial sync
1 parent 92982af commit 8c7a997

File tree

10 files changed

+1396
-0
lines changed

10 files changed

+1396
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
build/

CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
cmake_minimum_required(VERSION 3.8)
2+
3+
add_subdirectory(${PROJECT_SOURCE_DIR}/lib)
4+
add_subdirectory(${PROJECT_SOURCE_DIR}/test)

lib/CMakeLists.txt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
cmake_minimum_required(VERSION 3.8)
2+
project(NoMercyModuleValidator CXX)
3+
4+
add_library (${PROJECT_NAME}
5+
STATIC
6+
include/NoMercyValidator.h
7+
src/main.cpp
8+
)
9+
10+
target_link_libraries(
11+
${PROJECT_NAME}
12+
crypt32
13+
wintrust
14+
)
15+
16+
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 20)
17+
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD_REQUIRED ON)
18+
set_property(TARGET ${PROJECT_NAME} PROPERTY CMAKE_CXX_EXTENSIONS OFF)

lib/include/JunkMacros.h

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
#pragma once
2+
3+
#ifdef _M_X64
4+
5+
#define KARMA_MACRO_1
6+
#define KARMA_MACRO_2
7+
8+
#else
9+
// ..
10+
#define JUNK_CODE_TWO_2(lineno, value) \
11+
__asm {jz _1##lineno} \
12+
__asm {jnz _1##lineno} \
13+
__asm {_emit 0x##value} \
14+
__asm {_1##lineno: }
15+
#define JUNK_CODE_TWO_1(name, value) JUNK_CODE_TWO_2(name, value)
16+
#define JUNK_CODE_TWO JUNK_CODE_TWO_1(__LINE__, __LINE__*1111%253)
17+
18+
// ..
19+
#define JUNK_CODE_TWO_2_2(lineno) \
20+
__asm {jz _112##lineno} \
21+
__asm {jnz _112##lineno} \
22+
__asm {_emit 0e8h} \
23+
__asm {_112##lineno: }
24+
#define JUNK_CODE_TWO_1_2(name) JUNK_CODE_TWO_2_2(name)
25+
#define JUNK_CODE_TWO2 JUNK_CODE_TWO_1_2(__LINE__)
26+
27+
// ..
28+
#define JUNK_CODE_TWO_2_3(lineno) \
29+
__asm { xor eax, eax } \
30+
__asm { test eax, eax } \
31+
__asm {jz _1121##lineno} \
32+
__asm {jnz _1120##lineno} \
33+
__asm {_1120##lineno: } \
34+
__asm {_emit 0e8h} \
35+
__asm {_1121##lineno: } \
36+
__asm { xor eax, 3 } \
37+
__asm { add eax, 4 } \
38+
__asm { xor eax, 5 }
39+
#define JUNK_CODE_TWO_1_3(name) JUNK_CODE_TWO_2_3(name)
40+
#define JUNK_CODE_TWO3 JUNK_CODE_TWO_1_3(__LINE__)
41+
42+
43+
// ..
44+
#define JUNK_CODE_THREE_2(lineno, value1, value2) \
45+
__asm {clc} \
46+
__asm {jnb _3t##lineno} \
47+
__asm {_emit 0x##value1} \
48+
__asm {_emit 0x##value2} \
49+
__asm {_3t##lineno: }
50+
#define JUNK_CODE_THREE_1(name, value1, value2) JUNK_CODE_THREE_2(name, value1, value2)
51+
#define JUNK_CODE_THREE JUNK_CODE_THREE_1(__LINE__, __LINE__*1222%253, __LINE__*1111%253)
52+
53+
// ..
54+
#define JUNK_CODE_FOUR_2(lineno, value) \
55+
__asm {jl _11f##lineno} \
56+
__asm {_12f##lineno: } \
57+
__asm {jmp _13f##lineno } \
58+
__asm {_emit 0x##value } \
59+
__asm {_11f##lineno: } \
60+
__asm {jz _12f##lineno } \
61+
__asm {_13f##lineno: }
62+
#define JUNK_CODE_FOUR_1(name, value) JUNK_CODE_FOUR_2(name, value)
63+
#define JUNK_CODE_FOUR JUNK_CODE_FOUR_1(__LINE__, __LINE__*1111%253)
64+
65+
66+
// ..
67+
#define JUNK_CODE_FIVE_2(lineno) \
68+
__asm {pushf} \
69+
__asm {push 0x0a} \
70+
__asm {_51f##lineno: jnb _53f##lineno} \
71+
__asm {jmp _52f##lineno} \
72+
__asm {_52f##lineno: call _54f##lineno} \
73+
__asm {_53f##lineno: jnb _52f##lineno} \
74+
__asm {_54f##lineno: add esp,4} \
75+
__asm {jmp _55f##lineno} \
76+
__asm {_55f##lineno: } \
77+
__asm {dec dword ptr [esp]} \
78+
__asm {jno _56f##lineno} \
79+
__asm {_56f##lineno: jns _51f##lineno} \
80+
__asm {jp _57f##lineno} \
81+
__asm {_57f##lineno: add esp,4} \
82+
__asm {popf} \
83+
__asm {jmp _58f##lineno} \
84+
__asm {_58f##lineno: }
85+
#define JUNK_CODE_FIVE_1(name) JUNK_CODE_FIVE_2(name)
86+
#define JUNK_CODE_FIVE JUNK_CODE_FIVE_1(__LINE__)
87+
88+
89+
#define KARMA_MACRO_1 JUNK_CODE_FOUR JUNK_CODE_TWO3 JUNK_CODE_THREE JUNK_CODE_TWO JUNK_CODE_FIVE JUNK_CODE_TWO2
90+
#define KARMA_MACRO_2 JUNK_CODE_FIVE JUNK_CODE_THREE JUNK_CODE_TWO2 JUNK_CODE_TWO JUNK_CODE_FOUR JUNK_CODE_TWO3
91+
#endif

lib/include/NoMercyValidator.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#pragma once
2+
3+
bool __cdecl NMMV_IsValidModule();
4+
void __cdecl NMMV_SafeExit();

0 commit comments

Comments
 (0)