home *** CD-ROM | disk | FTP | other *** search
/ Cracking 2 / Cracking II..iso / Texty / crackme / hard-lu48.asm < prev    next >
Encoding:
Assembly Source File  |  1999-07-27  |  10.4 KB  |  621 lines

  1. ;Written by Lucifer48 for "Hard" :)
  2. ;compile with :tasm32 -ml -m5 -q hard-lu48
  3. ;              tlink32 -Tpe -aa -x -c hard-lu48 ,,, import32
  4. ;-----------------------------------------------------------------------------
  5. .386p                                        ;386 instruction set enable
  6. .model flat, stdCALL
  7.  
  8. extrn    ExitProcess     : PROC
  9. extrn    MessageBoxA     : PROC
  10.  
  11. .data
  12.  
  13. combin    db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  14.     db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  15.     db 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0    ;1: all possibilities have been tested
  16.                             ;before (only 1 solution).
  17. texte2  db "Nothing has been found",0
  18.  
  19. titre   db "Oui!!!!!!!",0
  20. texte    db "O O O O O O O O O O O O O ",10,13
  21.     db "O O O O O O O O O O O O O ",10,13
  22.     db "O O O O O O O O O O O O O ",0
  23.  
  24. .code
  25. ;-----------------------------------------------------------------------------
  26. TESTCOMB PROC
  27.  
  28. mov edi, 39F51B20h
  29. push 118DF6E7h
  30. mov esi, 202937CDh
  31. mov ebp, 6FB25085h
  32.  
  33. mov eax, dword ptr [ebx+00h]
  34. test al, al
  35. je SUITE1
  36. add edi, 00004925h
  37. sub dword ptr [esp], 00040CE2h
  38. mov eax, esi
  39. mov ecx, 00000003h
  40. cdq
  41. idiv ecx
  42. mov esi, eax
  43. add ebp, 0000FD18h
  44.  
  45. SUITE1:
  46. mov eax, dword ptr [ebx+01h]
  47. test al, al
  48. je SUITE2
  49. sub edi, 000A4DACh
  50. add dword ptr [esp], 000C909Ch
  51. lea eax, dword ptr [esi+4*esi]
  52. mov esi, eax
  53. sub ebp, 000594FEh
  54.  
  55. SUITE2:
  56. mov eax, dword ptr [ebx+02h]
  57. test al, al
  58. je SUITE3
  59. add edi, 0009DE58h
  60. sub dword ptr [esp], 000342ADh
  61. mov eax, esi
  62. mov ecx, 00000007h
  63. cdq
  64. idiv ecx
  65. mov esi, eax
  66. add ebp, 000154DFh
  67.  
  68. SUITE3:
  69. mov eax, dword ptr [ebx+03h]
  70. test al, al
  71. je SUITE4
  72. sub edi, 0006A9F6h
  73. sub dword ptr [esp], 000C9164h
  74. sar esi, 1
  75. jns signe1
  76. adc esi, 00000000h
  77. signe1:
  78. sub ebp, 000169E5h
  79.  
  80. SUITE4:
  81. mov eax, dword ptr [ebx+04h]
  82. test al, al
  83. je SUITE5
  84. sub edi, 00039798h
  85. sub dword ptr [esp], 00011E75h
  86. mov eax, esi
  87. add eax, eax
  88. mov esi, eax
  89. add ebp, 00056942h
  90.  
  91. SUITE5:
  92. mov eax, dword ptr [ebx+05h]
  93. test al, al
  94. je SUITE6
  95. sub edi, 000A4DACh
  96. add dword ptr [esp], 000C909Ch
  97. lea eax, dword ptr [esi+4*esi]
  98. mov esi, eax
  99. sub ebp, 00080109h
  100.  
  101. SUITE6:
  102. mov eax, dword ptr [ebx+06h]
  103. test al, al
  104. je SUITE7
  105. mov eax, edi
  106. mov ecx, 00000009h
  107. cdq
  108. idiv ecx
  109. mov edi, eax
  110. mov eax, dword ptr [esp]
  111. lea eax, dword ptr [eax+4*eax]
  112. mov dword ptr [esp], eax
  113. add esi, 00005C0Dh
  114. sub ebp, 000548E6h
  115.  
  116. SUITE7:
  117. mov eax, dword ptr [ebx+07h]
  118. test al, al
  119. je SUITE8
  120. mov eax, edi
  121. shl eax, 02
  122. mov edi, eax
  123. add dword ptr [esp], 000C909Ch
  124. add esi, 00039BEDh
  125. mov eax, ebp
  126. mov ecx, 00000005
  127. cdq
  128. idiv ecx
  129. mov ebp, eax
  130.  
  131. SUITE8:
  132. mov eax, dword ptr [ebx+08h]
  133. test al, al
  134. je SUITE9
  135. sub edi, 000A4DACh
  136. add dword ptr [esp], 000C909Ch
  137. lea eax, dword ptr [esi+2*esi]
  138. mov esi, eax
  139. sub ebp, 000594FEh
  140.  
  141. SUITE9:
  142. mov eax, dword ptr [ebx+09h]
  143. test al, al
  144. je SUITE10
  145. sub edi, 000A5D4Ch
  146. add dword ptr [esp], 000C909Ch
  147. lea eax, dword ptr [esi+4*esi]
  148. mov esi, eax
  149. sub ebp, 000592A6h
  150.  
  151. SUITE10:
  152. mov eax, dword ptr [ebx+0Ah]
  153. test al, al
  154. je SUITE11
  155. sub edi, 00098A5Ch
  156. add dword ptr [esp], 000C8FD4h
  157. mov eax, esi
  158. mov ecx, 00000005h
  159. cdq
  160. idiv ecx
  161. mov esi, eax
  162. sub ebp, 0005E382h
  163.  
  164. SUITE11:
  165. mov eax, dword ptr [ebx+0Bh]
  166. test al, al
  167. je SUITE12
  168. add edi, 000A4DACh
  169. sub dword ptr [esp], 000C909Ch
  170. lea eax, dword ptr [esi+4*esi]
  171. mov esi, eax
  172. sub ebp, 000594FEh
  173.  
  174. SUITE12:
  175. mov eax, dword ptr [ebx+0Ch]
  176. test al, al
  177. je SUITE13
  178. sub edi, 000A4DACh
  179. add dword ptr [esp], 00014214h
  180. lea eax, dword ptr [esi+4*esi]
  181. mov esi, eax
  182. sub ebp, 00059436h
  183.  
  184. SUITE13:
  185. mov eax, dword ptr [ebx+0Dh]
  186. test al, al
  187. je SUITE14
  188. sub edi, 000BAD3Ch
  189. add dword ptr [esp], 00005B9Ch
  190. add esi, 00000005h
  191. sub ebp, 000594FEh
  192.  
  193. SUITE14:
  194. mov eax, dword ptr [ebx+0Eh]
  195. test al, al
  196. je SUITE15
  197. sub edi, 000A3A24h
  198. add dword ptr [esp], 00014606h
  199. sub esi, 00000A05h
  200. add ebp, 00008BEEh
  201.  
  202. SUITE15:
  203. mov eax, dword ptr [ebx+0Fh]
  204. test al, al
  205. je SUITE16
  206. sub edi, 00010710h
  207. add dword ptr [esp], 000C909Ch
  208. add esi, 00008B65h
  209. sub ebp, 0000D626h
  210.  
  211. SUITE16:
  212. mov eax, dword ptr [ebx+10h]
  213. test al, al
  214. je SUITE17
  215. sub edi, 000107C4h
  216. add dword ptr [esp], 00000D7Ch
  217. sub esi, 0000093Dh
  218. add ebp, 00009639h
  219.  
  220. SUITE17:
  221. mov eax, dword ptr [ebx+11h]
  222. test al, al
  223. je SUITE18
  224. add edi, 00010896h
  225. sub dword ptr [esp], 000151B4h
  226. mov eax, esi
  227. mov ecx, 00000005h
  228. cdq
  229. idiv ecx
  230. mov esi, eax
  231. add ebp, 00009242h
  232.  
  233. SUITE18:
  234. mov eax, dword ptr [ebx+12h]
  235. test al, al
  236. je SUITE19
  237. mov eax, edi
  238. add eax, eax
  239. lea eax, dword ptr [eax+2*eax]
  240. mov edi, eax
  241. sub dword ptr [esp], 00000D7Ch
  242. add esi, 00001D0Bh
  243. add ebp, 00000142h
  244.  
  245. SUITE19:
  246. mov eax, dword ptr [ebx+13h]
  247. test al, al
  248. je SUITE20
  249. mov eax, edi
  250. mov ecx, 00000006h
  251. cdq
  252. idiv ecx
  253. mov edi, eax
  254. mov eax, dword ptr [esp]
  255. lea eax, dword ptr [eax+2*eax]
  256. mov dword ptr [esp], eax
  257. mov eax, esi
  258. add eax, eax
  259. mov esi, eax
  260. mov eax, ebp
  261. mov ecx, 00000003h
  262. cdq
  263. idiv ecx
  264. mov ebp, eax
  265.  
  266. SUITE20:
  267. mov eax, dword ptr [ebx+14h]
  268. test al, al
  269. je SUITE21
  270. add edi, 000106ACh
  271. mov eax, dword ptr [esp]
  272. mov ecx, 00000005h
  273. cdq
  274. idiv ecx
  275. mov dword ptr [esp], eax
  276. add esi, 000011DFh
  277. add ebp, 0000020Ah
  278.  
  279. SUITE21:
  280. mov eax, dword ptr [ebx+15h]
  281. test al, al
  282. je SUITE22
  283. sub edi, ebp
  284. add dword ptr [esp], esi
  285. add esi, 00001879h
  286. sub ebp, 00000152h
  287.  
  288. SUITE22:
  289. mov eax, dword ptr [ebx+16h]
  290. test al, al
  291. je SUITE23
  292. add edi, 00012E34h
  293. add dword ptr [esp], 000C909Ch
  294. sub esi, 0000016Fh
  295. sub ebp, edi
  296.  
  297. SUITE23:
  298. mov eax, dword ptr [ebx+17h]
  299. test al, al
  300. je SUITE24
  301. mov eax, esi
  302. sub eax, ebp
  303. sub edi, eax
  304. add dword ptr [esp], 00001920h
  305. mov eax, esi
  306. mov ecx, 00000009h
  307. cdq
  308. idiv ecx
  309. mov esi, eax
  310. sub ebp, edi
  311.  
  312. SUITE24:
  313. mov eax, dword ptr [ebx+18h]
  314. test al, al
  315. je SUITE25
  316. sub edi, 000010F6h
  317. sub dword ptr [esp], 00007DEAh
  318. add esi, 00000C33h
  319. mov eax, ebp
  320. mov ecx, 00000005h
  321. cdq
  322. idiv ecx
  323. mov ebp, eax
  324.  
  325. SUITE25:
  326. mov eax, dword ptr [ebx+19h]
  327. test al, al
  328. je SUITE26
  329. add edi, dword ptr [esp]
  330. sub edi, ebp
  331. sub dword ptr [esp], 000178F6h
  332. sub esi, 00005C50h
  333. add ebp, esi
  334.  
  335. SUITE26:
  336. mov eax, dword ptr [ebx+1Ah]
  337. test al, al
  338. je SUITE27
  339. sub edi, ebp
  340. add edi, 0000147Dh
  341. mov eax, dword ptr [esp]
  342. add eax, esi
  343. sub eax, 00001614h
  344. mov dword ptr [esp], eax
  345. mov eax, edi
  346. mov ecx, 00000003h
  347. cdq
  348. idiv ecx
  349. add esi, eax
  350. sub ebp, 0000A87Eh
  351. add ebp, dword ptr [esp]
  352.  
  353. SUITE27:
  354. mov eax, dword ptr [ebx+1Bh]
  355. test al, al
  356. je SUITE28
  357. sub edi, dword ptr [esp]
  358. add dword ptr [esp], esi
  359. sub esi, edi
  360. add esi, dword ptr [esp]
  361. sub ebp, 000002FCh
  362.  
  363. SUITE28:
  364. mov eax, dword ptr [ebx+1Ch]
  365. test al, al
  366. je SUITE29
  367. lea eax, dword ptr [ebp+2*ebp]
  368. sub edi, eax
  369. add edi, 00006289h
  370. mov eax, esi
  371. mov ecx, 00000007h
  372. cdq
  373. idiv ecx
  374. mov edx, dword ptr [esp]
  375. sub edx, eax
  376. add edx, 000001C4h
  377. mov dword ptr [esp], edx
  378. add esi, 0009AEC5h
  379. add ebp, dword ptr [esp]
  380. sub ebp, 0000001Ch
  381.  
  382. SUITE29:
  383. mov eax, dword ptr [ebx+1Dh]
  384. test al, al
  385. je SUITE30
  386. sub edi, 0000B10Dh
  387. add edi, dword ptr [esp]
  388. add dword ptr [esp], 000C909Ch
  389. test esi, esi
  390. jns signe2
  391. add esi, 00000003h
  392. signe2:
  393. sar esi, 02h
  394. mov eax, edi
  395. mov ecx, 00000336h
  396. cdq
  397. idiv ecx
  398. add ebp, eax
  399.  
  400. SUITE30:
  401. mov eax, dword ptr [ebx+1Eh]
  402. test al, al
  403. je SUITE31
  404. sub edi, 000A4DACh
  405. add dword ptr [esp], 000C909Ch
  406. lea eax, dword ptr [esi+4*esi]
  407. mov esi, eax
  408. sub ebp, 000594FEh
  409.  
  410. SUITE31:
  411. mov eax, dword ptr [ebx+1Fh]
  412. test al, al
  413. je SUITE32
  414. sub edi, 0000B4BBh
  415. add dword ptr [esp], 000122C0h
  416. mov eax, ebp
  417. mov ecx, 00000145h
  418. cdq
  419. idiv ecx
  420. add esi, dword ptr [esp]
  421. sub esi, eax
  422. sub ebp, 0001413Bh
  423.  
  424. SUITE32:
  425. mov eax, dword ptr [ebx+20h]
  426. test al, al
  427. je SUITE33
  428. sub edi, 000009A2h
  429. add edi, ebp
  430. mov eax, dword ptr [esp]
  431. sub eax, 0000092Ch
  432. add eax, edi
  433. mov dword ptr [esp], eax
  434. sub ebp, 00000994h
  435.  
  436. SUITE33:
  437. mov eax, dword ptr [ebx+21h]
  438. test al, al
  439. je SUITE34
  440. sub edi, 000A4DACh
  441. mov eax, ebp
  442. cdq
  443. idiv dword ptr [esp]
  444. add esi, 00001095h
  445. add eax, esi
  446. add eax, 0000147Eh
  447. mov esi, eax
  448. mov eax, edi
  449. cdq
  450. idiv ebp
  451. sub ebp, eax
  452. add ebp, 000001C4h
  453.  
  454. SUITE34:
  455. mov eax, dword ptr [ebx+22h]
  456. test al, al
  457. je SUITE35
  458. mov eax, dword ptr [esp]
  459. cdq
  460. idiv edi
  461. mov ecx, eax
  462. add ecx, dword ptr [esp]
  463. mov eax, ebp
  464. cdq
  465. idiv esi
  466. add ecx, eax
  467. mov dword ptr [esp], ecx
  468. add esi, dword ptr [esp]
  469. mov eax, edi
  470. cdq
  471. idiv edi
  472. mov ecx, eax
  473. imul ecx, ebp
  474. mov eax, esi
  475. cdq
  476. idiv ebp
  477. add ecx, eax
  478. mov ebp, ecx
  479.  
  480. SUITE35:
  481. mov eax, dword ptr [ebx+23h]
  482. test al, al
  483. je SUITE36
  484. mov eax, ebp
  485. mov ecx, 00000003h
  486. cdq
  487. idiv ecx
  488. push eax
  489. mov eax, dword ptr [esp+04h]
  490. lea eax, dword ptr [eax+2*eax]
  491. pop edx
  492. mov ecx, edx
  493. cdq
  494. idiv ecx
  495. add edi, eax
  496. add edi, 0000CE26h
  497. mov eax, ebp
  498. cdq
  499. idiv edi
  500. add ebp, 000018D1h
  501. add eax, ebp
  502. mov ebp, eax
  503.  
  504. SUITE36:
  505. mov eax, dword ptr [ebx+24h]
  506. test al, al
  507. je SUITE37
  508. mov eax, dword ptr [esp]
  509. cdq
  510. idiv edi
  511. add eax, 00000038h
  512. sub edi, eax
  513. mov eax, dword ptr [esp]
  514. cdq
  515. idiv esi
  516. imul edx, esi
  517. mov esi, edx
  518. mov eax, ebp
  519. cdq
  520. idiv edi
  521. imul eax, edx, 00000278h
  522. add ebp, eax
  523.  
  524. SUITE37:
  525. mov eax, dword ptr [ebx+25h]
  526. test al, al
  527. je SUITE38
  528. sub edi, 000A4DACh
  529. add dword ptr [esp], 000C909Ch
  530. mov eax, dword ptr [esp]
  531. cdq
  532. idiv edi
  533. mov eax, edx
  534. mov ecx, 0000000Dh
  535. cdq
  536. idiv ecx
  537. mov ecx, eax
  538. mov eax, edi
  539. push ecx
  540. mov ecx, 00001593h
  541. cdq
  542. idiv ecx
  543. pop ecx
  544. imul ecx, edx
  545. add esi, ecx
  546.  
  547. SUITE38:
  548. mov eax, dword ptr [ebx+26h]
  549. test al, al
  550. je SUITE39
  551. neg edi
  552. mov eax, dword ptr [esp]
  553. cdq
  554. xor eax, edx
  555. sub eax, edx
  556. mov dword ptr [esp], eax
  557. neg esi
  558.  
  559. SUITE39:
  560. sub edi, dword ptr [esp]
  561. add esi, edi
  562. add ebp, esi
  563. cmp ebp, 76651C4Dh
  564.  
  565.     jnz    non
  566.  
  567.     mov    edi, OFFSET texte
  568.     xor    edx,edx
  569. coche4:
  570.     xor    ecx,ecx
  571. coche3:
  572.     mov    al, byte ptr [ecx+ebx]
  573.     test    al,al
  574.     jnz    coche1
  575.     mov    byte ptr [edi+ecx],'O'
  576.     jmp    coche2
  577. coche1:
  578.     mov    byte ptr [edi+ecx],'X'
  579. coche2:
  580.     inc    edi                ;jump the space (20h) char
  581.     inc    ecx
  582.     cmp    ecx,13d
  583.     jnz    coche3
  584.     add    edi,15d
  585.     add    ebx,13d
  586.     inc    edx
  587.     cmp    edx,3
  588.     jnz    coche4
  589.     mov    ebx, OFFSET combin
  590.     call MessageBoxA, 0, offset texte, offset titre, 0
  591. non:
  592.     add esp,4
  593.     ret
  594.  
  595. TESTCOMB ENDP
  596. ;-----------------------------------------------------------------------------
  597.  
  598. Main:   
  599.     mov    ebx, OFFSET combin
  600. boucle:
  601.     call    TESTCOMB
  602.     mov    ecx,0                ;<------------
  603.  
  604. compteur:
  605.     cmp    byte ptr [ebx+ecx],1
  606.     jz    retenue
  607.     mov    byte ptr [ebx+ecx],1
  608.     jmp    boucle
  609. retenue:
  610.     mov    byte ptr [ebx+ecx],0
  611.     inc    ecx
  612.     cmp    ecx,40d
  613.     jnz    compteur
  614.  
  615.     call MessageBoxA, 0, offset texte2, 0, 0
  616.         call    ExitProcess, 0               ;End (exit) program
  617.  
  618. End Main                                     ;End of code, Main is the entrypoint
  619. ;-----------------------------------------------------------------------------
  620.  
  621.