home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaDemoCD2.iso / ASCII / TEXTE / SCENE / HPA / ANARCHY / CRACK.TXT < prev    next >
Encoding:
Text File  |  1994-03-26  |  22.3 KB  |  550 lines

  1. @BEGIN_FILE_ID.DIZ
  2. How to crack amiga games
  3. @END_FILE_ID.DIZ
  4.  
  5. Newsgroups: comp.sys.amiga.programmer
  6. Path: cunyvm!ukma!darwin.sura.net!mips!mips!munnari.oz.au!newsroom.utas.edu.au!<>
  7. From: <> (<>)
  8. Subject: How to crack an Amiga game!!
  9. Message-ID: <1992Jun26.054738.20843@newsroom.utas.edu.au>
  10. Sender: news@newsroom.utas.edu.au
  11. Organization: <>
  12. Date: Fri, 26 Jun 1992 05:47:38 GMT
  13. Lines: 200
  14.  
  15. So, some of you guys would like to know how to go about cracking
  16. games hey??
  17.  
  18. Well, here's how you do it!
  19.  
  20. The first place to start is always the bootsector! The bootsector is
  21. so small that most games don't bother having any protection at all there.
  22.  
  23. Generally (on professional productions) the bootsector will be a
  24. 1k long raw-tracks loader....not dos standard of course.
  25.  
  26. ..so simply rip the bootsector off and disassemble it. If your lucky
  27. (for some nice easy work) it will only kill the DMA,INTS, etc.etc, colours
  28. and set up the stack real low. then it usually copies itself just up
  29. above the stack, (it doesn't need to be position-dependant any more if
  30. it's been previously relocated) and will load some tracks.
  31.  
  32. Disassenble the bootcode = 30 seconds work
  33.  
  34. If you're good enough, you won't have to even look at the routine for
  35. more than a minute to figure out where the tracks are loaded too, and how
  36. much... Now assemble the bootcode, and stick in a mouse-wait at the
  37. top. OK....run ... Now hit the button on your cartridge (of course!..
  38. why do things tha hard way?) and set a breakpoint at the place
  39. where the loader will terminate and jump into the loaded tracks..
  40.  
  41. Now save out the loaded tracks to disk and get ready for stage two..
  42.  
  43.  
  44. Stage two starts to become more fun! You've got two more options from
  45. here... either there will be another sub-loader, or this will be the
  46. main loading routine.
  47.  
  48. If it's ther former, you're in for some fun over the next day or 2!
  49. What will of course occur, is they will try to kill yer cartridge, lose
  50. you in the code, generally put all those great obsticles in the
  51. way... The same kind of general guidelines will apply from now on, so
  52. here they come..
  53.  
  54. a) always go from one step to another from an assembled file, ie have a
  55.    binary file, incbin it, and emulate all of the conditions that have
  56.     been se up to that point
  57. c) at all times make sure that the game will work correctly from
  58. your assembled file! lotsa games are paticularly good at making
  59. hidden/latent protection bugs which will multiply.
  60.  
  61. c) Always make sure that the game will run with your cartridge in, as
  62. it will save alot of work..
  63.  
  64. d) Watch out for the cool trick of leaving the stack pointing into the
  65. middle of some crucial data (it's obvious when you know what to look for
  66. cuz no interrupts will be used conspicuously)
  67. .cuz when you press your button, the data will get correpted = messy
  68. if the data was packed and in the middle of de-packing
  69.  
  70. e) The standard trick is the trace-vector-decoder
  71.  
  72. REMEMBER THIS NAME!!!!!!
  73.  
  74. What will happen here is that the trace routine to be executed will be
  75. pushed onto the stack, and the trace-vector will be pointed to it....
  76. you will se a load of shit just in front of the PC, and the last
  77. command will be a move to the SR to kick off the trace....
  78.  
  79. [erm, for new guys..what happens is that the trace vector code is
  80. executed after each instruction, and after the current instruction,
  81. the trace vector decodes what the next instruction will be...]
  82. [ thus all you see in front of the PC is garbage]
  83.  
  84. So you want to know the best way to get around this??
  85. Easy! rule .1 is Know the length! Write a routine which counts from 0 to
  86. whatever, and chuck this at the end of the trace (in place of the rte
  87. put a jump to your code - watch out for the trace taking checksums of the
  88. trace it'self and the area below the stack!!
  89. Loacte the screen address if it's being displayed, and youe can get
  90. your 'counter' to show you the number of repetitions of the trace...
  91. [by printing the current number of reps to the screen]
  92.  
  93. Small ones are a piece of piss, longer ones like the ones on Gods/Magic
  94. Pockets are harder, but really fun eh!?
  95. [well over 270 reps if I remember]
  96.  
  97. Of course any good TVDecoder will kill yer cartridge on it's way through..
  98. .. anyway... find out what it does....finding out the effects is always
  99. really importaant...I'm too lazy to write more...
  100.  
  101. TVDecoders will be used to encrypt the disk-loaders, encrypt packers,
  102. hide some sneack checksum routine...etc.etc...
  103.  
  104. f) Packers are always a gimme. After a while, you'll know your packers like
  105. back of your cock, er...hand..! Most of them are junk/repeats anyway, and
  106. always easy to find where the files go to...
  107.  
  108. g) Futher disk loaders are always fun. The guy has got all this memory
  109. to try to confuse you, but if he can understand it, so can you...
  110.  
  111. h) I'm getting bored of all of this .... you've gotta learn all the
  112. tricks yourself!... it's the only way. A helpful tip is look out for
  113. interrupts!. Watch what will happen to the stack when you press your
  114. cartridge.. and MOST IMPORTANTLY
  115. NEVER GO TO THE NEXT STAGE OF THE ROTECTION IF YOU CAN'T RUN IT FROM
  116. YOUR ASSEMBLER AND GET IT RUNNING WITH THE ORIGINAL DISK IN THE DRIVE
  117.  
  118.  
  119. hehe I nearly forgot...here's a neat trick for all you
  120. learning crackers, what do you think this code does??
  121.  
  122.        move.w #$4e71,pokeme        (this is a 'nop' for guys who don't
  123. pokeme  bra.s  red                    memorise  the opcode)
  124.        bra.s  green
  125.  
  126. red    move.w #$f,$dff180
  127.        bra.s  red
  128. green  move.w #$f0,$dff180
  129.        bra.s  green
  130.  
  131. hint - you get a green screen!!!!
  132.  
  133. .Look, this is the type of 68000 trick that the other guy will try to
  134. put over your head. This type of thing is boring to a pro, but don't
  135. become frustrated, you have the rest of your life to work it out!
  136. ..you'll figure out all the tricks sooner or later...
  137.  
  138.  
  139.  
  140.  
  141. OK,OK, so you've got to the main program - ALL games will have a main
  142. program of some sort or another!
  143. Right, the aim here is to gradually alter the loaders until none
  144. of the originals are used!
  145.  
  146. So this is the setup... You've got your main prg as a binary file, say
  147. starting at $400, stack below $400 and you've got all the contents of
  148. all hardware etc registers set up before you start.
  149.  
  150. If the file is big, pack it, as it wil save time in the long-run..get another
  151. amiga with loads of memory just for packing!
  152.  
  153. ..this is what your 'CRACK-SHELL' will look like,
  154.  
  155. -kill dma, ints etc, supervisor mode (I use the division by 0 method..)
  156. -depack main prg to $400
  157. -set stack, all registers.... CIA are important to set up too!
  158.  (this is a mistake of beginners too...)
  159.  (also use the SR! - alot of Amiga guys leave it alone..)
  160. -Wait mouse..
  161.  
  162. OK assemble,..RUN, put original into drive and press mouse...
  163. (the game will run normally as if nothing has happened)
  164.  
  165. This is the basic shell from which alot of crackers work!
  166. Now, you've gotta pick up the files if it's a multi-load
  167. (they all are nowadays...but in the old days....*sigh*)
  168.  
  169. OK, the idea is to figure out the loaders, rip them off and get the
  170. files... when you first see the disk-code(its LONG!) you think *?what?* ...
  171. ..I'm not doing that every time!
  172.  
  173.  
  174. Relax, you've gotta serve your apprenticeship and become familiar
  175. with the routines. After a wile you'll be able to pick out the
  176. head-stepers, drive-selecters, decoder, etc and it'ss be easy to
  177. work out what's going on. (just like packers,they become a help rather
  178. than a hinderence... there are only a limited number of ways to do
  179. the loading!)
  180. Now, pick off all the files...it helps to make the trainer at this
  181. time so that you can cheat and collect all of your files the easy way
  182. OR you can pick up the loading data - THER'E'S ALWAYS LOADING DATA!
  183. (ie from 'block/track... to block/track etc..) and disassemble
  184. the relevant parts of the loading routines and use his routines to
  185. load his files...
  186.  
  187. OK, you've got them, this is where all your meg's come in handy!.
  188.  
  189. Get the files packing on your other Amiga for a few hours, and try to
  190. pick the disk-protection...
  191. of course watch out for the obligatory checksum/ etc routine(s) to
  192. make sure that code within the game...specifically the loaders
  193. aren't tampered with...
  194.  
  195. OK, the files are packed (shit! that was a long-wait if it was a two-disk
  196. game!) ... OK
  197.  
  198. You must code a routine which merges all of the small packed files
  199. into a 'BIGCRUNCH' as I call it... This BIGCRUNCHER will put all of the
  200. packed files into 1 single large file and save this file out PLUS
  201. a list of all of the offsets of the individual files in the big file.
  202.  
  203. OK,OK...You're ready to go.. Include the BIGCRUNCH into your assembler
  204. CRACKSHELL ... incbin... Right include some code to copy the
  205. bigcrunch to say $c00000 if it';s not used. The aim here is to run the
  206. file and get the file-loader routines replaced with your de-packer
  207. routine!!!
  208. ie..instead of loading from disk, all the files will be depacked
  209. down from the high-ram into their proper places (YEAH! MOVE.W $DFF006,$DFF180)
  210.  Thus you get a 1-meg game, and the drive will only spin
  211. when the copy-protection is working..
  212.  
  213. .
  214. ,
  215. =========================================================================
  216. Newsgroups: comp.sys.amiga.programmer
  217. Path: cunyvm!caen!sdd.hp.com!mips!mips!munnari.oz.au!newsroom.utas.edu.au!<>
  218. From: <> (<>)
  219. Subject: How to crack and Amiga game2!!
  220. Message-ID: <1992Jun27.044730.14869@newsroom.utas.edu.au>
  221. Sender: news@newsroom.utas.edu.au
  222. Organization: <>
  223. Date: Sat, 27 Jun 1992 04:47:30 GMT
  224. Lines: 52
  225.  
  226. Shit! The end of that article was cut off!! OK,OK, I was tired anyway
  227. after not going to be for 3 days cuz of exams....
  228.  
  229. 1st that example was wrong:
  230. ---------------------------
  231. ; Assemble this!
  232.         move.w  #$4e71,pokeme
  233. pokeme  bra.s   green
  234.         bra.s   red
  235.  
  236. green   move.w  #$f0,$dff180
  237.         bra.s   green
  238. red     move.w  #$f00,$dff180
  239.         bra.s   red
  240.  
  241. ---------------------------
  242.  
  243. The green branch is taken anyway, despite the previous line nop'ing it.
  244. (assemble just that and try it)
  245.  
  246. Anyway, that wasn't the fu*&in' point! The point is that these are the
  247. types of coding tricks that the other guy will use to try to trick
  248. you!!!
  249. To a pro, these tricks are easy, but to a new guy, they are tuff!!
  250. The article I wrote yesterday was about 4 times longer than the
  251. one which you recieved!..and I actually did tell you the whole method
  252. that many crackers use jamm the games!!!!!!!!!!!!!!!!! I don't know
  253. why the end of it was cut off, but I'll type it in again now!!!!!!!!!!!
  254. I can't be bothered typing out the rest of the hints which were cut
  255. off, I'll get down to the main part..
  256.  
  257. I said that what will happen is that the other guy will try to lose you in
  258. the code, but you must follow that PC until you get to the main program
  259. (there's ALWAYS a main program!!!!!!!!!!)
  260. Save the main program out to disk (sometimes 1 file, sometimes lots)
  261. and then get into your assembler and get out your CRACKSHELL and put in
  262. the code which will emlate the conditions of the machine which will
  263. allow you to run the game from the assembler..
  264.  
  265. The crackshell will do this:
  266. - kill dma,interrupts,
  267. - copy the bits of the game to their usual positions
  268. - waitmouse
  269. - set up the status of the machine which will alow the binary to run
  270.   (eg, SR,hardware re'gs, vectors, registers, cia ... EVERYTHING!!!!!)
  271.  
  272. What you should be able to do is to assemble the crackshell and run it,
  273. (the machine will be killed - insert the game disk(s))
  274. now press the mouse button, and the game will run normally!!!!!!
  275.  
  276. I'm doing this in parts this time, goto news #3!!!!!!!
  277.  
  278. =========================================================================
  279. Newsgroups: comp.sys.amiga.programmer
  280. Path: cunyvm!caen!sdd.hp.com!mips!mips!munnari.oz.au!newsroom.utas.edu.au!<>
  281. From: <> (<>)
  282. Subject: How to crack an Amiga game #3!!
  283. Message-ID: <1992Jun27.051137.15404@newsroom.utas.edu.au>
  284. Sender: news@newsroom.utas.edu.au
  285. Organization: <>
  286. Date: Sat, 27 Jun 1992 05:11:37 GMT
  287. Lines: 66
  288.  
  289. OK, as was in the original posting, you've gotta now collect the extra
  290. files!!!!!!!!!!
  291.  
  292. look at the code to find the routines which load the files!
  293. eg MOVEQ  #1,d0         ; file number...the load routine will use it
  294.    LEA    $60000,A0     ;dest address of the file
  295.    JSR     Load
  296.  
  297. There are two ways to collect the files
  298. 1. train the game, and play right through to the end, collecting the
  299. files with your cartridge as they load in
  300.  
  301. OR
  302. 2. rip-off the loaders and decrunchers and use the other guy's own
  303. routines to get his files!! You must get his 'file info' if you
  304. want to do this!!!
  305. Write a program which accepts the inputs, and uses his routines
  306. eg...
  307. - get start block, end block
  308. - kill system and load the files using the original routines
  309.   (don't to insert the original disk first)
  310. - depack them with his routines if necessary
  311. - restore system and save the files to your own disk
  312.  
  313. Right, you've got the files, now pack them with your disk packer and
  314. take a break!!!!!
  315.  
  316. OK, run the files through your BIGCRUNCHER as I described, and you will
  317. get two things out of it:1. a file which contains all of the packed
  318. files and 2. the data which says where the start of each file is within
  319. the bigcrunched file!!
  320.  
  321. now, set up your CRACKSHELL so that the BIGCRUNCH will be copied up
  322. to some spare ram...eg $c00000 if it's not used..
  323.  
  324. Now you've gotta alter the main game program so that your routines will
  325. be executed instead of the original loaders. The routine that you
  326. will write will take the same inputs as the main game supplies, and
  327. has the same effect as the original routines.
  328. Assemble this program to disk, relocate it to say, $d00000, with
  329. your relocator utility
  330. (HEY! I'm gonna post the code for this tomorrow!!!!!)
  331.  
  332. Now, you've gotta change your CRACKSHELL so that it does this:
  333. 1. kills the system
  334. 2. copies the main-game file to it's original position
  335. 3. copies the BIGCRUNCH (ie all of the extra files - packed) to say $C00000
  336. 4. copies your loader-emulator to say $d00000
  337. 5. set up the initial conditions, as before
  338. 6. POKE THE MAIN GAME FILE SO THAT IT EXECUTES YOUR ROUTINE AT $D00000
  339.  
  340. Number 6 is the most important new one. Say the original used to
  341. do this:
  342. moveq #1,d0 ; file number
  343. lea    $60000,a0 ; dest address
  344. jsr    $1004     ;load routine
  345.  
  346. then at $1004 you must do this: JMP $d00000 !!!!!!!!!!!!
  347.  
  348. Thus, your routine will be executed instead of the original file-loader
  349. and the result will be that the files are still put into there
  350. required positions by your depacker routine, and the RTS at the end
  351. will continue the game on as if nothing had ever happened!!!!!
  352. (alot of games need eg. registers ro be returned with values)
  353.  
  354. goto article #4!!!!!!!!
  355. =========================================================================
  356. Newsgroups: comp.sys.amiga.programmer
  357. Path: cunyvm!caen!sdd.hp.com!mips!mips!munnari.oz.au!newsroom.utas.edu.au!<>
  358. From: <> (<>)
  359. Subject: How to crack and Amiga game4!!
  360. Message-ID: <1992Jun27.054304.15938@newsroom.utas.edu.au>
  361. Sender: news@newsroom.utas.edu.au
  362. Organization: <>
  363. Date: Sat, 27 Jun 1992 05:43:04 GMT
  364. Lines: 71
  365.  
  366. Now, the tuff part about replacing the loader routine with your one
  367. at $d00000 is that the original loader will usually leave some
  368. kind of message that it's been executed, and mostly there is some
  369. disk protection in the loader code!!!! This is where I'm becomming
  370. bored of typing all this info in, so I'll give you some general
  371. guidelines here!!!!!!!!
  372.  
  373. 1. watch out for interrupt routines!!!! they might be checking things!
  374. 2. find out the total effect of the loader routine, emulate it
  375. 3. the protection might even involve setting a CIA register
  376.    a certain way!!! I've seen this one before!!!
  377. 4. an equally good way of beating the routines is to
  378.    find out the routine which detects if the loader has been run
  379.  
  380. The number of tricks which can be used here is many, you must learn
  381. to overcome these yourself!!!
  382.  
  383.  
  384. OK, now you will have a completely 1-meg game!!
  385. You can assemble the CRACKSHELL and run it, and the only time that
  386. the disk will spin is when the disk protection in working!!!!!!!
  387.  
  388. NEXT STEP IS TO BUST THE DISK PROTECTION ROUTINES
  389.  
  390. When you think about it, then only real way to protect a game is to
  391. check for something which is hard to copy. like a dongle, or a disk
  392.  
  393. Thus, you have to have a routine sitting in memory to be able to
  394. do this checking, and this is the vulnerable part! All you have
  395. to do is remove this rouine at this point and you've got the game
  396. cracked (as we have the files already).. easy, no?
  397.  
  398. NO!!!!!!!!!!!!!!!!!!!!!!!!!!!
  399.  
  400. This is where most of the action is!!!! Most of the effort will go into
  401. protecting this routine from removal, and not the routine itself!!!
  402.  
  403. This is where you will win or lose! This routine may be encrypted
  404. with a trace vector decoder, or there may be checks to make sure that
  405. this routine is run, it will pass some values back to the main game
  406. routines probably, there will be other routines to check that this
  407. routine is not removed. The list of methods is many!
  408.  
  409. I'd like to make some points here...
  410. 1. I wrote alot about this in the 1st artice I posted, but this part
  411. was cut off...and I can't be bothered typing this stuff in again
  412. (unless you post yourself and demand it!)
  413.  
  414. 2. For the sake of simplicity, I didn't really mention that that the
  415. file loader (which we earlier bypassed) will be very heavily protected
  416. like the copy protection routines
  417. .Very often there is no separate copy prot routine, just a hugely
  418. fotified file-loader...
  419.  
  420. 3. In the majority of cases, the protection code will not be seen
  421. by the porgrammer himself..
  422. eg. early Rob Northern.. He will get 2 files. 1 will put the protection on
  423. the disk, the other will be incbin'ed into the game, and be jsr'ed,
  424. ..the result returned in the trace vector
  425. Thus your job will be easier in this case, as the protection is
  426. 'modular' if you can understand that expression
  427.  
  428.  
  429. As I'm not going to give you specific details of the types of things
  430. that can trick you here, I will simply give you the aim of all this!
  431.  
  432. The aim is to get to the stage where the original disk is no longer
  433. accessed!!!!!!!!!!! Thus all of the extra files will be depacked from
  434. the extra-mem and the game will work as normal!
  435.  
  436. (goto article #5!!!!!!!!!)
  437. =========================================================================
  438. Newsgroups: comp.sys.amiga.programmer
  439. Path: cunyvm!caen!sdd.hp.com!mips!mips!munnari.oz.au!newsroom.utas.edu.au!<>
  440. From: <> (<>)
  441. Subject: How to crack and Amiga game5!!
  442. Message-ID: <1992Jun27.062424.16809@newsroom.utas.edu.au>
  443. Sender: news@newsroom.utas.edu.au
  444. Organization: <>
  445. Date: Sat, 27 Jun 1992 06:24:24 GMT
  446. Lines: 102
  447.  
  448. Right, so You can run the game without the original disk! Yeah! You're
  449. nearly there!!
  450.  
  451. THE SECOND LAST STEP IS TO NOW INSERT YOUR OWN DISK LOADERS
  452.  
  453. As a cracker you'll probably have a collection of diskloaders!
  454. Some like to use raw tracks, others like to use file-loaders
  455.  
  456. I'm a file loader freak!! The file loader will be a standard routine
  457. which only needs the name of the file to be defined, the destination
  458. address and the address where you can do DMA too
  459.  
  460. The file loader must be very nice to the game! ..not using anything
  461. or changing anything...so these are the rules
  462.  
  463. 1. decode the sectors into the same area that you do DMA to
  464. 2. Don't touch anything other than the necessary registers...
  465.    eg. the game shouldn't be able to see your loader!..use DBF
  466.    timing loops for waiting, use the 68000 to decode (though you can
  467.    try using the blitter if the original used it..)...etc.etc
  468. 3. make sure all registers etc are returned as the original did
  469.  
  470. *4.If you are a really cool guy, you will want to use the trick of
  471.    loading the files into there dest. positions and depacking them
  472.    back over themselves - make sure you put depack striped in there
  473.    to show how cool you are!!
  474.  
  475. Many games use file names, and a pointer to the file name itself will be
  476. given...in which case, just use the original name. Otherwise, a number
  477. will be given...let me explain.
  478.  
  479. this will be the code in the original game
  480.       moveq #1,d0
  481.       lea   $60000,a0
  482.       (might also pass the DMS address here if it moves)
  483.       JSR   loadit
  484.  
  485. and in the original, there will be an array of 'file info'
  486.  
  487. (this is looking at memory..)
  488. eg. $0016,$009f       file 0 goes from 'block' 22 to $9f
  489.     $0100,$0106       file 1 goes from 'block' $100 to $106
  490.     $0107,$0110       etc
  491. thus, the original loader would do this:
  492.     add.w   d0,d0
  493.     add.w   d0,d0     ...now
  494.     lea     data,a1
  495.     add.w   d0,a1
  496.     now get the data
  497.  
  498. (another common fileinfo format is start-block,length of file)
  499.  
  500. We don't need to bother about this, as we have files on the disk! The
  501. solution os to use the value in D0 as the filename on the disk
  502.  
  503. eg. If d0 = 1, then the name of the file is '$0001' on the disk
  504. This is easy to do!!!!!!! Just at the beginning of your file-loader
  505. make a small routine that constructs the name, then take it's hash as
  506. normal, and load it
  507.  
  508. ** How many times have you seen cracks with file names like $0001, $0002??**
  509. ** look out for it in the future, and you'll know why!
  510.  
  511.  
  512. The next step will be to get rid of your big-crunch, and get the files
  513. loading in from disk... ie. Put your disk-loader at $d00000 instead
  514. of the depacker..
  515.  
  516. THEN comes the tricky part, you must find a place to copy your
  517. own loading code into the main game somewhere. The ideal way is to
  518. of course use the area where the original routine was sitting
  519. (watch out for routines that take checksums/check bytes in this
  520. area = good protection against this)
  521. .but this is not always possible..
  522. If you can't put your routine over the original, make sure you find some
  523. area which is DEFINATELY FREE (hehe not so easy hey!)..otherwise
  524. you'll have to release a one-meg game and you've been beaten...
  525. there are two factors here
  526.  +ve is that your disk-loader is really small anyway, only a few
  527.      small bytes (well under 2k anyway)
  528.  -ve is that many programmers purposefully try to eat up all of the
  529.      memory so that you can't fit your routines in there
  530. (I'd like to give Hybris as a bloody good example of this...)
  531.  
  532. OK..Thats it!! You have a main-file in the form of your CRACKSHELL which
  533. sets up the status of the machine and then jumps into the main file,
  534. which has been altered with your own loader, and the other protection
  535. busted out.
  536.  
  537. Put the extra-files onto the final disk! Now put your intro onto the
  538. front of the crack shell, make sure the game is coded to hell to
  539. stop lame crack-stealers from ripping you off, and yeah! nearly forgot..
  540. put your name into the high-score table!!!!!
  541.  
  542. OK,OK Now you've got a hot crack on your hands after those few days work,
  543. so spread the crap out of it, and start on the next one!!!!!!!!!!!!
  544. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  545.  
  546. Here are the lamer signatures!
  547. Don't be a dope, get high on cracking! - Jewels, '64
  548. Cracking is good for you! - The Replicants/Union Demo, ST
  549. I agree - You, Amiga
  550.