home *** CD-ROM | disk | FTP | other *** search
/ KeyGen Studio 2002 / KeyGen_Studio_2002.iso / Tutorials / CrackMesCbjNet / heiko-pcomeb.txt < prev    next >
Encoding:
Text File  |  2001-09-21  |  5.4 KB  |  171 lines

  1.  __________________________________
  2. /     "Surprise, surprise..."      \
  3. .:how to crack plasma's vb crackme:.
  4. \________^heiko[BLiZZARD]__________/
  5.  
  6. Crackme name: Comeback
  7. Crackme by:   Plasma 
  8. Date:         4/28/2000
  9. Type:         Name/Serial (VB)
  10.  
  11. Toolz:           Smartcheck v6.03
  12.               Wdasm v8.93 (with widecharstrings enabled)
  13.  
  14. hi folks,
  15.  
  16. today i want you to show how to crack plasmas vb crackme in three lessons:
  17. cracking it, fishing one real serial and get the algorithm for keygening
  18. it.
  19.  
  20. LESSON 1: crack it
  21.  
  22. Start the crackme and enter the info you like most, i used:
  23.  
  24. name: ^heiko[BLiZZARD]
  25. serial 112233
  26. (you have to enter numbers as serial, any other input wont be accepted:
  27. "You have to fill out the given fields!")
  28.  
  29. now click on the "CHECK"-button...Hrmm, it says:
  30.  
  31. "Do you just guess?", hehe its right, but not for long, promised!!
  32.  
  33. Load the crackme into your fixed wdasm and search for the "looser" string:
  34.  
  35.  
  36. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  37. |:00402EAD(C)                                                   <---- interesting!!
  38. |
  39. :00402F16 FF9014030000            call dword ptr [eax+00000314]
  40. :00402F1C 50                      push eax
  41. :00402F1D 8D4D90                  lea ecx, dword ptr [ebp-70]
  42. :00402F20 51                      push ecx
  43.  
  44. * Reference To: MSVBVM60.__vbaObjSet, Ord:0000h
  45.                                   |
  46. :00402F21 FF1538104000            Call dword ptr [00401038]
  47. :00402F27 8BF0                    mov esi, eax
  48. :00402F29 8B16                    mov edx, dword ptr [esi]
  49.  
  50. * Possible StringData Ref from Code Obj ->"Do you just guess?"   <---- it's here!!
  51.                                   |
  52. :00402F2B 685C274000              push 0040275C
  53. :00402F30 56                      push esi
  54.  
  55. noticed the reference ??? lets have a look at <402EAD>:
  56.  
  57.  
  58. :00402EAD 7467                    je 00402F16                    <---- serial ok?
  59. :00402EAF FF9014030000            call dword ptr [eax+00000314]
  60. :00402EB5 50                      push eax
  61. :00402EB6 8D4D90                  lea ecx, dword ptr [ebp-70]
  62. :00402EB9 51                      push ecx
  63.  
  64. snipp (...) snipp
  65.  
  66. * Possible StringData Ref from Code Obj ->"You got it, here's your surprise..."
  67.                                   |
  68. :00402EC6 68F0264000              push 004026F0
  69.  
  70. Huh, there it is. we could patch the conditional jump at <402EAD> something like 
  71. this: je 00402F16 -> NOP, NOP (exchange bytes 74h,67h with 90h,90h).
  72.  
  73. With this, the serial is right, everytime. 
  74. curious about the surprise, plasma mentioned?? then start patching and stop
  75. the further reading. 
  76. but if you were a real good cracker (like me..hahaha) you sure want to find 
  77. one real serial for your name or maybe code some keygen, dont you??
  78.  
  79. Ah, good, so lets try to:
  80.  
  81. LESSON 2: Find one real serial
  82.  
  83. Start Smartcheck and open the crackme.
  84. make sure that you had choosen the following settings:
  85.  
  86.     error detection: all checked
  87.      \-> "Advanced" all checked, except the last three
  88.     reproting: all checked, except "perform analysis of handeld vb ..."
  89.  
  90. run the program and confirm all error messages till "comeback" pop up!
  91. enter your name and any serial and press "Check". goto smartcheck and end the 
  92. program.
  93.  
  94. select "show errors and specific events" and click on "_click" for highlighting
  95. that line. now select "show all events". expand the branch by clicking on the +.
  96. scroll down the tree until you see something like this:
  97. until you see something like this:
  98.  
  99. MID$       <-- gets the first character of the name ("^" for me)
  100.  ....
  101. ASC returns Integer: 94   <-- gets its ord-number  ORD('^') =  94
  102. decimal
  103.  
  104. MID$       <-- gets the second character of the name
  105.  ....
  106. ASC returns Integer: 104   <-- gets its ord-number  ORD('h') = 104
  107. decimal
  108.  
  109. MID$       <-- gets the third character of the name
  110.  ....
  111. ASC returns Integer: 101   <-- gets its ord-number  ORD('e') = 101
  112. decimal
  113.  
  114.  
  115. ..and so on..
  116.  
  117. it accumulates all the ord-number of the entered name!
  118.  
  119. result:  Double(23168) --> String(23168)
  120.  
  121. if you entered "ab" as name, the result will be:
  122.  
  123.  ord("a") + ord ("b") = 97 + 98 = 195 ! got that????
  124.  
  125. you may now ask: "hey, is that the real serial??" Try, but you will be
  126. dissappointed...we have to go further.
  127.  
  128. just some lines after the last mid$,asc section there's this smelly line:
  129.  
  130. Double(370720) --> String(370720)
  131.  
  132. hrmm...it may...IT IS !! THATS THE f****** SERIAL! So, for
  133.  
  134. name: ^heiko[BLiZZARD]
  135. serial: 370720
  136.  
  137. will regged this crackme and reveals its surprise to you..;-)
  138. (please close and save all open projects before entering the good serial!
  139.  i've warned you...its plasmas surprise..;)
  140.  
  141. the serial is (of coz) a different one, if you entered YOUR name..*duh*! ;-)
  142.  
  143. STEP 3: understand the algorithm
  144.  
  145. I still wasn't satisfied at this moment. i wanted to find the algorithm,
  146. so that i could do a keygen. i tried some calculations and found the
  147. algorithm with some ZEN (see sandman's great homepage for further info!).
  148.  
  149. serial := 0
  150. for i:=1 to len(name) do begin
  151. serial:= serial + ord(name[i]);
  152. end; 
  153. serial := serial * len (name);
  154. serial := serial + strtoint(inttostr(serial)[1]); <-- hehe, here the first number of
  155. serial := serial * 16;                          ;  \- the 'interim' serial is added
  156.  
  157.  
  158. Now its your turn...go and code a keygen!!!!! Iam to tired now...;)
  159.  
  160. Send me your comments and keygens!
  161. Hope you learned something by this tutorial...
  162.  
  163. hAVE pHUN'!  ^heiko[BLiZZARD]
  164. mail:           heiko@blizzard.st
  165.  
  166. 06/26/2000 - gREETZ to aLL @ BLZ!! STEALTHLABS !! TheoTraXX !!
  167.  
  168.  
  169. ...end of tutorial...
  170.  
  171.