home *** CD-ROM | disk | FTP | other *** search
- HOW TO CRACK, by +ORC, A TUTORIAL
-
- ---------------------------------------------------------------------------
-
- Lesson 8.2: How to crack Windows, a deepr approach
-
- ---------------------------------------------------------------------------
-
- [SNAP95] [WINZIP] [WINCAT]
-
- --------------------------------------
-
- SPECIAL NOTE: Please excuse the somehow "unshaven"
-
- character of the windows lessons... I'm cracking the
-
- newest Windows '95 applications right now, therefore
-
- at times I had to add "on the fly" some corrections to
-
- the older Windows 3.1 and Windows NT findings.
-
- "homines, dum docent, discunt".
-
- ---------------------------------------------------------
-
- -> 1st THING TO REMEMBER
-
- If you thought that DOS was a mess, please notice that windows
-
- 3.1 is a ghastly chaos, and windows 95 a gruesome nightmare of
-
- ill-cooked spaghetti code. Old Basic "GOTO" abominations were
-
- quite elegant in comparison with this concoction... One thing is
-
- sure: This OS will not last... it's way too messy organised,
-
- impossible to consolidate, slow and neurotic (but I must warn
-
- you... I thought exactly the same things about DOS in 1981).
-
- The most striking thing about windows 95 is that it is neither
-
- meat not fish: neither 16 nor 32... you could call it a "24 bit"
-
- operating system.
-
- We'll never damage Microsoft interests enough to compensate for
-
- this moronic situation... where you have to wait three minutes
-
- to get on screen a wordprocessor that older OS (and even old DOS)
-
- kick up in 5 seconds. I decide therefore, hic et nunc, to add an
-
- ADDENDUM to this tutorial: Addendum 1 will be dedicated to teach
-
- everybody how to crack ALL Microsoft programs that do exist on
-
- this planet. I'll write it this sommer and give it away between
-
- the "allowed" lessons.
-
- Anyway you can rely on good WINICE to crack everything, you'll
-
- find it on the web for free, I use version 1.95, cracked by [The
-
- Lexicon] (do not bother me for Warez, learn how to use the search
-
- engines on the web and fish them out yourself). Learn how to use
-
- this tool... read the whole manual! Resist the temptation to
-
- crack immediatly everything in sight... you 'll regret pretty
-
- soon that you did not wanted to learn how to use it properly.
-
- A little tip: as Winice is intended more for software developers
-
- than for crackers, we have to adapt it a little to our purposes,
-
- in order to make it even more effective: a good idea is to have
-
- in the *.DAT initialization file following lines:
-
- INIT = "CODE ON; watchd es:di; watchd ds:si;"
-
- TRA = 92
-
- This way you'll always have the hexadecimal notation on, two very
-
- useful watch windows for passwords deprotection and enough buffer
-
- for your traces.
-
- WINDOWS 3.1. basic cracking: [ALGEBRAIC PROTECTIONS]
-
- The most used windows protections are "registration codes",
-
- these must follow a special pattern: have a "-" or a "+" in a
-
- predetermined position, have a particular number in particular
-
- position... and so on.
-
- For the program [SHEZ], for instance, the pattern is to have a
-
- 14 bytes long alphanumeric sequence containing CDCE1357 in the
-
- first 8 bytes.
-
- The second level of protection is to "connect" such a
-
- pattern to the alphanumeric contents of the NAME of the user...
-
- every user name will give a different "access key". This is the
-
- most commonly used system.
-
- As most of these protections have a "-" inside the answering
-
- code, you do not need to go through the normal cracking procedure
-
- (described in the next lesson):
-
- * load WINICE
-
- * hwnd [name_of_the_crackanda_module]
-
- * choose the window Handle of the snap, i.e, the exact
-
- "FIELD" where the code number input arrives... say 091C(2)
-
- * BMSG 091C WM_GETTEXT
-
- * Run anew
-
- * Look at the memory location(s)
-
- * Do the same for the "Username" input FIELD. (Sometimes
-
- linked, sometimes not, does not change much, though)
-
- * BPR (eventually with TRACE) on the memory locations (these
-
- will be most of the time FOUR: two NUMBERCODES and two
-
- USERNAMES). The two "mirrored" ones are the most important
-
- for your crack. At times there will be a "5th" location,
-
- where the algebraic play will go on...
-
- * Look at the code that performs algebraic manipulations on
-
- these locations and understand what it does...
-
- * Disable the routine or jump over it, or reverse it, or
-
- defeat it with your own code... there are thousand
-
- possibilities...
-
- * Reassemble everything.
-
- Uff... quite a long cracking work just to crack some miserable
-
- program... isn'there a quicker way? OF COURSE THERE IS! Actually
-
- there are quite a lot of them (see also the crack of Wincat Pro
-
- below): Look at the following code (taken from SNAP32, a screen
-
- capture utility for Windows 95, that uses a pretty recent
-
- protection scheme):
-
- XOR EBX,EBX ; make sure EBX is zeroed
-
- MOV BL, [ESI] ; load input char in BL
-
- INC ESI ; point at the next character
-
- MOV EDI,EBX ; save the input character in EDI
-
- CMP EBX,+2D ; input char is a "-" ?
-
- JZ ok_it's_a_+_or_a_-
-
- CMP EBX,+2B ; input char is a "+" ?
-
- JNZ Jesus_it's_neither_a_minus_nor_a_plus_let's_check_it
-
- :ok_it's_a_+_or_a_-
-
- XOR EBX,EBX ; EBX is zeroed
-
- MOV BL,[ESI] ; recharge BL
-
- INC ESI ; point to next char (do not check - or +)
-
- :Jesus_it's_neither_a_minus_nor_a_plus_let's_check_it
-
- XOR EBP,EBP ; zero EBP
-
- CMP DWORD PTR [boguschecker], +01
-
- ...
-
- even if you did not read all my precedent lessons, you do not
-
- need much more explications... this is a part of the algebraic
-
- check_procedure inside the SNAP32 module... you could also get
-
- here through the usual
-
- USER!BOZOSLIVEHERE
-
- KERNEL!HMEMCPY
-
- USER!GLOBALGETATOMNAME
-
- Windows wretched and detestable APIs used for copy protections,
-
- as usual with WINICE cracking, and as described elsewhere in my
-
- tutorial.
-
- The above code is the part of the routine that checks for the
-
- presence of a "+" or a "-" inside the registration number (many
-
- protections scheme requires them at a given position, other need
-
- to jump over them).
-
- Now sit down, make yourself comfortable and sip a good Martini-
-
- Wodka (invariably very useful in order to crack... but be aware
-
- that only Moskowskaia russian Wodka and a correct "Tumball" glass
-
- will do, do not forget the lemon)... what does this "-" stuff
-
- mean for us little crackers?
-
- It means that we can search directly for the CMP EBX,+2B
-
- sequence inside any file protected with these schemes... and
-
- we'll land smack in the middle of the protection scheme! That's
-
- amazing... but you will never underrate enough the commercial
-
- programmers... the only really amazing thing is how simpleton the
-
- protectionists are! You don't believe me? Try it... you 'll get
-
- your crack at least 4 out of 5 times.
-
- Yes I know, to find this code is not yet to crack it... but for
-
- this kind of copy protection (that's the reason it is so
-
- widespread) there is no single solution... each makes a slightly
-
- different algebraic manipulation of the alphanumeric and of the
-
- numeric data. It's up to you to crack the various schemes... here
-
- you can only learn how to find them and circumvene them. I'll not
-
- give you therefore a "debug" crack solution. You'll find it
-
- yourself using my indications (see the crack of the Wincat Pro
-
- program below).
-
- WHERE ARE THE CODES? WHERE ARE THE MODIFIED FILES? WHERE DO THE
-
- PROTECTIONS KEEP COUNT OF THE PASSING DAYS?
-
- Most of the time the protection schemes use their own *.ini files
-
- in the c:\WINDOWS directory for registration purposes... at time
-
- they even use the "garbage sammler" win.ini file. Let's take as
-
- example WINZIP (versions 5 and 5.5), a very widespread program,
-
- you'll surely have one shareware copy of it somewhere between
-
- your files.
-
- In theory, winzip should be registered per post, in order to
-
- get a "NEW" copy of it, a "registered" copy.
-
- This scares most newby crackers, since if the copy you have
-
- it's not full, there is no way to crack it and make it work,
-
- unless you get the REAL stuff. The youngest among us do not
-
- realize that the production of a real "downsized" demo copy is
-
- a very expensive nightmare for the money-infatuated commercial
-
- programmers, and that therefore almost nobody does it really...
-
- nearly all "demos" and "trywares" are therefore CRIPPLED COMPLETE
-
- PROGRAMS, and not "downsized" demos, independently of what the
-
- programmers and the protectionists have written inside them.
-
- Back to Winzip... all you need, to crack winzip, is to add a
-
- few lines inside the win.ini file, under the heading [WinZip],
-
- that has already been created with the demo version, before the
-
- line with "version=5.0".
-
- I will not help you any further with this... I'll leave it to
-
- you to experiment with the correct sequences... inside win.ini
-
- you must have following sequence (these are only template to
-
- substitute for your tries inside WINICE... you'll get it, believe
-
- me):
-
- [WinZip]
-
- name=Azert Qwerty
-
- sn=########
-
- version=5.5
-
- The *important* thing is that this means that you DO NOT NEED
-
- to have a "new registered version" shipped to you in order to
-
- make it work, as the protectionist sellers would like you to
-
- believe. The same applies most of the time... never believe what
-
- you read in the read.me or in the registration files...
-
- This brings me to a broader question: NEVER believe the
-
- information they give you... never believe what television and/or
-
- newspapers tell you... you can be sure that the only reason they
-
- are notifying you something is to hinder you to read or
-
- understand something else... this stupid_slaves_society can only
-
- subsist if nobody thinks... if you are really interested in what
-
- is going on, real information can be gathered, but surely not
-
- through the "conventional" newspapers and/or news_agencies (and
-
- definitely NEVER through television, that's really only for the
-
- stupid slaves)... yes, some bit of information can be
-
- (laboriously) gathered... it's a cracking work, though.
-
- HOW TO CRACK INFORMATION [WHERE WHAT]
-
- * INTERNET
-
- In the middle of the hugest junk collection of the planet, some
-
- real information can be laboriously gathered if you do learn how
-
- to use well the search engines (or if you do build your ones...
-
- my spiders are doing most of the work for me... get your robots
-
- templates from "Harvest" or "Verify" and start your "spider
-
- building" activity beginning from Martijn Koster's page). As
-
- usual in our society, in the Internet the real point is exactly
-
- the same point you'll have to confront all your life long: HOW
-
- TO THROW AWAY TONS OF JUNK, HOW TO SECLUDE MYRIADS OF USELESS
-
- INFORMATION and HOW TO FISH RARE USEFUL INFORMATION, a very
-
- difficult art to learn per se. Internet offers some information,
-
- though, mainly BECAUSE it's (still) unregulated. You want a
-
- proof? You are reading it.
-
- * SOME (RARE) NEWSPAPERS.
-
- The newspaper of the real enemies, the economic powers that
-
- rule this slaves world, are paradoxically most of the time the
-
- only ones worth studying... somewhere even the real rulers have
-
- to pass each other some bits of real information. The "Neue
-
- Zuercher Zeitung", a newspaper of the Swiss industrials from
-
- Zuerich, is possibly the best "not_conformist trend analyzer"
-
- around that you can easily find (even on the web). These
-
- swissuckers do not give a shit for ideology, nor preconcerted
-
- petty ideas, the only thing they really want is to sell
-
- everywhere their ubiquitous watches and their chocolates... in
-
- order to do it, a land like Switzerland, with very high salaries
-
- and a good (and expensive) social system, must use something
-
- brilliant... they found it: a clear vision of the world... as a
-
- consequence this newspaper is very often "against" the trend of
-
- all the other medias in the world, the ones that are used only
-
- in order to tame the slaves... If the only language you know is
-
- english (poor guy) you could try your luck with the weekly
-
- "Economist"... you'll have to work a lot with it, coz it has been
-
- tailored for the "new riches" of the Tatcher disaster, but you
-
- can (at times) fish something out of it... they do a lot of
-
- idiotic propaganda, but are nevertheless compelled to write some
-
- truth. American newspapers (at least the ones you can get here
-
- in Europe) are absolute shit... one wonders where the hell do the
-
- americans hyde the real information.
-
- On the "non-capitalistic" side of information there is a
-
- spanish newspaper "El Pais" that seems to know about what's going
-
- on in South America, but it's so full of useless propaganda about
-
- irrelevant Spanish politics that it's not really worth reading.
-
- The monthly "Le Monde diplomatique" offers something too... this
-
- one exaggerates a little on the pauperistic "third world" side,
-
- but has a lot of useful information. See what you can do with all
-
- this information (or disinformation?)
-
- [BELIEVE THE COUNTRARY]
-
- Another good rule of thumb in choosing your medias is the
-
- following... if all medias around you assure, for instance, that
-
- "the Serbians are evil"... the only logical consequence is that
-
- the Serbians are not so evil at all and that "the Croats" or some
-
- other Yugoslavian shits are the real culprits. This does not mean
-
- at all that the Serbians are good, I warn you, it means only what
-
- I say: something is surely hidden behind the concerted propaganda
-
- you hear, the best reaction is to exaggerate in the other
-
- direction and believe the few bit of information that do say the
-
- countrary of the trend. This rule of thumb may be puerile, but
-
- it works somehow most of the time... if somewhere everybody
-
- writes that the commies are bad then THERE the commies must not
-
- be so bad at all and, conversely, if everybody in another place
-
- writes that the commies are all good and nice and perfect (like
-
- the Soviet propaganda did) then THERE the commies are surely not
-
- so good... it's a matter of perspective, much depends on where
-
- you are, i.e. whose interests are really at stake. There is NEVER
-
- real information in this society, only propaganda... if you still
-
- do not believe me do yourself a little experiment... just read
-
- the media description of a past event (say the Vietnam war) as
-
- written AT THE MOMENT of the event and (say) as described 10
-
- years later. You'll quickly realize how untrustworthy all
-
- newspapers and medias are.
-
- * SEMIOTICS You'll have to study it (as soon as you can) to
-
- interpret what they let you believe, in order to get your
-
- bearings. A passing knowledge of ancient RHETORIC can help quite
-
- a lot. Rhetoric is the "Softice" debugger you need to read
-
- through the propaganda medias: concentrate on Periphrasis,
-
- Synecdoche, Antonomasia, Emphasis, Litotes and Hyperbole at the
-
- beginning... you'll later crack higher with Annominatio,
-
- Polyptoton, Isocolon and all the other lovely "figurae
-
- sententiae".
-
- Enough, back to software cracking.
-
- HOW A REGISTRATION CODE WORKS [WINCAT]
-
- Let's take as an example for the next crack, a Username-
-
- algebraic registration code, WINCAT Pro, version 3.4., a 1994
-
- shareware program by Mart Heubel. It's a good program, pretty
-
- useful to catalogue the millions of files that you have on all
-
- your cd-roms (and to find them when you need them).
-
- The kind of protection Wincat Pro uses is the most utilized
-
- around: the username string is manipulated with particular
-
- algorithms, and the registration key will be made "ad hoc" and
-
- depends on the name_string. It's a protection incredibly easy to
-
- crack when you learn how the relevant procedures work.
-
- [WINCAT Pro] is a good choice for cracking studies, coz you
-
- can register "over your registration" one thousand times, and you
-
- can herefore try for this crack different user_names to see all
-
- the algebrical correspondences you may need to understand the
-
- protection code.
-
- In this program, when you select the option "register", you
-
- get a window where you can input your name and your registration
-
- number (that's what you would get, emailed, after registering
-
- your copy). If you load winice and do your routinely hwnd to
-
- individuate the nag window, and then breakpoint on the
-
- appropriate memory ranges you'll peep in the working of the whole
-
- bazaar (this is completely useless in order to crack these
-
- schemes, but it'll teach you a lot for higher cracking, so you
-
- better do it also with two or three other programs, even if it
-
- is a little boring): a series of routines act on the input (the
-
- name) of the user: the User_name_string (usn). First of all the
-
- usn_length will be calculated (with a REPNZ SCASB and a following
-
- STOSB). Then various routines store and move in memory the usn
-
- and the registration_number (rn) and their relative lengths. In
-
- order to compare their lengths and to check the correct
-
- alphanumeric correspondence between usn and rn, the program first
-
- uppercases the usn and strips all eventual spaces away.
-
- Here the relevant code (when you see an instruction like
-
- SUB AL,20 you should immediately realize that you are in a
-
- uppercasing routine, which is important for us, since these are
-
- mostly used for password comparisons)... here the relevant Winice
-
- unassemble and my comments:
-
- 253F:00000260 AC LODSB <- get the usn chars
-
- 253F:00000261 08C0 OR AL,AL <- check if zero
-
- 253F:00000263 740F JZ 0274 <- 0: so usn finished
-
- 253F:00000265 3C61 CMP AL,61 <- x61 is "a", man
-
- 253F:00000267 72F7 JB 0260 <- not a lower, so loop
-
- 253F:00000269 3C7A CMP AL,7A <- x7A is "z", what else?
-
- 253F:0000026B 77F3 JA 0260 <- not a lower, so loop
-
- 253F:0000026D 2C20 SUB AL,20 <- upper it if it's lower
-
- 253F:0000026F 8844FF MOV [SI-01],AL<- and hyde it away
-
- 253F:00000272 EBEC JMP 0260 <- loop to next char
-
- 253F:00000274 93 XCHG AX,BX
-
- ...
-
- The instruction MOV [SI-01],AL that you see here is important
-
- at times, coz it points to the location of the "pre-digested"
-
- usn, i.e. the usn formatted as it should be for the number
-
- comparison that will happen later. In some more complicated
-
- protection schemes the reasoning behind this formatting is the
-
- following: "Stupid cracker will never get the relation algorhitm
-
- usn <-> rn, coz he does not know that usn AND rn are slightly
-
- changed before comparing, ah ah... no direct guessing is
-
- possible". Here is only "polishing": you have to "polish" a
-
- string before comparing it in order to concede some mistakes to
-
- the legitimate user (too many spaces in the name, upper-lower
-
- case mismatch, foreign accents in the name etc.) You just need
-
- to know, for now, that this checking is usually still 5 or 6
-
- calls ahead of the real checking (it's what we call a "green
-
- light").
-
- You should in general realize that the real checking of the
-
- algebrical correspondence follows after a whole series of memory
-
- operations, i.e.: cancelling (and erasing) the previous (if ever)
-
- attempts; reduplicating the usn and the rn somewhere else in
-
- memory; double checking the string lengths (and saving all these
-
- values somewhere... be particularly attentive when you meet stack
-
- pointers (for instance [BP+05]): most of the programs you'll find
-
- have been written in C (what else?). C uses the stack (SS:SP) to
-
- pass parameters or to create local variables for his procedures.
-
- The passwords, in particular, are most of the time compared to
-
- data contained within the stack. If inside a protection a BP
-
- register points to the stack you have most of the time fished
-
- something... remember it pupils: it will spare you hours of
-
- useless cracking inside irrelevant routines. Back to our CATWIN:
-
- another little check is about the "minimal" length allowed for
-
- a user name, in our babe, for instance, the usn must have at
-
- least 6 chars:
-
- 230F:00003483 3D0600 CMP AX,0006
-
- 230F:00003486 730F JAE 3497 <- go to nice_name
-
- :too_short
-
- 230F:00003488 BF9245 MOV DI,4592 <- no good: short
-
- After a lot of other winicing you'll finally come across
-
- following section of the code:
-
- 2467:00000CA3 B90100 MOV CX,0001
-
- 2467:00000CA6 03F1 ADD SI,CX
-
- 2467:00000CA8 2BC1 SUB AX,CX
-
- 2467:00000CAA 7213 JB 0CBF
-
- 2467:00000CAC 40 INC AX
-
- 2467:00000CAD 368B4F04 MOV CX,SS:[BX+04] <- here
-
- 2467:00000CB1 0BC9 0R CX,CX
-
- 2467:00000CB3 7D02 JGE 0CB7
-
- 2467:00000CB5 33C9 XOR CX,CX
-
- 2467:00000CB7 3BC1 CMP AX,CX
-
- 2467:00000CB9 7606 JBE 0CC1
-
- 2467:00000CBB 8BC1 MOV AX,CX
-
- 2467:00000CBD EB02 JMP 0CC1
-
- 2467:00000CBF 33C0 XOR AX,AX
-
- 2467:00000CC1 AA STOSB <- and here
-
- 2467:00000CC2 8BC8 MOV CX,AX
-
- 2467:00000CC4 F3A4 REPZ MOVSB <- and here!
-
- 2467:00000CC6 8EDA MOV DS,DX
-
- 2467:00000CC8 FC RETF 0008
-
- This is obviously the last part of the checking routine
-
- (I'll not delve here with the mathematical tampering of it, if
-
- you want to check its workings, by all means, go ahead, it's
-
- quite interesting, albeit such study is NOT necessary to crack
-
- these schemes). The important lines are obviously the MOV
-
- CX,SS:[BX+04], the STOSB and the REPZ MOVSB (as usual in password
-
- protection schemes, you do remember lesson 3, don't you?).
-
- You should be enough crack-able :=) by now (if you have read
-
- all the precedent lessons of my tutorial), to find out easily,
-
- with these hints, how the working of the protection goes and
-
- where dwells in memory the ECHO of the correct rn (passkey) that
-
- matches the name you typed in. Remember that in these kind of
-
- cracks the ECHO is present somewhere (90% of the cases). There
-
- are obviously one thousand way to find such ECHOs directly,
-
- without going through the verificayions routines... for instance
-
- you could also find them with a couple of well placed
-
- snap_compares, it's a "5 minutes" cracking, once you get the
-
- working of it. I leave you to find, as interesting exercise, the
-
- routine that checks for a "-" inside the rn, a very common
-
- protection element.
-
- In order to help you understand the working of the protection
-
- code in [Wincat Pro] I'll give you another hint, though: if you
-
- type "+ORC+ORC+ORC" as usn, you'll have to type 38108-37864 as
-
- rn, if you usn as usn "+ORC+ORC" then the relative rn will be
-
- 14055-87593. But these are my personal cracks... I have offered
-
- this information only to let you better explore the mathematical
-
- tampering of this specific program... you'll better see the
-
- snapping mechanism trying them out (going through the routines
-
- inside Winice) alternatively with a correct and with a false
-
- password. Do not crack Wincat with my combination! If you use a
-
- different usn than your own name to crack a program you only show
-
- that you are a miserable lamer... no better than the lamers that
-
- believe to "crack" software using huge lists of serial numbers...
-
- that is really software that they have stolen (Yeah: stolen, not
-
- cracked). You should crack your programs, not steal them...
-
- "Warez_kids" and "serial#_aficionados" are only useless zombies.
-
- I bomb them as soon as I spot them. YOU ARE (gonna be) A CRACKER!
-
- It makes a lot of a difference, believe me.
-
- 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.
-
- "If you give a man a crack he'll be hungry again
-
- tomorrow, but if you teach him how to crack, he'll
-
- never be hungry again"
-
- E-mail +ORC
-
- an526164@anon.penet.fi
-