Reverse Engineering RET Homepage RET Members Reverse Engineering Projects Reverse Engineering Papers Reversing Challenges Reverser Tools RET Re-Search Engine Reverse Engineering Forum Reverse Engineering Links

Go Back   Reverse Engineering Team Board > Reverse Engineering Board > General Forum
FAQ Members List Calendar Search Today's Posts Mark Forums Read

Reply
 
Thread Tools Display Modes
  #1  
Old 12-20-2003, 03:16 PM
Jera Jera is offline
Junior Member
 
Join Date: Dec 2003
Posts: 2
Default New to this

I am new to the concept of reverse engineering but someone pointed me this direction. So I am going to start learning programming and wonder what I should start on (read to learn reverse engineering). I was going to follow what a someone did, start with basic, but decided to get your input first.


Thanks,

Jera
Reply With Quote
  #2  
Old 12-21-2003, 11:51 AM
kw kw is offline
Administrator
 
Join Date: Dec 2002
Location: The Netherlands
Posts: 116
Send a message via Yahoo to kw
Default

Hello,

It all depends on your character really. There are different kinds of people.

If you have the ability to really set your mind to something, and study without having to get immediate results to keep yourself motivated,
learn programming in win32 assembler first (forget about reverse engineering for a while, learn engineering first for as long as you need to feel youve understood the basics)
This will teach you two of the basic things you need to know:
- Assembler language (make sure you do some things that operate directly on data, like program a function for inverting the capital letters of a string. (from "aBcDe" to "AbCdE"))
- The functions windows provides to do things (make sure you do some things that involve getting info from textboxes)

