Tuesday, January 31, 2006

My First Article(!!) on Reverse-Engineering

Here is my First Article on Reverse-Engineering. I am going to write how I started with reverse-engineering as a complete newbie (u will come across this word a lot, if u venture out to reverse-engineering, it just means novice)

I assume that the reader have basic programming knowledge, and know basic Assembly language (just a little, for starters).

Ok first the Disclaimer: I am not responsible if you use whatever you learn for illegal purpose.

Now to get started u have to know some basic terminologies used in the reversing arena..
Note that here after u must think in Hex values, because all the data or the code we will reverse are going to be in HEX, because we are going to work with executables and we don’t have the source code for the target program.

Crackmes- A program, normally a username/serial type, which u are going to crack. The program may employ different methods to generate a serial for the given user name, u’r goal is to find the algorithm which is used to generate the serial, and write u’r own key generator.

Key Generator- After u reverse the serial generating algorithm ,u re-write the algorithm or rip it from the target program and write a program which will give the correct serial for the given username.

Patching- Patching is nothing but altering the Hex bytes in an executable are any other file. Usually we will patch a crackme such that it will say correct serial if u enter any serial for a given username.

PE Header- Present in all Windows Executable,it tells the OS how to load the exe and execute it. PE Header is a vast topic and a very important one,u must read about PE Headers at MSDN site or use Google to find the Paper by Icezlion or a more detailed and a very good paper by LUEVELSMEYER

Tools needed in our trade..

Debugger- Used to trace the target program line by line. I use OllyDbg, will be useful for beginners, because it is Ring 3 debugger, another powerful debugger is Softice by Numega ,but it is a Ring 0 debugger. I started with Softice though, but I recommend OllyDbg.

What is a Ring??
The architecture of the Intel x86 processor defines four privilege levels (known as rings). Windows uses privilege level 0 (or ring 0) for kernel-mode and privilege level 3 (or ring 3) for user-mode. The reason Windows uses only two levels is that some of the hardware architectures that were supported in the past (such as Compaq Alpha and Silicon Graphics MIPS) implemented only two privilege levels.

Disassembler- It is used to represent the exe files as a set of asm code. It is static when compared to a debugger which is dynamic one, meaning we can execute a asm statement in a debugger and not in a disassembler. W32Dasm is a famous disassembler,u can also use PVDasm, but I recommend IDA Pro which is a powerful disassembler with lot of features

Hex Editor- Used for modifying Target files. Hex Workshop is a good tool, Hiew is a better one.

Some program may be packed, which means modifying the PE Header or encrypting the PE header.such program cannot be debugged or disassembled

Other useful tools are ..
Resource Workshop by Borland to modify GUI windows attributes, PEid to check whether a program is packed and what compiler the program was compiled. And unpackers for packed binary executables.

Ok next register u’r self at Crackmes.de. Crackmes.de contains lots of crackmes to play around.
U can check my Profile at Crackmes.de, by searching for neo_theone,this is the name I have registered there, and I am revealing it here because I don’t do any illegal stuff and then who cares…

Next u must register u’r self at community.reverse-engineering.net, a forum where u can ask any doubts regarding programming,reversing or if u have any trouble cracking a crackme downloaded from Crackmes.de u can ask for help here.

Here I conclude my First Article(its not a article).Any way in coming days I will write about how to crack a example crackme.

Wednesday, January 11, 2006

Time for some Technical stuff...

Hi all,
          I have decided to write some technical stuff here not much though.

But first a little background…
Many kids today actually grow up with computers, but I saw a computer only in my ninth or tenth standard (note the word “saw”).
When I entered 11th STD, my school bought 4 computers, and my class had 12 students. I think u could work out the maths: how many students must share a computer.
But I learned basic working of computers there including getting used to the mouse (!!!)..
And some programming in BASIC…

When I joined B.E. I was given a single system and I learned programming in C and C++.
I was introduced to Internet also at the same time, but I didn’t make use of the internet effectively. I created my first e-mail account only at my third year of my college (2001)!!

In my second year I got my own system in my home, I was overjoyed...
But still I didn’t do anything useful with the computer. I used the computer just to hear music or movies. What a waste…

But when I finished B.E. and not placed in any companies the whole scene changed.

I started hunting for jobs, but mostly I was in my home. At the time only I started looking for something interesting to do just to kill boredom.
For some time then, I was interested in Software Reverse-Engineering (Cracking /hacking), so I decided to learn some real stuff to do with my computer, I started to learn it…

I learned then, the power of Internet as a knowledge base and things u can learn just sitting in u’r home

I must say that I don’t liked to be called cracker or hacker but I am a knowledge seeker and not more

There is the case of ethics involved in my area of interest; I don’t want to go into that.
But what I practice is: improve u’r knowledge and respect other peoples work

India being a developing country, many people doesn’t have that kind of money to buy software; they tend to use illegal software’s instead. No one can stop it, not yet…

About Reverse-Engineering…
          It is a fascinating area of computers; it is always exiting to break other people code…
          Further reverse-engineering can help u improve the quality of u’r own code because u may find out a piece of code written in a way is not efficient or error prone, u can come out with a new way of writing the same code in a better way
          I will try to explain the basics of software reverse-engineering in coming posts

Added some more services to my Blog

hi all,
i have added subscription service that will enable u to get my post directly to u'r E-Mail.
i have also added a feed subscription service that will enable u to see my feeds in u'r yahoo account or gmail account or any software that can read feeds

(Scroll down to locate these services)

Enjoy...

Pongal Greetings to everyone

This Pongal will be a happy one for many farmers in TamilNadu because of the success of the monsoon.

A very happy Pongal to everyone,enjoy the holidays...