PPC Cracking Bible V1.0.2.Pdf
Total Page:16
File Type:pdf, Size:1020Kb
ManiacoMac’s PPC Cracking Bible v1.0.2 • Page : 1 ManiacoMac’s PPC CRACKING BIBLE ***** ALL THE BEST MAC CRACKING TEXTS IN ONE All the knwledge you need to fastly and effectively crack recent Mac PPC softwares Version 1.0.2 Assembled by ManiacoMac ManiacoMac ® 2004 ManiacoMac’s PPC Cracking Bible v1.0.2 • Page : 2 FOREWORDS Welcome Everyone! So you want to learn how to crack Mac softwares ? Well, to be true, this book is your best bet and the place to start looking at. This book is and will be the Mac Cracking Heaven, and also the start point of learning. I guess this book will be the ultimate Mac cracking guide for the newbies , beginners, next generation Mac crackers and even a reference guide to more advanced Mac Crackers. I really hope this work on the subject will help some, this is my own contribution to the Community. It covers about everything from Mac PPC Assembly language learning to the most recent softwares cracking methods use by the most talented crackers. I think I gathered all the best Mac cracking texts in one, to created what I hope will be a must have for the Mac Cracking Community members. It is organized in a logical learning progression, in order to help those nembies who really don't know where to start. This is version 1.0.2 of the book and a lot of improvements are to come soon. A lot of new texts will be added in the futur releases ... and maybe a french version of this book will be released If I'm not too lazy ! All new releases of this book will be uploaded only at some specific places, and the version number and date of release will be mentioned each time. You can also send me some texts you want or think should be added to this book, to make it more complete, the most complete ever. Texts about OS X cracking would be really appreciate, this is a missing part of the Mac Cracking Community and I hope we will be in a position to fix this issue soon. Well I don't know if you can freely distribute this book but I think you should not cause it contains texts from other authors. So let's wait and keep it for your personal use. Have fun with this book and good learning ! I am really glad to share this book with all of you. So STK and let’s Share The Knowledge! ... and Krack Different! Oh I almost forgot ... Many many thanks to ProZaq, The Vassal, Shepherd, ORC, Fluffy, Pablo, iÇ®açk, Orygun, Halo Ghost, Halo Driver, TheShark, Anarchie, Absym, Buck, Xena, Charasi, Cendryom, Akuma, Coldhit, fintler, Mazzie, Postscript, Snapcase, Jaffa, Jakko, Phreak, Mopar, Ahton, Cyborg, Dot, Byte, Observer, Mouto, Svede, Stardust, FireSt0rm, Thoughts, Corsec, Pyrus Malus, KrackerJAG, etc ... just to mention a few, and also many other nicknames for their help, support and more! Also many thanks to many servers admins, sub-admins and sysop I cannot mention here, or rather I do not dare to mention.;-) Let me know if you helped my in some ways and then I forgot to mention you here, and you would like to be mentioned in the futur releases. ManiacoMac ® 2004 For any comments or suggestions about this book [email protected] ManiacoMac is also known as MoM ManiacoMac ® 2004 ManiacoMac’s PPC Cracking Bible v1.0.2 • Page : 3 PowerPC Assembly Language Beginners Guide Chapter 1 What is Machine Code ? And what is Assembly Language? Machine code is the code that your computer actually runs. Processors don't understand English, Swedish, Basic, C or anything else recognizable to humans (if C is?). Only ones and noughts (binary, meaning "two possible states") - machine code is ones and noughts. Luckily, nobody has to program in machine code any more. We use assemblers and compilers, but we do need to know what machine code is. When your computer is running, it continuously gets instructions from memory. These instructions tell the processor what to do now. On a PowerPC based machine, the instructions are made up of thirty two binary digits or "bits". A bit can be in one of two states; either a 1 or a 0. 32 bits together are called a word. The pattern of the word will tell the processor how to execute the instruction. A certain word may add two numbers together, whilst another word could make the processor store a number back in memory, and so on. A program consists of lots of instructions strung together, and of course, some data for the instructions to operate on. Programs can be written in many kinds of different languages, some common ones are BASIC (Beginners All purpose Symbolic Instruction Code), C, and Pascal. These are termed high level languages. High level languages have to translate the terms used by the programmers into machine code. This is fine, except that the high level languages only know a certain way of doing things, and sometimes have to string together significantly long sets of ones and noughts to get the desired end result. What this means in practice is that any compiled language, will only be as good as the compiler. Assembly language on the other hand is a low level language. Each assembly language mnemonic translates directly into a machine code instruction. The difference between a high level language such as C and assembly language is that an intelligent being is doing the compiling. Because a human is writing the code and not a machine, the code can be written in the best way to achieve maximum speed, and use the minimum of memory. For this reason assembly language in the hands of a competent programmer will always be a lot faster than any compiled language. Just a little note here, and this has nothing to do with this guide, but... The acronym TWAIN stands for Technology Without An Interesting Name - I just thought you might not know that and find it "Interesting". Oh well, onwards... What is a Mnemonic? The dictionary defines it as "something to help the memory" - in this case its a word that represents a machine code instruction. The PowerPC family of processors understands about 60 basic instructions, which means the PowerPC assembly language programmer has 60 different mnemonics to remember. Compared to a ManiacoMac ® 2004 ManiacoMac’s PPC Cracking Bible v1.0.2 • Page : 4 high level language, which may have as many as 800 different instructions (BASIC for example), this is a small number to memorize. In practice not all these instructions will be used, and you may find yourself using as few as 10 instructions regularly, so its not difficult to learn. What does a Mnemonic look like? The PowerPC has an instruction to add two numbers together and store the result away. In ones and noughts it may look like 001110010000100001101000000000000 (don't quote me on that!), which is a complete and utter mouthful, so we use the mnemonic "add". We get an assembler totranslate the "add" to the required machine code. Its as simple as that. Some other useful mnemonics include: LI - Load immediate - loads a number into a processor register. STW - Store a word from a processor register into memory LWZ - Load a word from memory into a processor register. Thus, assembly language uses mnemonics to represent machine instructions, or code. Basic Processor Operation The goal of the processor is to take data (the input), perform some form of processing on the data, and then store the data in a useful way (output). To be able to do this, the processor needs temporary storage within itself called registers. The PowerPC family all have two types of registers - integer registers identified as r0 to r31 and floating point registers named f0 to f31. We won't be looking at the floating point registers for a while yet, but they are one of the most powerful aspects of the PowerPC family. The processor can put data into these registers and then use the registers as inputs to calculations or other operations. The result of the operation can then be stored in another register, or one of the input registers. For example, the instruction add r3,r4,r5 adds register 5 to register 4 and stores the result in register 3, whereas add r5,r4,r5 adds the contents of register 5 to register 4 and stores the result back in register 5. To show you how easy it is, examine the following PowerPC assembly language "snippet". do_add: li r3,10 *load register 3 with the number 10 li r4,20 *load register 4 with the number 20 add r5,r4,r3 *add r3 to r4 and store the result in r5 stw r5,sum(rtoc) *store the contents of r5 (i.e. 30)into the memory location *called "sum" blr *end of this piece of code sum: ds.w 1 *define the storage we need for the result. The first thing to notice is the layout. All assembler languages tend to be like this. The doing bits of the instructions (store, add, etc) - the actual instruction, is in the "second column". Technically it is proceeded by white space - either tabs or space characters. This way the assembler knows they are instructions. ManiacoMac ® 2004 ManiacoMac’s PPC Cracking Bible v1.0.2 • Page : 5 So what is the word "do_add:" up against the left hand edge of the page? A Label. Labels mark a position in the code and are also used when we need to define things, such as data.