home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / utils / easyun.zip / SOFTGARD.TXT < prev    next >
Text File  |  1986-12-23  |  19KB  |  499 lines

  1. SOFTG203.UNP        Breaking Softguard version 2.03 & 2.03A
  2. version 24                                          by The Lone Victor
  3.  
  4.      United States copyright law SPECIFICALLY grants you the right to
  5. make copies of programs you buy on magnetic media.  Programs are copy
  6. protected IN VIOLATION OF YOUR RIGHTS UNDER U.S. LAW.
  7.  
  8.      Programs that are protected by the Softguard system are distinguished
  9. by the files CML0203.HCL and VDF0203.VDW which are hidden in the root
  10. directory when you install the program on your fixed disk.  The 0203
  11. part of the file names is the Softguard version (2.03) while CML stands
  12. for Common Loader and VDF is the Volume Descriptor File.  The extensions
  13. HCL and VDW stand for Hard-disk Common Loader and Verify Descriptor Working
  14. copy.  In addition, there will be a hidden root file with a .EXE or .LOD
  15. or some other extension.  This is the REAL program, which has been
  16. encrypted and hidden.
  17.  
  18.      The program <PRODUCT>.COM, in the product directory is the Softguard
  19. miniloader.  All it does is call the Common Loader.  For example, when you
  20. run CLIPPER, the program CLIPPER.COM loads CML0203.HCL high in memory and
  21. runs it.  CML decrypts itself and reads VDF0203.VDW.  The VDF file contains
  22. some code and data from the fixed disk FAT at the time of installation.  By
  23. comparing the information in the VDF file with the current FAT, CML can tell
  24. if the CML, VDF, and CLIPPER.L23 files are in the same place on the disk
  25. where they were installed.  If they have moved, say from a backup & restore,
  26. then CLIPPER will not run.
  27.  
  28.      This text file is designed to let you unprotect ANY of the programs
  29. using the Softguard 2.03 system.  We will use CLIPPER as an example,
  30. but values for other programs will be included in a table.  This text will
  31. not unprotect any programs using Softguard 2.00.  To unprotect Softguard
  32. 2.00, see the file SOFTG200.  Versions 1.00 of dBase III and Framework
  33. used ProLock.  To unprotect Prolock disks read the file PROLOCK.UNP,
  34. also by yours truly.
  35.  
  36.      This table is an experiment designed to keep down the number of
  37. files uploaded to BBS's.  When I started it, this text file was named
  38. SOFTG203.UN1.  Whenever you add a product to the table (including your
  39. "name" if desired) increment the file name by one and upload it to your
  40. local BBS.  Don't worry about the fact that others will be doing the same.
  41. Higher versions of SOFTG203.UNx will not INSURE that they contain all the
  42. tabulated products, but will be MORE LIKELY to contain them all.
  43. Eventually we'll get them all collected.  (Could this be a new type of
  44. electronic chain letter?)
  45.  
  46.      If you find a new program to add to the table, just enter the name of
  47. the encrypted, hidden file in the root directory, and it's size, converted
  48. to HEX.  Try it out before you upload it to your BBS.
  49.  
  50.      If you have any comments on this unprotect routine or the PROLOCK.UNP
  51. routine, please leave them on the Atlanta PCUG BBS (404) 433-0062.
  52.  
  53.                                           The Lone Victor - 7/14/85
  54.  
  55.  
  56.  
  57.             TABLE OF VALUES FOR VARIOUS PROTECTED PROGRAMS
  58.  
  59.                   FILE    FINAL
  60. PRODUCT  VERSION  NAME     EXT  SIZE:  BX=  CX=        CONTRIBUTOR
  61. ------------------------------------------------------------------------
  62.  
  63. Clipper     1.00  CLIPPER  EXE  BX = 1  CX = 9800  The Lone Victor 7/14/85
  64. Spotlight   1.1   SL       EXE  BX = 0  CX = 6600  HARD DISK USER  7/25/85
  65. dBASE III Developer's Release
  66.                   DBASE    EXE  BX = 1  CX = C000  Vanishing/|\Point 10/85
  67. dBCODE      1.62  DBC      COM  BX = 0  CX = 5A00  Vanishing/|\Point 10/85
  68. dBRUN             DBRUN    COM  BX = 1  CX = AC00  <<BOLTAR>>     11/01/85
  69.  
  70.  
  71.  
  72.  
  73.         USE THE SECOND UNPROTECT METHOD FOR THE FOLLOWING PROGRAMS
  74.  
  75.                   FILE    FINAL
  76. PRODUCT  VERSION  NAME     EXT  SIZE:  BX=  CX=        CONTRIBUTOR
  77. ------------------------------------------------------------------------
  78.  
  79. Clipper     S85   CLIPPER  EXE  BX = 1  CX = 9800  Hate Protection 9/23/85
  80. Doubledos   2.1R  DOUBLEDO EXE  BX = 0  CX = 4800  Godfather       10/02/85
  81. Sprdsht Auditor 2.00   AU  EXE  BX = 2  CX = 9400  The Lone Victor 10/31/85
  82. Framework II  1.0 FW       EXE  BX = 3  CX = 7600  <<BOLTAR>> & Co.11/23/85
  83. Disk Optimizer    OPTIMIZE COM  BX = 0  CX = 4100  CODEBUSTER     12/05/85
  84. Doubledos   2.1T  DOUBLEDO EXE  BX = 0  CX = 4600  <<BOLTAR>>     12/28/85
  85. Disk Optimizer for Version 1.2
  86.                   OPTIMIZE EXE  BX = 0  CX = 4600  <<BOLTAR>> & Co.12/28/85
  87. dBASE III Developer's Release
  88.                   DBASE    EXE  BX = 1  CX = C000  Vanishing/|\Point 10/85
  89. dBCODE      1.62  DBC      COM  BX = 0  CX = 5A00  Vanishing/|\Point 10/85
  90. dBRUN             DBRUN    COM  BX = 1  CX = AC00  <<BOLTAR>>      11/01/85
  91. Realia      2.00  REALCOB  EXE  BX = 0  CX = 6C00  Another Victor  11/10/85
  92. Direc-Tree 3.01   DTREE.EXE     BX = 0  CX = DA00  DKS-USA Inc.    03/26/86
  93. Reflection3 1.01  R3       EXE  BX = 1  CX = D200  Run-em          04/30/86
  94. Reflection3 1.30  R3       EXE  BX = 1  CX = 7600  Run-em          04/30/86
  95. Chuckle Pops 1.0  CHUCKLE  EXE  BX = 0  CX = 8D00  Captain Kirk    05/29/86
  96. MSCPAL2  1.1      MSCPAL2  COM  BX = 0  CX = 9400  REDBEARD        05/10/86
  97.  
  98.  
  99.            USE THE THIRD UNPPROTECT METHOD FOR SOFTGUARD 2.03A
  100.  
  101.                   FILE    FINAL
  102. PRODUCT  VERSION  NAME     EXT  SIZE:  BX=  CX=        CONTRIBUTOR
  103. ------------------------------------------------------------------------
  104.  
  105. 123         2.00  123      EXE  BX = 0  CX = 1C00  The Lone Victor 11/ 4/85
  106. PARADOX     1.00  PARADOX  EXE  BX = 0  CX = 8C30  The Blot        11/12/85
  107. REPORT WRITER  1  REPORT   EXE  BX = 1  CX = 1200  Bogus the Elf   10/09/86
  108.  
  109.  
  110.            USE THE YET ANOTHER UNPPROTECT METHOD FOR SOFTGUARD 2.0.3
  111.  
  112.                   FILE    FINAL
  113. PRODUCT  VERSION  NAME     EXT  SIZE:  BX=  CX=        CONTRIBUTOR
  114. ------------------------------------------------------------------------
  115.  
  116. CUBIT       1.10  CUBITR   COM  BX = 0  CX = 4800  Born to Code    09/27/86
  117. CAROUSEL    1.00  CAROUSEL EXE  BX = 0  CX = 4600  AIRWOLF         12/22/86
  118.  
  119.  
  120.  
  121.  
  122.     The following instructions show you how to bypass the SoftGuard copy
  123. protection scheme using CLIPPER version 1.00 as an example.  To use it
  124. with other products, simply substitute the values in the table above for
  125. the values given below.  The only things that change are the file name,
  126. and the size that goes in the BX:CX register pair.  You can obtain the file
  127. size by loading the encrypted file (e.g. CLIPPER.L23) with DEBUG and doing
  128. the Register command.  The file size is in the BX:CX register pair.
  129.  
  130.  
  131.  
  132.                         -- INSTRUCTIONS --
  133.  
  134.      First, using your valid, original CLIPPER diskette, install it on a
  135. fixed disk.  You cannot use this text to unprotect the floppy directly!
  136. Softguard hides three files in your fixed disk root directory: CML0203.HCL,
  137. VDF0203.VDW, and CLIPPER.L23.  It also copies CLIPPER.COM into your chosen
  138. CLIPPER directory.  CLIPPER L23 is the real CLIPPER program, encrypted.  The
  139. extension of this file does not matter.  It is really an encrypted .EXE file.
  140.  
  141.      Second, un-hide the three files in the root directory.  You can do
  142. this with the programs ALTER.COM or FM.COM found on any BBS.
  143.  
  144.      Make copies of the three files, and of CLIPPER.COM, into some other
  145. directory.
  146.  
  147.      Hide the three root files again using ALTER or FM.
  148.  
  149.      Following the CLIPPER instructions, UNINSTALL CLIPPER.  You can now
  150. put away your original CLIPPER diskette.  We are done with it.
  151.  
  152.      Now copy your four saved files back into the root directory and hide
  153. the CML0203.HCL, VDF0203.VDW, and CLIPPER.L23 files using ALTER or FM.
  154.  
  155.      We can now run CLIPPER.COM using DEBUG, trace just up to the point
  156. where it has decrypted CLIPPER.EXE, then write that file out.
  157.  
  158.           ****  USE THE FILE NAME LISTED IN THE TABLE ABOVE  ****
  159.      ****  E.G. USE FW.COM INSTEAD OF CLIPPER.COM FOR FRAMEWORK  ****
  160.  
  161. debug CLIPPER.com               ; name of file that runs the product
  162. r <CR>                          ; dump debug's registers
  163.  
  164.           ****  WRITE DOWN THE VALUE OF DS FOR USE BELOW.  ****
  165.      ****  THIS VALUE IS DEPENDENT ON YOUR PARTICULAR MACHINE. ****
  166.  
  167. g 4D7                           ; now we can trace CML
  168. t
  169. g 1B5
  170. t
  171. e cs:A2
  172.         74.EB                   ; debug reports the 74 here, you enter EB
  173. e cs:127
  174.         E8.90 D2.90 05.90       ; you enter the 90's followed by a space.
  175.                                 ; If you get a D1 instead of D2 skip to
  176.                                 ; the next page for the second version 2.03
  177. g 127
  178. a 186
  179.         jmp 1C6
  180.         <CR>                    ; this second CR gets you out of the assembler
  181. a 22C
  182.         jmp 266
  183.         <CR>
  184. a 420
  185.         mov ax,22
  186.         <CR>
  187. e cs:430
  188.         01.89                   ; debug reports the 01, you enter 89
  189. a 4CF
  190.         mov bl,7C
  191.         <CR>
  192. g 4E0
  193. g 282
  194. t
  195. g 24D
  196. t
  197. g 59F                           ; wait while reading VDF & FAT
  198. g=5AA 5BA
  199. g=5C2 9D3                       ; CLIPPER.EXE has been decrypted
  200.  
  201. d cs:1E0 L8                     ; just for grins, here's the password
  202.                '44250A15'
  203.  
  204.               ****  USE THE FILE SIZE LISTED IN THE TABLE ABOVE  ****
  205.                ****  THE VALUES HERE ARE FOR CLIPPER 1.00 ONLY  ****
  206.  
  207. rBX <CR>
  208. :1                              ; set BX to 1 for CLIPPER
  209. rCX <CR>
  210. :9800                           ; set CX to 9800 for CLIPPER
  211.  
  212.               ****  USE THE FILE NAME LISTED IN THE TABLE ABOVE  ****
  213.  
  214. nCLIPPER.bin                    ; name of file to write to
  215. w XXXX:100                      ; where XXXX is the value of DS that
  216.                                 ;   you wrote down at the beginning.
  217. q                               ; quit debug
  218.  
  219.      Last, unhide and delete the three root files CML0203.HCL, VDF0203.VDW,
  220. and CLIPPER.L23.  Delete CLIPPER.COM and rename CLIPPER.BIN to CLIPPER.EXE.
  221. This is the real CLIPPER program without any SoftGuard code or encryption.
  222. We could not write it out with the .EXE extension because DEBUG cannot write
  223. it is possible to use Softguard to encrypt .COM files too.  See the table
  224. above for the proper extension to put on the decrypted file.
  225.  
  226.  
  227.      There is another version of the Softguard system, ALSO labeled 2.03,
  228. but which differs by one byte in part of the CML file and 7 bytes in
  229. another.  If you start to apply the above patches and find some of the
  230. bytes do not match, try the following instructions:
  231.  
  232. debug CLIPPER.com               ; name of file that runs the product
  233. r <CR>                          ; dump debug's registers
  234.  
  235.           ****  WRITE DOWN THE VALUE OF DS FOR USE BELOW.  ****
  236.      ****  THIS VALUE IS DEPENDENT ON YOUR PARTICULAR MACHINE. ****
  237.  
  238. g 4D7                           ; now we can trace CML
  239. t
  240. g 1B5
  241. t
  242. e cs:A2
  243.         74.EB                   ; debug reports the 74 here, you enter EB
  244. e cs:127                        ; HERE START THE 1 BYTE DIFFERENCES
  245.         E8.90 D1.90 05.90       ; you enter the 90's followed by a space.
  246. g 127
  247. a 185
  248.         jmp 1C5
  249.         <CR>                    ; this second CR gets you out of the assembler
  250. a 22B
  251.         jmp 265
  252.         <CR>
  253. a 41F
  254.         mov ax,22
  255.         <CR>
  256. e cs:42F
  257.         01.89                   ; debug reports the 01, you enter 89
  258. a 4CE
  259.         mov bl,7A
  260.         <CR>
  261. g 4DF
  262. g 281
  263. t
  264. g 24D
  265. t                               ; HERE ARE THE 7 BYTE DIFFERENCES
  266. g 5A6                           ; wait while reading VDF & FAT
  267. g=5B1 5C1
  268. g=5C9 9DA                       ; CLIPPER.EXE has been decrypted
  269.  
  270. d cs:1E7 L8                     ; just for grins, here's the password
  271.                'SUMMER85'
  272.  
  273.               ****  USE THE FILE SIZE LISTED IN THE TABLE ABOVE  ****
  274.              ****  THE VALUES HERE ARE FOR CLIPPER SUMMER 85 ONLY  ****
  275.  
  276. rBX <CR>
  277. :1                              ; set BX to 1 for CLIPPER
  278. rCX <CR>
  279. :9800                           ; set CX to 9800 for CLIPPER
  280.  
  281.               ****  USE THE FILE NAME LISTED IN THE TABLE ABOVE  ****
  282.  
  283. nCLIPPER.bin                    ; name of file to write to
  284. w XXXX:100                      ; where XXXX is the value of DS that
  285.                                 ;   you wrote down at the beginning.
  286. q                               ; quit debug
  287.  
  288. REN CLIPPER.BIN CLIPPER.EXE
  289.                                           The Lone Victor - 9/20/85
  290.  
  291.  
  292. SOFT203A.UNP        Breaking Softguard version 2.03A
  293. version 1                                           by The Lone Victor
  294.  
  295.      There is a THIRD version of the Softguard system, labeled 2.03A,
  296. which is used by Lotus for 123 release 2.
  297.  
  298.      First, using your valid, original 123 diskette, install it on a
  299. fixed disk.  You cannot use this text to unprotect the floppy directly!
  300. Softguard hides three files in your fixed disk root directory: CML0203A.HCL,
  301. VDF0203A.VDW, and 123.L2C.  It also copies 123.COM into your chosen 123
  302. directory.  123.L2C is the real 123 loader, encrypted (it loades the 123.CMP
  303. file). The extension of this file does not matter.  It is really an
  304. encrypted .EXE file.
  305.  
  306.      We can now run 123.COM using DEBUG, trace just up to the point
  307. where it has decrypted 123.EXE, then write that file out.
  308.  
  309.           ****  USE THE FILE NAME LISTED IN THE TABLE ABOVE  ****
  310.        ****  E.G. USE FW.COM INSTEAD OF 123.COM FOR FRAMEWORK  ****
  311.  
  312. debug 123.com                   ; name of file that runs the product
  313. r <CR>                          ; dump debug's registers
  314.  
  315.           ****  WRITE DOWN THE VALUE OF DS FOR USE BELOW.  ****
  316.      ****  THIS VALUE IS DEPENDENT ON YOUR PARTICULAR MACHINE. ****
  317.  
  318. g 4FA                           ; now we can trace CML
  319. t                               ; this step changes segments into CML
  320. g 1B5
  321. t                               ; change segments
  322. a 7D    mov ax,cs               ; assemble new instruction here over xor ax,ax
  323. e cs:E9                         ; NOP out a mov ds,cx instruction
  324.         8E.90 D9.90             ; when debug reports 8E. you enter 90 <space>
  325.                                 ; when debug reports D9. you enter 90 <CR>
  326. e cs:F5                         ; change a jz instruction into a jmp
  327.         74.EB                   ; debug reports the 74 here, you enter EB
  328. e cs:107
  329.         8E.90 D8.90             ; NOP out a mov ds,ax
  330. e cs:119
  331.         8E.90 D9.90             ; NOP out a mov ds,cx
  332. e cs:1AA
  333.         CC.90                   ; NOP out an int 3
  334. g1AA                            ; go to this address
  335. e cs:1E6
  336.         CC.90                   ; NOP out an int 3
  337. e cs:200
  338.         E8.90 FF.90 03.90       ; NOP out a call 602
  339. e cs:269
  340.         26.2E                   ; change an es: to cs:
  341. e cs:26E                        ; change order of some pop instructions
  342.         1F.5A 5A.59 5F.5B 5B.5F 5E.5E 59.1F
  343. e cs:1B6
  344.         8E.90 DB.90             ; NOP out a mov ds.bx
  345. e cs:1DD
  346.         74.EB                   ; change a jz to a jmp
  347. a 44C
  348.         jmp 4BF                 ; jump to some code we need
  349. a 53C
  350.         jmp 455                 ; jump back into main line code
  351. a 4E1
  352.         mov bl,10               ; provide correct checksum value
  353. e cs:500
  354.         FE.90 C7.90             ; NOP out an inc bh
  355. e cs:52B
  356.         8E.90 D9.90             ; NOP out a mov ds,cx
  357. g 1E6
  358. t                               ; trace through two passes
  359. g 1E6
  360. g 290
  361. t                               ; change segments
  362. g 24D
  363. t                               ; change segments
  364. e cs:728
  365.         8C.90 1F.90             ; NOP out a mov [bx],ds
  366. e cs:431
  367.         89.90 07.90             ; NOP out a mov [bx],ds
  368. e cs:5BD
  369.         75.90 03.90             ; NOP out a jnz 5C2
  370. e cs:5F0
  371.         89.90 17.90             ; NOP out a mov [bx],dx
  372. e cs:5D8
  373.         74.EB                   ; change a jz to jmp
  374. g A41
  375. g AFA                           ; 123.EXE has been decrypted
  376.  
  377. d cs:1F1 L8                     ; just for grins, here's the password
  378.                'LOTUSKEY'
  379. e XXXX:100                      ; where XXXX is the value of DS that
  380.                                 ;   you wrote down at the beginning.
  381.         3B.4D 2E.5A             ; programs other than 123 rel 2 may
  382.                                 ; have some numbers here other than 3B 2E
  383.  
  384.               ****  USE THE FILE SIZE LISTED IN THE TABLE ABOVE  ****
  385.                  ****  THE VALUES HERE ARE FOR 123 2.00 ONLY  ****
  386.  
  387. rBX <CR>
  388. :0                              ; set BX to 0 for 123
  389. rCX <CR>
  390. :1C00                           ; set CX to 1C00 for 123
  391.  
  392.               ****  USE THE FILE NAME LISTED IN THE TABLE ABOVE  ****
  393.  
  394. n123.bin                        ; name of file to write to
  395. w XXXX:100                      ; again XXXX is the original DS value
  396. q                               ; quit debug
  397.  
  398.      Following the 123 instructions, UNINSTALL 123.  You can now
  399. put away your original 123 diskette.  We are done with it.  Delete
  400. 123.COM and rename 123.BIN to 123.EXE.  This is the unprotected 123
  401. loader which runs the 123.CMP program. We could not write it
  402. out with the .EXE extension because DEBUG cannot write .EXE files.
  403.  
  404.  
  405.                     Yet another Softguard 2.0.3 system
  406.                                      by "Born to Code"
  407.  
  408. The folks at softguard have been up to no good ! This version is also
  409. labelled 2.0.3, but is enhanced over the previous version with more
  410. checks for debug interrupts and trace interrupts. I don't know if it
  411. is being used on anything else, but I suspect that it is.
  412.  
  413. This file was a debug input redirection that I used to unprotect CUBIT v1.1.
  414.  
  415. debug CUBITR.COM  ; cubit resident is the softguarded one
  416. ; first look at ds to find where our completed exe file will end up
  417. r
  418. g 4d7
  419. t
  420. g 1b5
  421. t
  422. e cs:a2
  423. eb
  424. ; there are 2 calls here at 127 instead of 1 that must be
  425. ; nop'ed out because they do nasty debugger checks.
  426. e cs:127
  427. 90 90 90 90 90 90
  428. g 127
  429. ; however the calls do poke some code, so here it is:
  430. e cs:272
  431. 07 5d
  432. ; standard softguard stuff
  433. a 188
  434. jmp 1c8
  435.  
  436. a 22e
  437. jmp 268
  438.  
  439. ; the old int 1 stuff has been replaced with int 3 which is shorter
  440. ; but the following code will do the same job without using int 3
  441. a 410
  442. pushf
  443. push cs
  444. call 490
  445. jmp 42b
  446.  
  447. a 41f
  448. jmp 42b
  449.  
  450. ; now patch out the loop to compute the key byte with a simple move
  451. ; figuring out the key byte (80) was a real pain !
  452. a 4bd
  453. mov bl,80
  454.  
  455. ; we're in the home stretch now
  456. g 4ce
  457. g 274
  458. t
  459. g 24d
  460. t
  461. ; patch out some moves that poke out int 3
  462. e 72a
  463. 90 90
  464. e 435
  465. 90 90
  466. g 5c1
  467. g=5cc 5dc
  468. ; he sure loves to zap int 3, but we'll stop him
  469. e 5f2
  470. 90 90
  471. g=5e4 a16
  472. g a53
  473. g ae7
  474. g af9
  475. ; and for the grand finale, here is the key
  476. d cs:di l 8
  477. rbx
  478. 0
  479. rcx
  480. 4800
  481. ncub.bin
  482. ; make it a proper load image
  483. e xxxx:100
  484. 4d 5a
  485. w xxxx:100
  486. q
  487.  
  488. A patch for Lotus Report Writer and Lotus 1-2-3 V2.0 to remove
  489. the jump to A: after booting from the hard disk.  After removing
  490. the Softguard 2.03A from either product, edit the resulting .exe
  491. file with Norton or some similar file editor program.
  492.  
  493. Search for the bytes CD 13 in both programs; they should be found
  494. very close the the code which states "(serial number not found)". 
  495. Change these bytes to 90 (NOP).
  496. In Report Writer, also search for 73 09 and replace with 90 as
  497. well.  That's it! The program will now ignore A: on boot.
  498. 
  499.