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

  1.  ________________________________________
  2. /       "Quest for a REAL serial"        \
  3. .:how to crack Ubique.Daemons crackme #1:.
  4. \___________^heiko[BLiZZARD]_____________/
  5.  
  6.  
  7. Crackme name: CrackMe #1
  8. Crackme by:   Ubique.Daemons 
  9. Date:         4/28/2000
  10. Type:         Serial (VB)
  11.  
  12. Toolz:           Smartcheck v6.03
  13.               NO hexeditor ;-)
  14.  
  15. hi folks,
  16.  
  17. KaMiKaZe [AmoK] did a good job by patching 'Ubique.Daemons crackme #1'
  18. (read his tutorial). But it seems like he was in a hurry!?
  19. Patching this crackme solves it (its a "CRACKme"), but i think that's 
  20. not the maximum we can learn from this crackme. Patching  is 
  21. the most fastest way to defeat a target, right, but i prefer the next 
  22. (higher) level: reversing it! there's a serial, so there must be an 
  23. algorithm which calculates it!
  24.  
  25. Lets try to find and reverse it, leave your hexeditorz alone and 
  26. join me at my:
  27.  
  28. *************************
  29. "Quest for a REAL serial"
  30. *************************
  31.  
  32. Start the crackme and enter the info you like most, i used:
  33.  
  34. serial: 11223344
  35.  
  36. now click on the "CHECK the serial"-button...Hrmm, it says:
  37.  
  38. "No, thats not right", hehe, k, we lost, but not for long, promised!!
  39.  
  40. Start Smartcheck and open the crackme.
  41. make sure that you had choosen the following settings:
  42.  
  43.     error detection: all checked
  44.      \-> "Advanced" all checked, except the last three
  45.     reproting: all checked, except "perform analysis of handeld vb ..."
  46.  
  47. run the program and confirm all error messages till "crackme #1" pops up!
  48. enter '11223344' as serial and press "Check the serial". 
  49. goto smartcheck and end the program.
  50.  
  51. select "show errors and specific events" and click on "_click" for highlighting
  52. that line. now select "show all events". expand the branch by clicking on the +.
  53. scroll down the tree until you see something like this (by clicking on the line
  54. you get the corresponding values in the right window of smartcheck):
  55.  
  56. <snipp>
  57. __vbaVarMul     <- multiplies two values: '11' * '33' 
  58. __vbaIndexLoad  <- not really important 
  59. __vbaVarMul     <- multiplies two values: '3' * '22'
  60. __vbaVarSub     <- substracts two values: check pVar and lpSrc! the same
  61. __vbaVarLoad    >  as the returned addresses of the two multiplications:    
  62. __vbaVarLoad    >  conclusion: the results will be substracted '363' - '66'
  63. __vbaVarMul     <- multiplies two values: '22' * '44'
  64. __vbaVarLoad
  65. __vbaVarMul     <- multiplies two values: '3' * '44'
  66. __vbaVarAdd     <- adds two values: '968' + '132' , results of last 2 multis.
  67. __vbaVarCmpEq   <- compare two values:  '297' = '1100', hrmm, here it checks
  68. __vbaVarLoad    >  the value of the substraction against the addition.
  69. __vbaVarLoad    >  feel it?? we have to make them epual!!! but theres more:
  70. __vbaVarAdd     <- adds two values: '11' + '44'
  71. __vbaVarLoad
  72. __vbaVarLoad
  73. __vbaVarMul     <- multiplies two values: '33' * '2'
  74. __vbaVarAdd     <- adds two values: '22' + '66'
  75. __vbaVarCmpEq   <- compare '55' with '88', result values of last 2 additions
  76.  
  77. <snipp>
  78.  
  79. +MsgBox         <- show looser messagebox :(
  80.  
  81.  
  82. stop! its now time to start your brain. read the above lines again and
  83. think about it. can you feel it????
  84. what have we got? 
  85. 9 mathematical calculations (like *,+,-) and 2 compares (conditions) that
  86. are not 'positiv' (not equal) with mystical values ('11','22','33','44')
  87. that look really like the 'cutted' entered serial.
  88.  
  89. Do you think the same ??? 
  90.  
  91. Yeah, here our serial is checked. there are two conditions, which we have
  92. to satisfy! (with the hope the resulting msgbox will be a bit friendlier! ;)
  93.  
  94. lets try to find some equations with the assumption that our entered serial
  95. will be handled in parts like this :
  96.  
  97.           '11' '22' '33' '44'
  98.    =>       a    b    c    d
  99.  
  100. equations:
  101.  
  102. (one):    a * c               "__vbaVarMul"
  103. (two):    3 * b               "__vbaVarMul"
  104. (three):  (one) - (two)       "__vbaVarSub"
  105. (four):   b * d               "__vbaVarMul"
  106. (five):   3 * d               "__vbaVarMul"
  107. (six):    (four) + (five)     "__vbaVarAdd"
  108. (seven):  a + d               "__vbaVarAdd"
  109. (eight):  c * 2               "__vbaVarMul"
  110. (nine):   b + (eight)         "__vbaVarAdd"
  111.  
  112. our conditions : (three) = (six)
  113.                  (seven) = (nine)
  114.  
  115.  
  116. Did you get everything? take the time to read it again..and again..
  117. till you see the light! ;-) 
  118. After i had all the equations and conditions i tried to solve it
  119. by guessing some values and fill the others depending on the 
  120. equations. hrmm, i fucked up. 
  121. its much easier to write a simple 'bruteforce' to find working
  122. values. i coded a procedure in delphi,  you should be able to 
  123. follow what it does:
  124.  
  125. <start-of-pascal-code>
  126.  
  127. procedure TForm1.Button1Click(Sender: TObject);
  128. var a,b,c,d,one,two,three,four,five,six,seven,eight,nine:integer;
  129. begin
  130.  for a:=1 to 99 do begin    <- range of a two digit number!
  131.   for b:=1 to 99 do begin
  132.    for c:=1 to 99 do begin
  133.     for d:=1 to 99 do begin
  134.         one := a * c;
  135.         two := 3 * b;
  136.         three := one - two;
  137.         four := b * d;
  138.         five := 3 * d;
  139.         six := four + five;
  140.         seven := a + d;
  141.         eight := c * 2;
  142.         nine := b + eight;
  143.  
  144.         if (three = six) and (seven = nine) then   <- conditions satisfied?
  145.          begin
  146.           edit1.text:=inttostr(a)+inttostr(b)+inttostr(c)+inttostr(d);
  147.           break;
  148.          end;
  149.     end;
  150.    end;
  151.   end;
  152.  end;
  153. end; 
  154.  
  155. <end-of-pascal-code>
  156.  
  157. i started my little application, pushed my button and...
  158. after some time a number appeared:
  159.  
  160.             "95654560"  
  161.  
  162. enter this into the crackme... a nice little messagebox pops up:
  163. "Yeah, thats a right one!" hehehe. we won!
  164.  
  165. You did it, WITHOUT a need to patch, only with ZEN and brain! ;-)
  166.  
  167. Now its your turn...are there more working serials??
  168. Iam to tired now...;)
  169.  
  170. Send me your comments and keygens!
  171. Hope you learned something by this tutorial...
  172.  
  173. hAVE pHUN'!  ^heiko[BLiZZARD]
  174. mail:           heiko@blizzard.st
  175.  
  176. 06/28/2000 - gREETZ to aLL @ BLZ!! STEALTHLABS !! TheoTraXX !! 
  177.  
  178.  
  179. ...end of tutorial...
  180.  
  181.