
Reverse Engineering for Beginners - ingve
http://beginners.re/
======
nekitamo
If you prefer video tutorials to a book, be sure to check out the Lena151
tutorials:
[https://tuts4you.com/download.php?list.17](https://tuts4you.com/download.php?list.17)

If you want to practice your reverse engineering skills in a legal manner,
check out crackmes.de: [http://crackmes.de/](http://crackmes.de/)

tuts4you also has a nice crackme/unpackme section.

~~~
LiveOverflow
I recently started a YouTube series on hacking. With a main focus on reverse
engineering and memory corruption. I'm currently on episode 0x5 and I
currently release them biweekly.

[https://www.youtube.com/playlist?list=PLhixgUqwRTjxglIswKp9m...](https://www.youtube.com/playlist?list=PLhixgUqwRTjxglIswKp9mpkfPNfHkzyeN)

I also record myself playing CTFs and I just created a video walkthrough of
the pwnable 200 challenge from the 32c3 CTF:
[https://www.youtube.com/watch?v=wLsckMfScOg](https://www.youtube.com/watch?v=wLsckMfScOg)

Maybe it helps somebody.

~~~
azm1
Good stuff. Consider posting in
[https://www.reddit.com/r/ReverseEngineering/](https://www.reddit.com/r/ReverseEngineering/)

------
voltagex_
I highly recommend downloading your router/modem firmware and having a look at
it. Even running `strings` against it should be quite interesting.

If you're interested in unpacking a firmware then have a look at `binwalk`
[1]. It might even work against your Blu-Ray player!

1: [http://binwalk.org](http://binwalk.org)

------
pakled_engineer
Another way to learn is watch Charlie Miller reversing hardware presentations
[https://youtu.be/_9ErnoLVxCA](https://youtu.be/_9ErnoLVxCA)

For example he notices a pattern, so assumes it must be a return after a
function. From there he can reverse their proprietary battery controller

------
birdperson
What are the prerequisites? Knowledge of computer architecture A to almost Z?

~~~
ddingus
Just a desire to learn. I gave this a quick glance, and it's reasonably
complete in terms of foundation material.

It's not going to be difficult for people lacking some things to go and look
them up in context.

The most important skill here is knowing what you don't know and the secondary
skill of paying close attention to what you see happening.

One might want to explore electronics enough to use a scope, logic analyzer,
etc...

This is a pretty great book, and I look forward to exploring it.

~~~
voltagex_
Having a goal helps too. I tried and failed to learn x86 assembly a number of
times in 2015 and then decided to focus more on modem firmware analysis
instead. Sure, it's a bit of a cop-out (I can get a lot further without
looking at any assembly code) but I'm slowly coming back around to reverse
engineering the long way around.

~~~
ddingus
Oh it does indeed!

Well said, and agreed completely.

One way to get familiar with assembly is to get a development board that can
run bare metal code. You could even start with something that isn't x86, but
is assembly. Once you complete a driver, game, or some other project in
assembly, learning another assembly becomes considerably easier.

There is a mindset involved. You can get it on a 6502, if you want to, but you
have to have it in order to make any real sense of assembly language, IMHO.

I have my struggles with this too, but I find it always interesting and
fascinating. Goes back to the days of cracking games and opening up licenses
on simpler, smaller computers.

I also believe a number of us should maintain and share these skills. It's
important for a lot of basic reasons, and those don't have to be piracy, or
nefarious malware reasons. It may be as simple and benign as using something
we own to do something we want it to do as opposed to what it was originally
intended to do.

~~~
voltagex_
I've never quite been able to shake the feeling of being born in the wrong
era. I didn't start learning programming til I was 12, and I jumped straight
into higher level languages. While I'm thankful for StackOverflow, I've got a
bookshelf full of things like Peter Norton's Guide to Assembly just waiting
for a spare week or two.

~~~
ddingus
I sometimes feel I missed things too. For me, it's a better era alignment in
that I was writing low level code on the simpler machines. But, I did step
away for quite a while doing manufacturing, CAD, and a lot of related things.

All of which were very interesting, but my real love is programming and
circuits. So, now I'm back, making progress, loving it, but also feeling a bit
out of place.

We are not alone, of that I am sure.

------
patrickaljord
I like the French Cafe parable by Andrew Tridgell of Samba on the topic
[https://www.samba.org/ftp/tridge/misc/french_cafe.txt](https://www.samba.org/ftp/tridge/misc/french_cafe.txt)

~~~
voltagex_
Isn't that more specific to protocol reversing?

------
msie
Wow! This is a massive book! Here's my New Year's Resolution staring me in the
face.

~~~
hackerboos
There's a lite version available on the same page.

------
hackerboos
I began reading this book yesterday. So far it's a good introduction to
analysing and manipulating ASM.

You'll need a windows system though. I found that the GCC examples didn't
match up with what I was seeing on my Debian VM.

~~~
mkesper
Because of different compiler versions, maybe?

~~~
hackerboos
Turns out I was compiling to 64bit which changes the ASM.

I compiled to 32bit and then ran IDA-free version using WINE on OSX (Hopper's
output was too different).

Output is now identical.

