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

  1.  ----------------------------------------
  2. | How to crack Symantec Visual Page v1.0 |  by da Cracker/CBE
  3.  ----------------------------------------
  4.  
  5.  
  6. Introduction:
  7. ────────────
  8. How many percent of experienced computer users are crackers? Surely not more
  9. than 0.1%... But many of these peoples label the word "cracking" as
  10. "impossible". Well, I want to teach these guys how to crack, so that's why I
  11. decided to write my fourth tutorial, requested by Ap0ll0 and pist0ls. In this
  12. tutorial, I'll teach you how to crack Symantec Visual Page v1.0... (Sorry if
  13. it's not the latest one, but I don't want to download it! It's too big... I
  14. had that version on a cd) I hope that you'll enjoy it! If you have any
  15. comment, suggestions, .... please e-mail me at dc_cbe@hotmail.com
  16.  
  17.  
  18.  ┌────────────────────────────────────Index────────────────────────────────┐
  19.  |                                                                         |
  20.  |1) Programs that you'll need to crack Symantec Visual Page               |
  21.  |2) Finding the location that needs to be patched to remove the nag       |
  22.  |3) Patching the location to remove the nag                               |
  23.  |4) Finding the location that needs to be patched to remove the expiration|
  24.  |5) Patching the location to remove the expiration date                   |
  25.  |6) Writing a patcher in Assembler                                        |
  26.  |7) Final Notes                                                           |
  27.  └─────────────────────────────────────────────────────────────────────────┘
  28.  
  29. 1) Programs that you'll need to crack Symantec Visual Page
  30.    ───────────────────────────────────────────────────────
  31.  
  32. Here's the list of programs that you'll need to get to crack Symantec Visual
  33. Page:
  34.  
  35. WinDisassembler
  36. Visual Page (no, really? ;) )
  37. Hacker's View
  38.  
  39. Don't expect to crack it without these utilities!
  40. Note: You can get them at http://cracking.home.ml.org, or if you're a CBE
  41. member, at CBE's memberz FTP Area
  42. And you can get Visual Page at http://www.symantec.com
  43.  
  44. Are you ready? Ok, so let's start.
  45.  
  46.  
  47. 2) Finding the location that needs to be patched to remove the nag
  48.    ───────────────────────────────────────────────────────────────
  49.  
  50. Now we're going to find the location that needs to be patched (where you have
  51. to modify the program so that it removes the nag...)
  52.  
  53. Start Symantec Visual Page
  54. What's that annoying message? This Trial Version of blabla expires in 30 days...
  55. Ok, let's remove this nag.
  56. Exit Visual Page
  57. Go to the directory where Visual Page is installed (normally c:\VisualPage)
  58. Copy the file vpage.exe to vpage.bak (for Backup) and to 1.exe (for use by
  59. w32dasm... Why?? Because of the crappy "Application Running, can't modify it", well, anyways...
  60. Done? ok, now run w32dasm.
  61. Click on Disassembler --> Open File to Disassemble
  62. Go to the directory of Visual Page and select 1.exe
  63. Takes a while, heh? That's because this prog is quite big in size... Now,
  64. click on the menu Search --> Find Text and search for "visual page expires in"
  65. (that was part of the nag, remember?) Here's what we get:
  66.  
  67. *Possible Reference to String Resource ID=05046: "This Trial Version of Visual Page expires in %1" <-- %1 is a variable
  68.  
  69. :00419BFC 686B6130000             push 000013B6 <-- Saves the nag message
  70. :00419C01 8D4DD0                  lea ecx, dword ptr [ebp-30] <-- Pops the nag screen!
  71. :00419C04 51                      push ecx <-- Saves some shit to ecx
  72.  
  73. Do you UNDERSTAND what we have to do? Well, it's easy. Think a little bit...;)
  74. We have a the nag message that gets saved and poped. We should just erase
  75. these lines! No, we can't do that... So, what? We have to NOP it!!! nop is a
  76. valid instruction that does ... nothing!
  77.  
  78. That's it!!! You found the location to patch and what to change!!!
  79. And now you just need to patch it! (described in part 3)
  80.  
  81.  
  82. 3) Patching the location to remove the nag
  83.    ───────────────────────────────────────
  84.  
  85. Click on the location right underneat the nag message (00419BFC)
  86. In the status bar, you'll see: "Code Data @: 00419BFC @Offset 000089FCh"
  87. So the offset address is A746 (you don't need the 0's in front and the h)
  88. Ok, remember this.
  89. Start Hacker's View to edit the exe file of Visual Page (hiew vpage.exe)
  90. Press F4, select Decode and press enter
  91. Press F5 (goto offset) and type 89FC (that's where we want to go) + Enter
  92. Now, you're almost done....
  93. Press F3 (To edit the program)
  94. Now, you can see many numbers and letters... Keep on pressing 90 until the
  95. call (419C05)
  96. That means that you have to type "90" 9 times
  97. Now, press F9 to update the file and F10 to exit.
  98. Start Symantec Visual Page.
  99. No more nag!
  100.  
  101.  
  102. 4) Finding the location that needs to be patched to remove the expiration
  103.    ──────────────────────────────────────────────────────────────────────
  104.  
  105. Now we're going to find the location that needs to be patched (where you have
  106. to modify the program so that it doesn't expire...)
  107.  
  108. Start Symantec Visual Page
  109. Add one month to your system date (if you don't know how to do that, then
  110. learn how to use Windows and come back ;) )
  111. What the heck? blablabla has expired...
  112. I didn't even try the program! Let's fix this "bug" :=)
  113. Exit Visual Page (anyway, you have no other choice...)
  114. Go to the directory where Visual Page is installed (normally c:\VisualPage)
  115. Copy the file vpage.exe to vpage.bak (for Backup) and to 1.exe (for use by
  116. w32dasm... Why?? Because of the crappy "Application Running, can't modify it",
  117. well, anyways...
  118. Done? ok, now run w32dasm.
  119. Click on Disassembler --> Open File to Disassemble
  120. Go to the directory of Visual Page and select 1.exe
  121. Takes a while, heh? That's because this prog is quite big in size... Now,
  122. click on the menu Search --> Find Text and search for "has expired"
  123. (that was part of the error message, remember?) Here's what we get:
  124.  
  125. * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  126. |: 00419C11 (C) <-- Conditional Jump (suX!)
  127. |
  128. :00419C24 BB01000000              mov ebx, 00000001 <- Saves 1 to ebx (Boolean flag)
  129.  
  130. *Possible Reference to String Resource ID=05043: "This Trial Version of Visual Page has expired."
  131.  
  132. :00419C29 686B6130000             push 000013B3 <-- Saves the error message
  133. :00419C2E 8D4DD0                  lea ecx, dword ptr [ebp-30] <-- Pops the error message
  134.  
  135. Do you UNDERSTAND what we have to do now? Well, it's easy. Think a little
  136. bit...;)
  137. The program jumped to here from 00419C11 BECAUSE the condition was false (or
  138. true, whatever)... Ok, so we have to go to that part of the code and NOP it!!!
  139.  
  140. That's it!!! You found the location to patch and what to change!!!
  141. And now you just need to patch it! (described in part 5)
  142.  
  143.  
  144. 5) Patching the location to remove the expiration date
  145.    ───────────────────────────────────────────────────
  146.  
  147. Go to the location where the conditional jump occured (00419C11) and click on
  148. the line.
  149. In the status bar, you'll see: "Code Data @: 00419C11 @Offset 00008A11h"
  150. So the offset address is 8A11 (you don't need the 0's in front and the h)
  151. Ok, remember this.
  152. Start Hacker's View to edit the exe file of Visual Page (hiew vpage.exe)
  153. Press F4, select Decode and press enter
  154. Press F5 (goto offset) and type 8A11 (that's where we want to go) + Enter
  155. Now, you're almost done....
  156. Press F3 (To edit the program)
  157. Now, you can see 74 and some other things... Type "90" twice. Why "90"?? Ah,
  158. because 90 is the code for NOP... I really have to explain you all ;)
  159. Now, press F9 to update the file and F10 to exit.
  160. Start Symantec Visual Page.
  161. It worked! No more expiration date!
  162.  
  163.  
  164. 6) Writing a patcher in Assembler
  165.    ──────────────────────────────
  166.  
  167. Now, to release the crack, you have to make what we call a patch.
  168. Yeah, you can't distribute the exe for two reasons:
  169. 1) It's illegal (a patch isn't illegal: it's your prog; but when a persons uses
  170. it, it's illegal)
  171. 2) It's quite big for a crack
  172.  
  173. In the last tutorial, the patcher was in Pascal, so I decided to make this one
  174. in assembler... Humm, next time will be errrrr.... dunno! ;) Maybe VB.
  175. Here's the Assembler source code of the patcher:
  176.  
  177. -------------------------------cut here---------------------------------------
  178. code            segment byte public
  179.         assume    cs:code, ds:code
  180.  
  181.         org    100h
  182. start:
  183.                 mov     dx,offset logo
  184.                 call    write
  185.  
  186.                 call    open_file
  187.                 mov     filehandle,ax
  188.  
  189.                 mov     dx,offset fsize
  190.                 call    write
  191.  
  192.                 call    check_size
  193.  
  194.                 mov     di,offset data
  195.                 mov     si,offset ofs
  196.                 mov     cx,2
  197.                 mov     dx,offset crackfile
  198.                 call    write
  199.  
  200. crackit:
  201.                 push    cx
  202.                 call    seek_file
  203.                 call    read_file
  204.                 call    seek_file
  205.                 call    write_file
  206.  
  207.                 add     si,4
  208.                 add     di,2
  209.                 pop     cx
  210.                 loop    crackit
  211.  
  212.                 mov     dx,offset cracksucc
  213.                 jmp     short goback
  214.  
  215. already_patched:
  216.                 mov     dx,offset alreadycrk
  217.                 jmp     short goback
  218.  
  219. size_mismatch:
  220.                 mov     dx,offset sizemismtch
  221.                 jmp     short goback
  222.  
  223. error:
  224.                 mov     dx,offset erroropen
  225. goback:
  226.                 call    write
  227.  
  228.                 call     close_file
  229.  
  230.                 mov     ah,4Ch
  231.                 int     21h
  232.  
  233.  
  234. Write           proc    near
  235.               push    ax
  236.                 mov     ah,9
  237.                 int     21h
  238.             pop    ax
  239.                 retn
  240. Write           endp
  241.  
  242. open_file       proc    near
  243.                 mov     ah,3Dh
  244.                 mov     al,2
  245.                 mov     dx,offset filenaam
  246.                 int     21h
  247.                 jb      error
  248.                 retn
  249. open_file       endp
  250.  
  251. close_file      proc near
  252.                 mov     ah,3Eh
  253.                 mov     bx,filehandle
  254.                 int     21h
  255.                 retn
  256. close_file      endp
  257.  
  258. check_size      proc near
  259.                 mov     bx,ax
  260.                 mov     ax,4202h
  261.                 xor     cx,cx
  262.                 xor     dx,dx
  263.                 int     21h
  264.                 jb      error
  265.                 cmp     ax, lowsize
  266.                 jne     size_mismatch
  267.                 cmp     dx, highsize
  268.                 jne     size_mismatch
  269.                 retn
  270. check_size      endp
  271.  
  272. read_file       proc near
  273.                 mov     ah,3fh
  274.                 mov     bx,filehandle
  275.                 mov     cx,1
  276.                 mov     dx,offset readbyte
  277.                 int     21h
  278.         mov    ah,readbyte
  279.                 cmp     [di],ah
  280.                 jne     already_patched
  281.         jb    error
  282.         retn
  283. read_file       endp
  284.  
  285. write_file      proc near
  286.                 mov     ah,40h
  287.                 mov     bx,filehandle
  288.                 mov     cx,1
  289.                 mov     dx,di
  290.         inc    dx
  291.                 int     21h
  292.         jb     error
  293.         retn
  294. write_file      endp
  295.  
  296. seek_file       proc    near
  297.                 mov     ah,42h
  298.                 mov     al,0
  299.                 mov     bx,filehandle
  300.                 mov     dx,[si]
  301.         mov    cx,[si+2]
  302.                 int     21h
  303.         jnc     here
  304.                 jmp    error
  305. here:
  306.                 retn
  307. seek_file       endp
  308.  
  309.  
  310. filenaam        db      'VPAGE.EXE', 0
  311. filehandle    dw    0
  312. lowsize         dw      21020
  313. highsize        dw      19
  314. readbyte        db      0
  315.  
  316. logo            db      ' ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄', 0Dh, 0Ah
  317.                 db      '█▀                                   ▀█', 0Dh, 0Ah
  318.                 db      '█           Visual Page v1.0          █', 0Dh, 0Ah
  319.                 db      '█    REMOVES EXPIRATION DATE + NAG    █', 0Dh, 0Ah
  320.                 db      '█                                     █', 0Dh, 0Ah
  321.                 db      '█      E-mail: dc_cbe@hotmail.com     █', 0Dh, 0Ah
  322.                 db      '█     Website: http://www.cbe98.org   █', 0Dh, 0Ah
  323.                 db      '█         IRC: #cbe98 on Efnet        █', 0Dh, 0Ah
  324.                 db      '█▄                                   ▄█', 0Dh, 0Ah
  325.                 db      ' ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀', 0Dh, 0Ah
  326.                 db      '■ OPENING FILE : ','$'
  327. fsize           db      'OK!',0Dh,0Ah,'■ CHECKING FILESIZE : $'
  328. crackfile       db      'OK!',0Dh,0Ah,'■ CRACKING FILE : $'
  329. cracksucc       db      'OK!',0Dh,0Ah,'■ CRACK SUCCESSFULL!',0Dh,0Ah,'$'
  330. alreadycrk      db      'ERROR!',0Dh,0Ah,'■ FILE ALREADY CRACKED OR DIFFERENT!',0Dh,0Ah,'$'
  331. sizemismtch     db      'ERROR!',0Dh,0Ah,'■ WRONG VERSION OF FILE!',0Dh,0Ah,'$'
  332. erroropen       db      'ERROR!',0Dh,0Ah,'■ CAN', 027h,'T OPEN FiLE !!',0Dh,0Ah,'$'
  333.  
  334. ofs             dw    35345 , 0 , 35346 , 0
  335.  
  336. data            db    116, 144 , 17, 144
  337.  
  338. code        ends
  339.  
  340.         end    start
  341. ----------------------------------cut here------------------------------------
  342.  
  343. Now, compile this patcher (with TASM or MASM) and you can distribute your
  344. crack!
  345.  
  346.  
  347. 7) Final Notes
  348.    ───────────
  349.  
  350. I hope that you enjoyed reading this tutorial as much as I did writing it!
  351. I wrote it for Ap0ll0 and pist0ls who are newbies! I feel that you two are
  352. going to be good crackers :)
  353. Good luck, dudes!
  354.  
  355. btw, my next cracking tutorial is going to be about patchers... Yup, don't
  356. miss it!
  357.  
  358. -da Cracker/CBE
  359. dc_cbe@hotmail.com
  360. http://www.cbe98.org
  361. #cbe98 on Efnet
  362. Come and chat with us on IRC!
  363.