An example project would be making a crackme (you've probably seen them around, if not google for the word).
The reason behind this is simple, it enables you to look from the programmers point of view. All you have to do then, is view from the other side, instead of going from something you understand to a program, going from a program back to something you understand.

This is probably the best way to learn. It gives you a thorough background, and you won't be left to guesswork, because you already know how stuff works.

The other approach, for the less patient, is the hopping back and forth method.. You find a (simple!) project for reverse engineering.. Say a really really simple crackme, for example.. And then, read some essays to find out where to start. After getting started, you can then try to look up things you get stuck with, using a bit of an iterative approach.. Like 'i dont understand what CMPSB does' -> google for info about it -> read that -> understand -> go back to project.. etc.
This method is FAR less stable and not really recommended, but if you really don't have enough patience, it might get you there in the end..

The start is the roughest part.. Once you understand ASM and how programs work (I mean REALLY work. ) its just a matter of trying to understand new techniques etc.

Good luck,
kw

By the way, you said 'I was going to follow what a someone did, start with basic'. You mean me? I wrote that on my site, its not really very useful as a guideline to start with basic, its just something I happened to start with. Its ok for getting into programming at first, but it teaches a lot of bad habits, so I wouldn't recommend it. (I only know that from experience, I didnt beforehand. You do now )
__________________
"It's people like this that make you realize how little you've accomplished. It is a sobering thought, for instance, that when Mozart was my age, he had been dead for two years." - Tom Lehrer
Reply With Quote
  #3  
Old 12-21-2003, 09:02 PM
Jera Jera is offline
Junior Member
 
Join Date: Dec 2003
Posts: 2
Default

Yes I was speaking of you. Glad that I can learn from your mistakes tho. What exaclty do you mean win 32 assembler first? Get a book from the store with a compiler in it for windows? By the way, if it makes a difference I am using windows xp pro.


Thanks,

Jera

P.S. just a note, like I said I am new to this and don't understand yet but am willing to do the work so please be more specific when helping me please.

Thanks
Reply With Quote
  #4  
Old 12-21-2003, 11:10 PM
Devine9 Devine9 is offline
Administrator
 
Join Date: Dec 2002
Posts: 180
Default

travel to:
http://win32asm.cjb.net and read what you can there. MASM is a free compiler and comes with example source code for your perusal. Assembler however is a low level language, so it may be beyond your level for your right now. The other option is a higher level language with more usability features such as delphi or c to start at and then travel your way down.

good luck.

Devine Right [RET]
Reply With Quote
  #5  
Old 12-23-2003, 04:43 AM
quitsendingmetrash quitsendingmetrash is offline
Member
 
Join Date: Dec 2003
Posts: 29
Default

hello Jera,

I am on of those jumpers kw is referring to. I would like to first point out that i am not a programmer. So don't take anything i say to heart. I am also interested in reversing and programming, not just in an electrical or software aspect. perhaps it is more about my attitude.

As far as reversing goes Assembly is a must. Along with lots and lots of time. I would definetely take up that recommendation regarding MASM. Keep in mind that complications are involved in all of selfLearning/Teaching. Assembly is more than likely going to be rough to start out with. Stick to your goal and you will acheive it.

Do go and find your self a higher level language. Study this as well. I could list a few but perhaps it would just be more overWhelming. Although i recommend you to check out Python. If you don't find comfort here then look for another. Although i do not program yet, i have spent 1-6 hours each, on several languages. Now when i look at a language, even for the first time, i see simular structure.

Jumping between two language may be confusing for a beginner, but so is sticking to one. Since reversing sparks your interest you are stuck with Assembly. Learning a higher level language while studying Assembly may connect some dots that would otherwise be left dangling.

I choose python, because after quit some time and questioning of which language i should start out with it fits me, the beginner. It also seems to have a simpler syntax. This could be a pitfall from some aspects, but the whole point is to start programming at some point. I will fill in the craters i have dug, some time in the future. Of course i will be studying ASM along with others. Like i said i am a jumper.

My last recommendation is HTML. (If you do not know it already.) If you are not interested in creating websites that is fine. Just check out the code enough to see what is going on. Along with the insight of what programs are doing when you pick font size 12 or making text bold, you will have fast results. It may take quite some time to feel an accomplishment in Assembly, in html it may take you a few hours, even minutes. When you are stuck in ASM take a break and code some HTML. When you feel the excitement of creating something jump back to ASM and apply your excitement. Once you have created something in ASM your excitement and insight will be worth all the time and brainOverloads.

Hope i have been helpful after all that. If not, i am easily disregardable.
quitSendingMeTrash
Reply With Quote
  #6  
Old 12-23-2003, 05:19 AM
quitsendingmetrash quitsendingmetrash is offline
Member
 
Join Date: Dec 2003
Posts: 29
Default

By the way, finding a good newbie tutorial on asm can be quite a task. Even if it is good, understanding it is a wholeNother ball game.
Almost mandatory reading are the +ORC tutorials.
Also check out "The Art Of Assembly"

If you come across something that is usefull or eyeOpening i am more than eager for your referral, as i struggle everytime i see ASM code.

I am not done reading the full forum so this may have already been applied. Perhaps a good topic would be would be
__fromThoseWhoGetIt--toThoseWhoDont__
Each asmGuru could pick the top 3 tutorials they think would be the most informative to us asmWannaBeGurus.

anyway goodLearning Jera
Reply With Quote
  #7  
Old 02-09-2004, 11:28 AM
sna sna is offline
Administrator
 
Join Date: Jun 2003
Posts: 76
Default other peoples' point of view

Learning Computer Science via Assembly Language

you guys might be interested in reading this post: http://developers.slashdot.org/article.pl?...04/02/05/228200
-- and the discussions that follow.

cheers, sna
Reply With Quote
  #8  
Old 02-09-2004, 02:31 PM
rous rous is offline
Member
 
Join Date: Jan 2004
Posts: 38
Default

Welcome,

Although I agree that knowledge of Assembly is a must, I would learn C first. It's fairly low level programming, as close to Assembly as your going to get, yet still readable and very, very useful if you ever want to learn other languages...many other high-level languages have been developed based on C. Plus, C is a relatively small programming language, which makes things easier for you because you don't have to remember many commands before you start to actually code.

Good luck,
rous
Reply With Quote
  #9  
Old 03-26-2004, 05:28 AM
quitsendingmetrash quitsendingmetrash is offline
Member
 
Join Date: Dec 2003
Posts: 29
Default

hey jera check this out:
search in google for ---> Ketman Assembly Language Tutorial
i am about half way through the tutorial and it has been very helpful. finally, i just might be able to comprehend softice.

i am curious if anyone knows of any other tutorials or a crackMe designed in this way. it is an assembly interpreter. the left side is a tutorial and executes asm commands (F9-single step). the right side displays registers, flags, etc.

in another topic there was a discussion about video and audio tutorials that would give a hands on experience. the interpreter technique could be combined with them or used on its own to create an ERC (educationalReversingConsole).

a simple concept behind the ERC is to educate its users with hands on experience. beginners have the chance to execute commands and see the result, rather than just reading a tutorial and trying to retain the info and execute it in some debugger, etc.
the person designing the turorial can use more than words in his explantion because they get to show what the registers are doing rather than just explaining.

crackMes and challenges could be used like plugins or saved files that the ERC would open and save. various authors could write tutorials and not have to worry about what version or type of debugger the readers are using. the console will interpret the code.

tutorials would never be outDated and rather than being used only as a reference 10 years down the road it could still be implemented with the ERC.

the ERC 's goal is not to replace any other tools. it is to educate.

the cool thing about this is that rather than have 10 crackMes you could have 1 crackMe that is 10 crackMes or 10 crackMes combined to become 1 comboCrackMe or 1 crackMe that has been evolved 10 times. anyWay download the tutorial and check it out. you will see where i am coming from. maybeNot

if nothing else it would be interesting to see what type of encryption could be built with various coders building on top of each others tutorials.

thanks for the link above sna
Reply With Quote
  #10  
Old 03-27-2004, 12:06 AM
quitsendingmetrash quitsendingmetrash is offline
Member
 
Join Date: Dec 2003
Posts: 29
Default

i finished up the tutorial last night tutor86.exe (ketman). just throwing a heads up. the .com file developed on completion did not run correctly on windows 2000 sp4. i think it has to do with dos emulation. it also did not work on windows 98 through virtual pc under win2k.

i did get it to work using DOSBox6.
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump





Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.