home *** CD-ROM | disk | FTP | other *** search
Text File | 2000-05-25 | 28.9 KB | 1,026 lines |
- HOW TO CRACK, by +ORC, A TUTORIAL
-
- ---------------------------------------------------------------------------
-
- Lesson 2: tools and tricks of the trade
-
- ---------------------------------------------------------------------------
-
- [INDY.EXE]
-
- --------------------------------------
-
- LOST IN THE DARK CODEWOODS
-
- When you break into a program you end up in portions of code
-
- that are unfamiliar to you. It is also not uncommon for the
-
- breakpoints to occur outside of the confines of the program you
-
- want to crack. Getting your bearings is, in these cases, very
-
- important.
-
- One of the handiest utilities is the memory dump tool -it
-
- tells you where all the device drivers and TSR are loaded, in
-
- which memory locations the program you are cracking dwells, how
-
- much memory is left and what the next program load point is. The
-
- tools you use should report on the following:
-
- - the contents of interrupt vectors
-
- - the state of the BIOS data area, beginning at address 40:0
-
- - internal structures within DOS, such as the MCB chain, the
-
- SFT (System File Table) chain, the chain of installed
-
- device drivers, the PSPs and memory allocations associated
-
- with installed TSRs
-
- - memory allocation statistic from XMS and EMS drivers
-
- When seeking to understand a section of foreign code, you
-
- must be especially careful to seek the real intent of the code.
-
- Consider using a profiler prior to undertaking an analysis of an
-
- unfamiliar program. This will help you by ensuring that you don't
-
- waste time studying sections of the program that aren't even
-
- involved in the protection scheme you are chasing down.
-
- Using a utility that charts a program's calling hierarchy
-
- can give you an important perspective on how your babe conducts
-
- its internal operations.
-
- YOUR DEBUGGER: YOUR FAVOURITE TOOL
-
- First and foremost, your debugger must be designed for use
-
- with resident modules (or must be itself a resident module).
-
- Trying to crack with simplistic [debug.com] is a sure way to get
-
- absolutely nowhere. We recommend Softice.exe from Nu-Mega
-
- technologies (Version 2.6 [S-Ice.exe] has been cracked by MARQUIS
-
- DE SOIREE and its vastly available on the Web). You could also
-
- use [Periscope] or [Codeview] or Borland's Turbodebugger... all
-
- these programs have been boldly cracked and/or distributed and
-
- are now on the Web for free... learn how to use YAHOO and find
-
- them. In emergency cases you could fix some quick crack using
-
- [debug] or [symdeb], but, as said above, most of the time these
-
- older debuggers won't do. I'll nevertheless ALWAYS give the final
-
- crack procedure for [debug.com], in order to permit even lusers
-
- to crack programs.
-
- When you first smell a protection, it can be tempting to
-
- immediately begin your crack using invasive types of techniques.
-
- While there is certainly nothing wrong with this approach,
-
- provided that you are fairly familiar with the protection scheme
-
- used, going in too deep too soon can be a problem when you don't
-
- have a strong hunch. Most of the time you'll end up missing
-
- important details. So first of all sit down and ponder... that's
-
- the zen-way, the only one that really works.
-
- Single-stepping is expensive, not only because of the time
-
- it requires but also because of the amount of detail with which
-
- you must contend. Your immediate goal is to home in on the
-
- protection scheme through a series of successively refined traps,
-
- your broader aim is to get an overview idea of the program's
-
- action... the wise use of breakpoints will condense these
-
- minutiae into an understandable form.
-
- The first step is to try to identify the section of the
-
- program where the protection scheme is snapping.
-
- Once you are able to isolate a certain section of a program,
-
- breakpoints can be used to gather a trace history of the
-
- program's execution. If your debugger sports a backtrace buffer,
-
- logging window, or similar feature, by all means learn how to use
-
- it. The debugger it's your best weapon, you must know all the
-
- possibilities it offers and all the capabilities it possesses.
-
- Having a debugger's display output echoed to a printer is another
-
- possibility.
-
- Using breakpoints is beneficial for two basic reasons: speed
-
- and reduction of detail. Manual single-stepping is invaluable
-
- when you are close to the protection scheme, but too much of it
-
- will bore you to death.
-
- When selecting breakpoint locations and the types of
-
- breakpoint to use, it is important to step back once more, drink
-
- a cool Martini-Wodka (use only Moskovskaja: non-russian Wodkas
-
- are appalling) and ask yourself: "What is this going to tell me?"
-
- and "What else will I need to know once the break occurs?". MOST
-
- IMPORTANT OF ALL: "Is my current cracking approach the simplest
-
- and most direct?", coz you do not want to waste precious cracking
-
- time.
-
- When devising a set of breakpoints it is wise to consider
-
- how "a trail of bread crumbs" can be left. Not allowing for an
-
- execution chronicle from the start can mean having to restart a
-
- cracking session.
-
- Setting breakpoints on certain software interrupt calls is
-
- an excellent way to get an overview of a program's operations.
-
- The INT_21 DOS services interrupt is probably the most universal
-
- useful of these, with BIOS interrupts such as the INT_13 (BIOS
-
- Disk services) and INT_16 (BIOS keyboard services) useful for
-
- specific cracking.
-
- When working with a debugger, evaluative breakpoints are
-
- usually your best shot. To avoid having to deal with a plethora
-
- of calls, you would want to have a debugger capable of being told
-
- to "break on any INT_21 call except where AH == 2C or AH == 0B".
-
- A real understanding of the working of a program is surely
-
- important, but don't overdo it! To reverse-engineer even a small
-
- program can involve many hours of analysis and documentation
-
- work. If you'll not be able to use the zen-cracking techniques
-
- described in this tutorial (sadly not everybody can) pace
-
- yourself and make sure your chair is comfortable: you'll be
-
- sitting for quite a spell.
-
- Much of the work involved in reverse-engineering consist of
-
- chasing down tentacles. In order to understand the operations of
-
- one function, you must understand what happens within each of the
-
- functions it calls- its child functions. To understand these
-
- child functions you must study their children; and so on down the
-
- calling hierarchy tree. Then there is the data. Tracing tentacles
-
- based on a program's calling hierarchy is a directed process.
-
- Each function you encounter is basically a list of other
-
- functions you must reckon with. When it comes to analyzing a
-
- function's interrelationship with the program's data structure,
-
- no such list is provided. You must have instinct, feeling and
-
- luck.
-
- Data analysis requires more of a broad-based inquisition.
-
- For each memory variable you are interested in, you must survey
-
- all functions to determine which ones read and write that
-
- variable. The use of memory conditional breakpoints and of a
-
- disassembler that builds a cross-reference table can make this
-
- task a lot easier. (Use Sourcer! It's a fairly good tool and
-
- version 4.08 of [sr.exe] has been long ago cracked and
-
- distributed on the Web).
-
- ALL SYSTEM CALLS IN ONE LOCATION
-
- Remember that if the program you are cracking was written
-
- in assembler in the first place (very unlikely knowing the
-
- laziness of to_days programmers), system calls are probably made
-
- directly from the functions which need them. But when a program
-
- is developed in a high-level language, it is more likely that
-
- common library functions will be used for many operations
-
- involving system calls. When a program makes all of its INT_21
-
- calls from the same location, you know that this is certainly the
-
- case.
-
- Now, what happens sometimes is that the programmers write
-
- the whole application in a overbloated language like C++, but are
-
- afterwards compelled to "speed up" critical sections of the code
-
- writing them in assembler. And loo! A section where you
-
- repeatedly find assembler crafted patches is precisely the
-
- protection scheme! So you could have a program with all INT_21
-
- calls from the same location but for one or two calls which are
-
- coming out of the section where the morons have "hidden" their
-
- protection strategy. By just "looking" at the dead code of a
-
- program, you should be capable to tell wich parts have been
-
- "added on" in a later phase. They presents themselves as
-
- unevenness and irregularities, especially if you use an utility
-
- that represents graphicallly the code of a program. Protections
-
- are often added on at the end of the development.
-
- Should you determine that the system calls relevant to your
-
- cracking are made from common library functions, all is not lost.
-
- The specific function from which these library calls were made,
-
- the function you are seeking to locate, is executing at some
-
- point in between these calls. Break in with your debugger at the
-
- end of the first system call, just where it is returning to the
-
- point of call. From there, trace through the remainder of the
-
- common library routine until it returns to its caller. In short
-
- order, you should find yourself in the function you need to see.
-
- The trick is to be able to identify it for what it is.
-
- ASCIIZ IN CODE
-
- In the interest of gaining an overall familiarity with the
-
- program you want to crack, it can be enlightening to use a hex
-
- dump utility to examine the message strings contained within the
-
- program's binary modules. If the program happens to load its
-
- message strings from separate files, your search has just been
-
- simplified.
-
- Your debugger's memory-dumping feature is one tool that can
-
- be useful for this type of exploration. You could also construct
-
- a filtering program, which would read a binary file and output
-
- all sequences of bytes that are comprised of displayable
-
- characters and are over a certain minimum length (the best
-
- cracker tools are often the ones you write yourself).
-
- When a protection scheme is marked by the issuance of a
-
- specific message on the screen, you could go into the program and
-
- locate the code that emits this message, and then determine what
-
- triggers it. A good way to start the location process is to see
-
- if a system call is used to display the string. Interrupt INT_21,
-
- INT_10 or INT_29 are usually used to display text messages to the
-
- console.
-
- When the message's display is not a result of one of these
-
- system calls, direct video writing is probably being used. If you
-
- know the screen location used, and if that part of video memory
-
- is not used for anything else at the time (a big if), a memory
-
- write breakpoint could be set on the video buffer address
-
- corresponding to the first character's position. If this won't
-
- work, use the step-over/step-around tracing technique while
-
- watching for the message to appear.
-
- Now you found it: from a disassembled listing, you locate
-
- the address of the message string and then survey the reminder
-
- of the file for any instructions that reference this address.
-
- [Sourcer] can generate labels for specific memory locations and
-
- a cross-reference table showing where these labelled locations
-
- are referenced. Otherwise, load the disassembled listing file
-
- into your editor and use its search capabilities. Manually
-
- searching for such things in a listing will make you old before
-
- your time.
-
- CODE AND DATA
-
- When stepping through code at the assembler level, watch out
-
- for interrupt calls that are followed by data. Sometimes you will
-
- find an interrupt call, typically within the range INT_34 to
-
- INT_3F, where several bytes immediately following the interrupt
-
- instruction will be data rather than code.
-
- Be especially suspicious of this type of code-and-data
-
- mixture when your debugger's disassembly output of the
-
- instructions immediately following an interrupt call doesn't make
-
- sense. Sometimes you can determine the offset of the next true
-
- instruction by inspecting the following code and data. In other
-
- cases, you will have to trace through the interrupt call to see
-
- how it accesses the data following the interrupt call instruction
-
- and how it manipulates the return address on the stack.
-
- HOOKED VECTORS
-
- Seeing what interrupt intercepts already exist within a
-
- system before running the program you want to crack, as well as
-
- what interrupt handlers are established by the target program,
-
- can provide useful clues. For example, if a protection
-
- establishes an INT_09 intercept just before the snapping of a
-
- keyboard verification routine, your range of suspects has just
-
- been narrowed significantly.
-
- To study the interrupt vector activities of an application,
-
- a vector dump map utility is useless. It can't be run while
-
- running the application you want to crack. One solution is to run
-
- the program under a debugger and watch for system calls to INT_21
-
- functions 25h (set interrupt vector) and 35h (get interrupt
-
- vector), but in the event that the program reads and writes
-
- interrupt vectors directly, this method will not give you a
-
- complete picture. Normally you'll use a spy, trace or "step"
-
- utility.
-
- APPLYING A MEMORY WRITE BREAKPOINT TO A SPECIFIC VECTOR OR
-
- TO THE ENTIRE TABLE is another way to deal with this.
-
- Note that some sort of direct vector writing must be
-
- occurring if a vector change is detected between system calls.
-
- If a vector change is detected during a system call but it
-
- isn't function 25h of INT_21, suspect that an IRQ handler may be
-
- effecting the change.
-
- LITTLE TRICKS OF THE TRADE:
-
- * determining interrupt vector addresses ****************
-
- How do you determine the interrupt vector addresses? As
-
- example let's find the address of the INT_21 interrupt vector.
-
- Since the interrupt vector table starts at address 0000:0000
-
- (easy to remember, isn't it?) and there are four bytes per
-
- vector, the basic process is to multiply the interrupt number
-
- four times and use the result at the offset (on segment zero).
-
- 21h + 21h = 42h 42h + 42h = 84h
-
- The int_21 vector is located at address 0000:0084
-
- You could also use a calculator, for instance, the address of
-
- INT_63 is 63h*4=18ch -> 0000:018C
-
-
-
- * address conversion ***************************************
-
- After a painstaking cracking session, you have finally
-
- determined that a byte of memory at address 6049:891C is the
-
- trigger. But when you isolate the offending instruction, you find
-
- that the address it is generating when the protection occur is
-
- different, being 6109:7D1C instead! How can this be?
-
- An 80x86 type CPU, when running in real or VM86 mode, uses
-
- what is known as segment:offset type addressing. One side effect
-
- of this addressing method is that one physical address can be
-
- equivalent to many different segment:offset addresses.
-
- To find the PHYSICAL ADDRESS for a given segment:offset do
-
- the following:
-
- - convert the segment portion of the address to a 1-based number
-
- by multiplying it by 16 (x10)... it's easy: add 0 at the right
-
- end of the number!...
-
- 6049 -> 60490
-
- 6109 -> 61090
-
- now all you have to do is to add this value to the offset value
-
- 60490+891C -> 68DAC
-
- 61090+7D1C -> 68DAC <- Got it?
-
- And the other way round? If you have a physical address, say
-
- 19AC3, and you want to obtain a segment:offset address you must
-
- first of all decide in which segment you want the address... if,
-
- say, you choose segment 16CC, you proceed as follows:
-
- 16CC -> 16CC0
-
- 19AC3-16CC0 = 2E03 (offset)
-
- address for 19AC3 in segment 16CC = 16CC:2E03
-
- TOOLS OF THE TRADE
-
- Before starting this section, for those of you that do not know
-
- anything, here is the ARCHIE way you get all the program that do
-
- EXIST on the planet: e-mail following
-
- 1) (address) archie@archie.univ-rennes1.fr
-
- I use this french archie, but you can get a worldwide list using
-
- the metacommand "servers"
-
- 2) (text) set search sub <- anywhere in string
-
- set maxhits 140 <- (100-1000)
-
- set maxhitspm 15 <- not just 1 file all over
-
- find stepdos <- search e.g. this file
-
- Wait two hours, get your post and ftp the file you wanted (and
-
- YES!, you 'll find also EVERYTHING else for free on the Web).
-
- You could, instead of using archie, also learn how to use YAHOO.
-
- [MEMSCAN.EXE]
-
- One of the most fascinating tools that I have ever seen is
-
- a (very old) program: MEMSCAN.EXE.
-
- This program was originally written in 1988 by Scott A. Mebust,
-
- running in CGA. It's a "visual" utility: it enables you to see
-
- graphically the 1-meg of PC memory in 8 kbyte chunks. It's a
-
- powerful tool in order to locate quickly bit mapped graphics and
-
- other 'objects' in memory, like program data tables, stack areas,
-
- code areas, available RAM, etc. I used this great idea to create
-
- (in C) my own tools: a "dead_programs scanner" and an ameliorate
-
- version of Memscan itself. Looking at the VISUAL STRUCTURE of a
-
- program it's a great help when you'll crack higher levels.
-
- [TRACKMEM.COM]
-
- A very good tool by James W.Birdsall, tracks memory usage
-
- of programs (EMS, XMS, conventional).
-
- [SCANCODE.COM]
-
- "THE" scancode lister, by the code_masters from clockwork
-
- software. The must utility for crackers that do not learn all
-
- scancodes by heart.
-
- [MAP.EXE]
-
- Actually "MAP2", THE memory mapper from the code_masters at
-
- clockwork software. It's a very good tool and an interesting one
-
- too, coz you get it with the "Nigel" nag screens. They are not
-
- difficult to remove (a "passletter" protection scheme, you'll
-
- learn how to find and remove it from [Map.exe] in LESSON 3.2).
-
- [FILEDUMP.COM] [HEXDUMP.COM] [TDUMP.EXE] [DUMP.EXE]
-
- There are hundred of file dump utilities, coz file dumping
-
- is one of the first exercise they learn you at C-school.
-
- Hexdump.com is 558 bytes long, Tdump.exe 120.704, pick the one
-
- you like better or write your own (even better). Filedump.com,
-
- by Daniel M.O'Brien, 1046 bytes long, it's nice.
-
- [SPRAY.COM]
-
- That's a good crack utility indeed! This 1989 program by
-
- Daniel M.O'Brien gives you a "post-mortem" picture of your
-
- memory. You redirect it to <myfile> and study it at ease. It's
-
- difficult to say how many hours of cracking it did spare me (you
-
- should study the program, only 252 bytes long, and will have to
-
- modify it a bit, coz it's pretty primitive, in the original
-
- version, for instance, the redirection to the printer works only
-
- if there is NO SPACE between "spray" and ">").
-
- [VEXE.EXE]
-
- A good EXE files analyzer, useful for windows programs too
-
- (see --> LESSON 7). Some of its functions are present in
-
- TDUMP.EXE too. This 1991 program by S.Krupa it's sometimes very
-
- useful.
-
- [SNOOP UTILITIES --> KGB.EXE INTMON.EXE INTRSPY.EXE etc...]
-
- [TRACE UTILITIES --> TRACE.EXE STEPDOS.EXE etc...]
-
- A must to study the "calling hierarchy" of an unknown
-
- program. KGB.EXE, a 1992 program by Petr HorĂ k could easily be
-
- the best one, and comes with source code(!). I'll teach you how
-
- to crack without any of them (you do not need them if you zen-
-
- crack), but they can nevertheless be very useful in some
-
- situations. Stepdos.exe, by Mike Parker, is a excellent program:
-
- a pleasure to crack in order to use it for slightly different
-
- purposes :=)
-
-
-
- [SOURCERING UTILITIES]
-
- SR.EXE can be used for sourcering unknown programs. It's a
-
- fairly good sourcering tool. Version 4.08 has been cracked (it's
-
- a "ORIGINAL NUMBERCODE" protected program) and distributed on the
-
- Web, so you should easily find it. This said, you should NEVER
-
- use such a brute force approach, unless you are really desperate:
-
- I'll teach you how to crack without sourcering (you don't need
-
- to sourcer if you zen-crack).
-
-
-
- [HEXEDITORS]
-
- Every idiot has written at least one hexeditor, and you can find
-
- very bad tools everywhere (the SIMTEL collection, on the Web,
-
- lists at least 35 hexeditors). I suggest you write your own and
-
- contribute to the flood, or (better) get PSEDIT.EXE, a good 1990
-
- program by Gary C. Crider (Parity Solutions, 1903 Pavia Ct.
-
- Arlington, TX 76006... sometimes even americans can write good
-
- programs). If you do use it (as you should) disapt the nag screen
-
- as small exercise in cracking.
-
- [DEBUGGER]
-
- Your best friend in cracking, your weapon, your hidecloak...
-
- I suggest [Softice.exe] from Nu-Mega technologies (Version 2.6
-
- has been cracked by MARQUIS DE SOIREE and its vastly available
-
- on the Web). You could also use [Periscope] or [Codeview] or
-
- Borland's Turbodebugger... all these programs have been boldly
-
- cracked and/or distributed and are now on the Web for free...
-
- learn how to use ARCHIE and YAHOO in order to find them. Your
-
- debugger is the only tool you 'll REALLY need, believe me. So
-
- choose your weapon wisely and learn how to use backtrace ranges
-
- and (FOREMOST!) breakpoint on user written qualifications
-
- routines. You 'll be able to crack almost EVERYTHING using these
-
- features in the right way.
-
- You should get all the programs mentioned above (all the
-
- programs that EXIST for that matter) for free on the Web. Use
-
- them, but also modify them recklessly! REMEMBER THAT YOU ARE
-
- (GOING TO BE) A CRACKER! The first programs you should crack and
-
- modify are therefore your very tools! So steal the code of the
-
- best tools you find! Snatch the best routines and change them for
-
- the better! That's the whole point in cracking: a mission to
-
- IMPROVE the best accomplishments of humanity's genius :=)
-
- HOW TO CRACK, ZEN-CRACKING
-
- You 'll learn, beginning with next lesson, how to crack
-
- systematically the different protection schemes: paper & password
-
- protections, time protections, access protections. At the end of
-
- the "methodolocical" part, you'll be able to deprotect programs,
-
- but you still wont be a cracker. In order to crack higher you
-
- must use what I call (lacking a better definition) "zen-
-
- cracking". I 'll give you right now an example of this, so that
-
- you know what I'm talking about, but -unless you are already
-
- capable- you'll have to finish this tutorial part for "normal"
-
- cracking before attempting this techniques. Let's zen-crack
-
- together a password protection scheme (aka "paper protection",
-
- coz you need the original manual of the program in order to
-
- answer). This protection is based on the typing, at the nag
-
- screen, of the correct sequence of numbers. Our example is a game
-
- for the reasons explained in lesson 1, but you 'll find the SAME
-
- protection scheme in the access protection procedure of some old
-
- Tapestry networks... so do not frown upon games protections.
-
- INDIANAPOLIS 500, Papyrus software & Electronic Arts, 1989
-
- It's a rather widespread program, you should therefore find it
-
- pretty easily. The nag screen asks for data based on the
-
- historical performances of race cars... that means that the
-
- answers will consist in two to three digits.
-
- Now, the normal way to crack such a program (described in
-
- -> lesson 3.1) embodyes following steps:
-
- - snap save program memory areas before typing your answer
-
- - snap compare after typing, say, "666"
-
- - search for the sequence 36,36,36 (i.e. 666)
-
- - breakpoint on memory range for reading
-
- - look at the program part fetching your data
-
- - find the snap procedure
-
- - disable it.
-
- The above crack it's relatively quick and should be most of
-
- the time fairly effective, but there is a better way: the "zen
-
- way", the only one that can really enable you to crack high
-
- protection schemes.
-
- - Run the program and break in at the nag screen
-
- - Answer consist of 2-3 digits? Search for "AC" (i.e. the
-
- instruction LODSB, load digit of answer in AL) in the area 500
-
- bytes BEFORE and 500 bytes AFTER your position. You'll get some
-
- locations. (In the case of INDY 500 you get 6 such locations).
-
- - "feel" the locations (that's the tricky part).
-
- - OK, you already made it! Here is the protection strategy:
-
- 8BBF28A5 MOV DI,[BX+A528]<-- DI points to coded data area
-
- :compare_loop
-
- AC LODSB <-- load first digit of answer in AL
-
- B4FF MOV AH,FF <-- load mask in AH
-
- 2A25 SUB AH,[DI] <-- sub coded data from mask and get
-
- real answer
-
- 47 INC DI <-- ready to get next coded data
-
- 3AC4 CMP AL,AH <-- user answer = real answer ?
-
- 751A JNZ beggar_off_coz_false_answer
-
- 0AC0 OR AL,AL <-- more numbers?
-
- 75F2 JNZ compare_loop
-
- 59 POP CX <-- all OK, go on, nice guy
-
- ...
-
- And if the protection scheme had been more far away? And if you
-
- cannot "feel" the right one? And if my grandma had wheels? You'll
-
- learn it, believe me.
-
- Now let's quickly crack this crap.
-
- ------------------------------------------------
-
- CRACKING INDY.EXE (by +ORC, January 1996)
-
- ren indy.exe indy.ded
-
- symdeb indy.ded
-
- - s (cs+0000):0 Lffff B4 FF 2A 25 47 3A C4 75 1A
-
- xxxx:yyyy <-- this is the answer of the debugger
-
- - s (cs+1000):0 Lffff B4 FF 2A 25 47 3A C4 75 1A
-
- (nothing, but you must be sure there isn't a mirror)
-
- - e xxxx:yyyy+8 00 <-- "JNZ 1A ahead" changes to "JNZ 0"
-
- - w
-
- - q
-
- ren indy.ded indy.exe
-
- -------------------------------------------------
-
- Cracked: you just changed the JNZ beggar_off instruction in a JNZ
-
- go_ahead_anyway. Nice, isnt'it?
-
- WHY WE CRACK
-
- Strange as it may seem, the reasons for cracking are very
-
- important for the success of our task. We (at least we old
-
- crackers) crack AGAINST society, and OPPOSING laws and
-
- conventions. We usually DO NOT crack for money or for other
-
- "commercial" reasons (just sometimes, and we are expensive: I
-
- have plenty of money already and my services are VERY expensive
-
- if you need an aimed deprotection). But in general we don't care
-
- much for money and -as you can see- I am giving away the basis
-
- of what I know for free with this tutorial. The programs we crack
-
- should be made free for everybody, even if we spent some of our
-
- time deprotecting them. We could not care less of the commercial
-
- value of a given program, not to mention the holy work of the
-
- ethical programmers... we program ourselves, but only because we
-
- LIKE it... if somebody does something only in order to gain
-
- money, he does not deserve anything. It's the mind challenge that
-
- counts, NEVER the profit! (Even if you can make good use of the
-
- cracked programs and even if -as I said- there is at times a
-
- personal profit).
-
- This is an indispensable attitude! Only a non-mercantile
-
- mind can leap forward to the "satori" knowledge that you
-
- desperately need if you want to crack quickly and elegantly huge
-
- iperbloated monstruosities that somebody else wrote and
-
- protected, or if you want to gain access to some hidden
-
- information, data that you would like to snoop but that somebody
-
- declared "off limits", coz a stupid government, or useless
-
- industry sector, or money oriented programmer or dirty lobby of
-
- interest decided it.
-
- If you do accept the society where we are compelled to live,
-
- its awfully egoistic way of life and its dirty "profit" values,
-
- you may eventually learn how to disable some simple protections,
-
- but you'll never be able to crack in the "right" way. You must
-
- learn to despise money, governments, televisions, trends,
-
- opinion-makers, public opinion, newspapers and all this
-
- preposterous, asinine shit if you want to grasp the noble art,
-
- coz in order to be emphatic with the code you must be free from
-
- all trivial and petty conventions, strange as it may sound. So
-
- you better take a good look around you... you'll find plenty of
-
- reasons to hate society and act against it, plenty of sparks to
-
- crackle programs in the right way... Hope all this did not sound
-
- too cretin.
-
- Well, that's it for this lesson, reader. Not all lessons of my
-
- tutorial are on the Web.
-
- You 'll obtain the missing lessons IF AND ONLY IF you mail
-
- me back (via anon.penet.fi) with some tricks of the trade I may
-
- not know that YOU discovered. Mostly I'll actually know them
-
- already, but if they are really new you'll be given full credit,
-
- and even if they are not, should I judge that you "rediscovered"
-
- them with your work, or that you actually did good work on them,
-
- I'll send you the remaining lessons nevertheless. Your
-
- suggestions and critics on the whole crap I wrote are also
-
- welcomed.
-
- E-mail +ORC
-
- +ORC an526164@anon.penet.fi
-