| skipped 26 lines |
27 | 27 | | // Thanks to @horsicq && @ac3ss0r |
28 | 28 | | #define RND(min, max) (min + (((__COUNTER__ + (__LINE__ * __LINE__)) * 2654435761u) % (max - min + 1))) |
29 | 29 | | |
| 30 | + | #define BREAK_STACK \ |
| 31 | + | asm __volatile("xorl %eax, %eax"); \ |
| 32 | + | asm __volatile("jz 1f"); \ |
| 33 | + | asm __volatile(".byte 0x00"); \ |
| 34 | + | asm __volatile("1:"); |
| 35 | + | |
30 | 36 | | void junkFunc(int z, ...) { |
31 | | - | __asm__("nop"); |
| 37 | + | BREAK_STACK; |
| 38 | + | __asm__ __volatile("nop"); |
| 39 | + | return; |
| 40 | + | } |
| 41 | + | |
| 42 | + | void junkFuncEmpty() { |
| 43 | + | BREAK_STACK; |
| 44 | + | __asm__ __volatile("nop"); |
32 | 45 | | return; |
33 | 46 | | } |
34 | 47 | | |
| skipped 31 lines |
66 | 79 | | #define NOP_FLOOD \ |
67 | 80 | | (RND(0, 1000)) + int_Proxy(RND(0, 1000)); \ |
68 | 81 | | if (junkFunc) { \ |
69 | | - | __asm__("nop"); \ |
| 82 | + | __asm__ __volatile("nop"); \ |
70 | 83 | | } \ |
71 | 84 | | do { \ |
72 | | - | __asm__( \ |
| 85 | + | __asm__ __volatile( \ |
73 | 86 | | "nop\n" \ |
74 | 87 | | "nop"); \ |
75 | 88 | | } while (RND(0, 200) * _0) |
| skipped 1 lines |
77 | 90 | | static char rndValueToProxy = RND(0, 10); |
78 | 91 | | |
79 | 92 | | int int_Proxy(int value) { |
| 93 | + | BREAK_STACK; |
80 | 94 | | if (rndValueToProxy == value) |
81 | 95 | | return rndValueToProxy; |
82 | 96 | | |
| skipped 5 lines |
88 | 102 | | } |
89 | 103 | | |
90 | 104 | | double double_Proxy(double value) { |
| 105 | + | BREAK_STACK; |
91 | 106 | | junkFunc(RND(0, 1000), RND(0, 1000)); |
92 | 107 | | FAKE_CPUID; |
93 | 108 | | return (value * _1); |
94 | 109 | | } |
95 | 110 | | |
96 | 111 | | int condition_True() { |
| 112 | + | BREAK_STACK; |
97 | 113 | | FAKE_CPUID; |
98 | 114 | | return _1 && TRUE; |
99 | 115 | | } |
100 | 116 | | |
101 | 117 | | int condition_Proxy(int junk, int condition) { |
| 118 | + | BREAK_STACK; |
| 119 | + | |
102 | 120 | | int result = int_Proxy(condition * _1); |
103 | 121 | | if (result == (FALSE * junk)) { |
104 | 122 | | return _8 - (_4 * _2) && !condition_True(); |
| skipped 16 lines |
121 | 139 | | int_Proxy(_3 - RND(0, 10000)); \ |
122 | 140 | | } \ |
123 | 141 | | else if (FALSE * RND(0, 1000)) { \ |
124 | | - | NOP_FLOOD; \ |
| 142 | + | BREAK_STACK; \ |
125 | 143 | | } \ |
126 | 144 | | else if (FALSE * (int_Proxy(RND(0, 1000)) ? RND(1, 99999999) : RND(1, 99999999))) { \ |
127 | 145 | | NOP_FLOOD; \ |
| skipped 101 lines |
229 | 247 | | |
230 | 248 | | static char loadStr[5]; |
231 | 249 | | HMODULE LoadLibraryA_0(LPCSTR lpLibFileName) { |
| 250 | + | BREAK_STACK; |
232 | 251 | | // return LoadLibraryA(lpLibFileName); |
233 | 252 | | |
234 | 253 | | typedef HMODULE(WINAPI * LoadLibraryAFunc)(LPCSTR); |
| skipped 49 lines |
284 | 303 | | |
285 | 304 | | #if !defined no_antidebug |
286 | 305 | | int IsDebuggerPresent_Proxy() { |
| 306 | + | BREAK_STACK; |
287 | 307 | | NOP_FLOOD; |
288 | 308 | | #if defined hide_antidebug |
289 | 309 | | char result[32]; |
| skipped 28 lines |
318 | 338 | | } |
319 | 339 | | |
320 | 340 | | void crash() { |
| 341 | + | BREAK_STACK; |
321 | 342 | | __asm__("int $3"); |
322 | 343 | | } |
323 | 344 | | |
| skipped 15 lines |
339 | 360 | | #endif |
340 | 361 | | |
341 | 362 | | char *getStdLibName() { |
| 363 | + | BREAK_STACK; |
342 | 364 | | NOP_FLOOD; |
343 | 365 | | junkFunc(_0 + _3); |
344 | 366 | | junkFunc(_3 - _2); |
| skipped 30 lines |
375 | 397 | | char *getStdLibName_14() { return getStdLibName_13(); } |
376 | 398 | | char *getStdLibName_15() { return getStdLibName_14(); } |
377 | 399 | | char *getStdLibName_16() { return getStdLibName_15(); } |
378 | | - | char *getStdLibName_Proxy() { return getStdLibName_16(); } |
| 400 | + | char *getStdLibName_Proxy() { |
| 401 | + | BREAK_STACK; |
| 402 | + | return getStdLibName_16(); |
| 403 | + | } |
379 | 404 | | |
380 | 405 | | #define callfunc(name, ...) ((void *(*)())GetProcAddress(LoadLibraryA_Proxy(getStdLibName_Proxy()), name))(__VA_ARGS__); |
381 | 406 | | |
382 | 407 | | // printf |
383 | 408 | | void printf_custom(int junk, const char *format, ...) { |
| 409 | + | BREAK_STACK; |
384 | 410 | | char buffer[1024]; |
385 | 411 | | va_list args; |
386 | 412 | | NOP_FLOOD; |
| skipped 9 lines |
396 | 422 | | // printf as void |
397 | 423 | | #define printf(...) \ |
398 | 424 | | do { \ |
| 425 | + | BREAK_STACK; \ |
399 | 426 | | junkFunc((RND(0, 1000) * 3) < _0); \ |
400 | 427 | | printf_custom(RND(0, 1000), __VA_ARGS__); \ |
401 | 428 | | } while (_0 > (RND(0, 100000000000) * _2) + 82) |
| skipped 332 lines |