-----------Sentence Structure---------- A 4am crack 2016-03-12 --------------------------------------- Name: Sentence Structure Genre: educational Year: 1983 Publisher: Borg-Warner Corporation Media: 3 single-sided 5.25-inch disks OS: DOS 3.3 Previous cracks: none All 3 disks are bootable. I'll start with disk 1. ~ Chapter 0 In Which Various Automated Tools Fail In Interesting Ways COPYA immediate disk read error Locksmith Fast Disk Backup unable to read any track EDD 4 bit copy (no sync, no count) no errors, but copy loads DOS then flashes screen forever Copy ][+ nibble editor modified data epilogue (D5 AA EB) on all tracks modified address and data prologues on T01+ (all over the place, not consistent?) Disk Fixer ["O" -> "Input/Output Control"] set Data Epilogue to "D5 AA EB" T00 readable -> looks like a standard DOS 3.3 bootloader I can also read sector $00 of each track; it seems to be the only one that uses standard prologues T11,S0F -> looks like a DOS 3.3 disk catalog VTOC Why didn't COPYA work? modified data prologues and epilogues Why didn't Locksmith FDB work? modified data prologues and epilogues Why didn't my EDD copy work? probably a nibble check after DOS is loaded (a flashing screen is not a standard failure mode -- somebody made it do that) Next steps: 1. capture RWTS with AUTOTRACE 2. convert disk to standard format with Advanced Demuffin 3. find nibble check and bypass it 4. declare victory (*) (*) take a nap ~ Chapter 1 In Which We Attempt To Use The Original Disk As A Weapon Against Itself [S6,D1=original disk] [S6,D2=blank disk] [S5,D1=my work disk] ]PR#5 CAPTURING BOOT0 ...reboots slot 6... ...reboots slot 5... SAVING BOOT0 CAPTURING BOOT1 ...reboots slot 6... ...reboots slot 5... SAVING BOOT1 SAVING RWTS ]BRUN ADVANCED DEMUFFIN 1.5 ["5" to switch to slot 5] ["R" to load a new RWTS module] --> At $B8, load "RWTS" from drive 1 ["6" to switch to slot 6] ["C" to convert disk] --v-- ADVANCED DEMUFFIN 1.5 (C) 1983, 2014 ORIGINAL BY THE STACK UPDATES BY 4AM =======PRESS ANY KEY TO CONTINUE======= TRK:.RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR +.5: 0123456789ABCDEF0123456789ABCDEF012 SC0:.RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR SC1:.RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR SC2:.RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR SC3:.RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR SC4:.RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR SC5:.RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR SC6:.RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR SC7:.RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR SC8:.RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR SC9:.RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR SCA:.RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR SCB:.RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR SCC:.RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR SCD:.RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR SCE:.RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR SCF:.RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR ======================================= 16SC $00,$00-$22,$0F BY1.0 S6,D1->S6,D2 --^-- Well that went... poorly. Let's back up. ~ Chapter 2 That's No Moon! Revisiting the original disk with my trusty Disk Fixer sector editor, I once again set the custom data epilogue so I can read the bootloader on track $00. After some manual inspection, I came across this curious array of... I'm not sure what exactly. --v-- -------------- DISK EDIT -------------- TRACK $00/SECTOR $06/VOLUME $FE/BYTE$56 --------------------------------------- $50: >D5 At $B8, load "RWTS" from drive 1 [press "I" to load a new IOB module] --> load "IOB B7ED" from drive 1 ["6" to switch to slot 6] ["C" to convert disk] --v-- ADVANCED DEMUFFIN 1.5 (C) 1983, 2014 ORIGINAL BY THE STACK UPDATES BY 4AM =======PRESS ANY KEY TO CONTINUE======= TRK:................................... +.5: 0123456789ABCDEF0123456789ABCDEF012 SC0:................................... SC1:................................... SC2:................................... SC3:................................... SC4:................................... SC5:................................... SC6:................................... SC7:................................... SC8:................................... SC9:................................... SCA:................................... SCB:................................... SCC:................................... SCD:................................... SCE:................................... SCF:................................... ======================================= 16SC $00,$00-$22,$0F BY1.0 S6,D1->S6,D2 --^-- Oh happy day. ]PR#5 ... ]CATALOG,S6,D2 C1983 DSR^C#254 000 FREE *A 004 BOOT A 016 START A 020 GRADER A 035 REPORT B 003 RAW B 003 RS T 006 MODULE FILE T 002 PROGRAM FILE T 004 MANINFO T 056 STUDENT RECORD FILE B 002 UNSSA B 004 IUSSA D B 015 IUSSA PRE B 015 IUSSA 1A B 017 IUSSA 1D B 012 IUSSA 1E B 014 IUSSA 1PCAB B 006 IUSSA 2A B 015 IUSSA 2BC B 011 IUSSA 2D B 010 IUSSA 2PCAB B 012 IUSSA 3AB B 018 IUSSA 3CD B 010 IUSSA 3PCAB B 015 IUSSA 4AB B 022 IUSSA 4CD B 008 IUSSA 4PCAB B 019 IUSSA POST ]RUN BOOT ERROR #6 FILE NOT FOUND Wait, what? Returning to Disk Fixer, I can now read every sector on the disk (on my copy). Here's the problem: there's a control character in the filename. --v-- -------------- DISK EDIT -------------- TRACK $11/SECTOR $0F/VOLUME $FE/BYTE$00 --------------------------------------- $00:>00<11 0E 00 00 00 00 00 @QN@@@@@ $08: 00 00 00 0F 0F 82 C2 90 @@@OO.B. ^^ Ctrl-P $10: CF CF D4 A0 A0 A0 A0 A0 OOT $18: A0 A0 A0 A0 A0 A0 A0 A0 $20: A0 A0 A0 A0 A0 A0 A0 A0 $28: A0 A0 A0 A0 04 00 0E 0F D@NO $30: 02 D3 90 D4 C1 D2 D4 A0 BS.TART $38: A0 A0 A0 A0 A0 A0 A0 A0 $40: A0 A0 A0 A0 A0 A0 A0 A0 $48: A0 A0 A0 A0 A0 A0 A0 10 P $50: 00 0D 0F 02 C7 90 D2 C1 @MOBG.RA $58: C4 C5 D2 A0 A0 A0 A0 A0 DER $60: A0 A0 A0 A0 A0 A0 A0 A0 $68: A0 A0 A0 A0 A0 A0 A0 A0 $70: A0 A0 14 00 0B 0F 02 D2 T@KOBR $78: 90 C5 D0 CF D2 D4 A0 A0 .EPORT --------------------------------------- BUFFER 0/SLOT 6/DRIVE 1/MASK OFF/NORMAL --------------------------------------- COMMAND : _ --^- Grumble grumble. ]PR#5 ... ]RUN BOOT,S6,D1 ...displays loading screen, then hangs with "ERROR 6.271 DETECTED"... Whatever that means. [S5,D1=DOS 3.3 system master] ]PR#5 ... ]RUN BOOT,S6,D1 ...displays loading screen, then crashes at $B6B5... OK, this disk reaaaaally wants to use its original DOS. Let's see what needs to happen for that to work. To get the disk to read itself, I need to restore the epilogue bytes to their original values. For future reference (mostly mine), here's a nice chart of the memory locations for all the prologues and epilogues in a DOS 3.3- shaped RWTS. If the RWTS stores $B700 in T00,S01 (this disk does), then $B8xx will be in T00,S02; $B9xx in T00,S03; and so on. 0x | read | write ---------------+-------+------- D5 | $B955 | $BC7A prologue AA | $B95F | $BC7F / 96 | $B96A | $BC84 ADDRESS -------+-------+------- \ DE | $B991 | $BCAE epilogue AA | $B99B | $BCB3 EB | | $BCB8 ---------------+-------+------- D5 | $B8E7 | $B853 prologue AA | $B8F1 | $B858 / AD | $B8FC | $B85D DATA ----------+-------+------- \ DE | $B935 | $B89E epilogue AA | $B93F | $B8A3 EB | | $B8A8 ---------------+-------+------- I spent way too much time making that. Thus: T00,S03,$35 change D5 to DE T00,S02,$9E change D5 to DE I also need to disable the per-sector prologue swapper. $BD94 called $BF5A (instead of $BE5A), which rotated the prologues and continued execution at $BE5A. So, to disable that, I should only need to change the $BF to $BE in the JSR: T00,S07,$96 change BF to BE ]PR#6 ...loads DOS, pauses, then flashes screen forever and hangs with the drive motor on... Oh what fresh hell is this. ~ Chapter 4 This Disk Is An Ogre, And Ogres Have Layers There is still more copy protection, which means I need to trace the boot even further. *9600 at the title screen to enter the management menu, which allows you to administer student records and print progress reports. There is no password. --------------------------------------- A 4am crack No. 649 ------------------EOF------------------