home *** CD-ROM | disk | FTP | other *** search
/ Reverse Code Engineering RCE CD +sandman 2000 / ReverseCodeEngineeringRceCdsandman2000.iso / RCE / E_bliss / eb_tut12.txt < prev    next >
Text File  |  2000-05-25  |  5KB  |  142 lines

  1.             Tutorial Number 12
  2.  
  3. Written by Etenal Bliss
  4. Email: Eternal_Bliss@hotmail.com
  5. Website: http://crackmes.cjb.net
  6.          http://surf.to/crackmes
  7. Date written: 12th Mar 1999
  8.  
  9. Program Details:
  10. Name: Crackme v2.0
  11. Author: CoSH
  12.  
  13. Tools Used:
  14. W32Dasm
  15.  
  16. Cracking Method:
  17. Looking at String Data Reference
  18.  
  19. Viewing Method:
  20. Use Notepad with Word Wrap switched on
  21. Screen Area set to 800 X 600 pixels (Optional)
  22.  
  23. __________________________________________________________________________
  24.  
  25.  
  26.                         About this protection system
  27.  
  28. No disabled function. Protection is based on a code you enter. This code
  29. has nothing to do with your UserName. But you have to enter a UserName of
  30. 6 or more characters.
  31.  
  32. __________________________________________________________________________
  33.  
  34.  
  35.             String Data Reference in W32Dasm
  36.  
  37. Run the CrackMe a few times first. You will get a message box showing you
  38. "One of the Details you entered was wrong". And the CrackMe exits...
  39.  
  40. Start your W32Dasm and open the CrackMe to disassemble it.
  41.  
  42. Under "String Data Items", you will see
  43. "ERROR"
  44. "One of the Details you entered"
  45. "Well done,"
  46. "YOU DID IT"
  47.  
  48. Double click on the "One of the Details you entered" string. You will see this:
  49.  
  50. ===============================Code Start=================================
  51.  
  52. :0040150C E833030000              Call 00401844
  53. :00401511 8B07                    mov eax, dword ptr [edi]
  54. :00401513 803836                  cmp byte ptr [eax], 36
  55. :00401516 751E                    jne 00401536        <-- jump to "Bad" message
  56. :00401518 80780132                cmp byte ptr [eax+01], 32
  57. :0040151C 7518                    jne 00401536        <-- jump to "Bad" message
  58. :0040151E 80780238                cmp byte ptr [eax+02], 38
  59. :00401522 7512                    jne 00401536        <-- jump to "Bad" message
  60. :00401524 80780337                cmp byte ptr [eax+03], 37
  61. :00401528 750C                    jne 00401536        <-- jump to "Bad" message
  62. :0040152A 8078042D                cmp byte ptr [eax+04], 2D
  63. :0040152E 7506                    jne 00401536        <-- jump to "Bad" message
  64. :00401530 80780541                cmp byte ptr [eax+05], 41
  65. :00401534 7417                    je 0040154D        <-- jump to "Good" message
  66.  
  67. * Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
  68. |:004014E4(C), :004014F3(C), :00401516(C), :0040151C(C), :00401522(C)
  69. |:00401528(C), :0040152E(C)                <-- take note of the locations
  70. |
  71. :00401536 6A00                    push 00000000
  72.  
  73. * Possible StringData Ref from Data Obj ->"ERROR"
  74.                                   |
  75. :00401538 6864304000              push 00403064
  76.  
  77. * Possible StringData Ref from Data Obj ->"One of the Details you entered "
  78.                                         ->"was wrong"
  79.                                   |
  80. :0040153D 6838304000              push 00403038        <-- this is where you
  81. :00401542 8BCE                    mov ecx, esi            will land
  82.  
  83.  
  84. ===============================Code End====================================
  85.  
  86.  
  87. You will land at 0040153D. Scroll up a bit and you will see that this
  88. part of the code is "used" when a conditional jump points to it...
  89.  
  90. * Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
  91. |:004014E4(C), :004014F3(C), :00401516(C), :0040151C(C), :00401522(C)
  92. |:00401528(C), :0040152E(C)
  93.  
  94. Now, scroll up a bit more to see the codes at :00401516, :0040151C, 
  95. :00401522, :00401528, :0040152E
  96.  
  97. **These are the locations that will cause the crackme to jump to
  98.   "Bad" Message
  99.  
  100. Can you that what is in eax is compared char by char to 36, 32, 38, 37, 2D, 41 ?
  101. 36(hex) = 6
  102. 32(hex) = 2
  103. 38(hex) = 8
  104. 37(hex) = 7
  105. 2D(hex) = -
  106. 41(hex) = A
  107.  
  108. And if any of the char is not the same, you will jump to "Bad" message. 
  109. At the last compare, if it is the same, you will be brought to the "Good" message...
  110.  
  111. What does this mean?
  112. It means that the serial is hard-coded and has got nothing to do with your Name!!
  113.  
  114. Well, it is not exactly right... If you enter less than 6 char for the name, you will get the "Bad" message even if you type in the correct serial.
  115. So, try with any name with 6 or longer chars.
  116.  
  117. e.g.
  118. ETERNAL BLISS for Name
  119. 6287-A for Serial.
  120.  
  121. You will get "Well done,ETERNAL BLISS"
  122.  
  123. So, that is what the Name box is for...
  124.  
  125. CrackMe Cracked!!
  126.  
  127. __________________________________________________________________________
  128.  
  129.  
  130.                              Final Notes
  131.  
  132. This tutorial is dedicated to all the newbies like me.
  133.  
  134. And because I'm a newbie myself, I may have explained certain things wrongly
  135. So, if that is the case, please forgive me. Email me if there is anything 
  136. you are not clear about.
  137.  
  138.  
  139. My thanks and gratitude goes to:-
  140.  
  141. The Sandman
  142. All the writers of Cracks tutorials and CrackMes