Log in

View Full Version : what language should i learn?


jop
February 16th, 2012, 21:53
hi. i'm a real noob in reversing, i've just started
(but maybe i do ok for a 14 year old)
what language should i learn first? i can patch most easy crackmes on crackmes.de, like the cd-check ones, but i think
i should learn a language first (c++, c, delphi)
could anyone please point me to the best one to start with??
thanks.

Aimless
February 17th, 2012, 01:17
Visual Delphi ++ Enterprise Version with CORBA and ADO/DAO MFD Classes.




Heh!....


...Sorry kid, was feeling a bit frisky. :P

Why don't you learn Assembly? You could:-

1. Start perusing the Intel Manuals.

2. Download the MASM software package by Hutch (even TASM, if you're particularly adventurous)

3. Start off on the Windows Assembly tuts by Iczelion

4. Use a small programming language (Turbo C/C++ would do) to write programs then immediately disassembly them using IDA (or any of your favourite tool). Learning this relation between what you have written and how it appears in assembly is worth the learning curve.

5. Anything else, just post on this board. Unless it's a blatant crack request, everyone will pitch in.

Don't give up.

And above all...

..Have Phun!!

Darkelf
February 17th, 2012, 15:29
The question IF you should learn a programming language is easy to answer: YES!
The question WHICH ONE isn't. While ASM is without a doubt the most useful language as far as reversing is concerned, it is imho not a language to start with. If you've never programmed before I'd recommend Python.
That's why:

It's easy to learn and you'll quickly get a grasp of the concepts behind programming. It's VERY well documented. You can literally get thousands of tutorials and free books on the web. While it is an easy to learn language on the one hand, it is a very powerful one on the other. You can easily access any .dll, extend Python with other languages and you can even do system-level coding with it. Plus it is a very useful language for reversing tasks. You can script IDA with it, there is an Olly derivate (ImmunityDebugger) with Python support and there are whole reversing-frameworks made with and for Python. But the most important aspect for a beginner might be, that you'll get a sense of achievement pretty fast.

Regards
darkelf

jop
February 18th, 2012, 14:30
thank you very much, aimless and darkelf. i'm looking around the masm compiler now.

Sunk
February 19th, 2012, 15:17
If I want to learn C and bought a old book from 1988 or the 90's, is that still going to be just as valid as a book from 2012? I'm familiar with Perl and Python and such and those languages change often, but I'm not sure about C.

Silkut
February 23rd, 2012, 16:37
@Sunk> The difference will reside in standards, in 89 (ANSI) C89 was used, now it's C11, but unless you're an integrist or have a very strict compiler, a while is still a while..
To be honest that's something I don't like in Python: a program work with 2.6 and not anymore with 3..but it's surely the programmer's fault i guess.

[roe]
March 23rd, 2012, 09:47
As a newbie like you, I was asking myself the same question. I started off with Python on YouTube, because terminology like "strings" and so on looked too advanced for me and it had the structure (used in different contexts) as a college-native one and I hated it. I got used with several programs but I wanted more and not just the "cheap" thinking of "a string is a long stuff with words and stuff". I wanted to understand the terminology and think like a mathematician/programmer, or at least kind of.
Basicly, I wanted to have a certain mentality and a grown up one, the one which gives you power by having knowledge and so on. Recently I bought "The Art of Assembly" book, after I watched several tuts of lena151 and decided I like Reversing, too bad that it focus on HLA (High Level Assembly) and not MASM/TASM, so I kind of hate it now (I've only read around 15 pages from it and quickly had some looks to several chapters). Also I bought "The C (ANSI) Programming Language" also known as K&R. It is a very good book about C, it is aiming for developing you a kind of mentality towards the logical use of the computer. This is the one that I recommend you, but first try to get used with Python to know a little bit of what programming includes, do not rely fully on it and give it a go to C and if you wish, the book I mentioned. It will aid you very much in developing a "straight" mentality. It is for open minds and educating them.

I am curious what somebody else might say about my post, so people that are very good and not a newbie in me (only coded very few exercises and few projects in C and Python). Please do not hesitate to correct me or give me good advices also to the creator of this thread, though his young.


P.S.: Sorry for "1 month" reply. I know it is kind of too late, but I want to know the opinions of others that coded and did a GOOD JOB in C and so on.

Transient
March 23rd, 2012, 22:00
I would say Visual C++ would be one of the most practical languages to learn or C# if you'd prefer a simpler learning curve. Learning a little assembler is a great way to understand how the computer really works at a logical level and critical to reversing. One of the first things I learned was simple BIOS calls from DOS via assembler.