Archive for the ‘Reverse Engineering’ Category

Reverse Engineering Challenges

Friday, November 13th, 2015

Reverse Engineering Challenges by Dennis Yorichev.

After the challenge/exercise listing:

About the website

Well, “challenges” is a loud word, these are rather just exercises.

Some exercises were in my book for beginners, some were in my blog, and I eventually decided to keep them all in one single place like this website, so be it.

The source code of this website is also available at GitHub: I would love to get any suggestions and notices about misspellings and typos.

Exercise numbers

There is no correlation between exercise number and hardness. Sorry: I add new exercises occasionally and I can’t use some fixed numbering system, so numbers are chaotic and has no meaning at all.

On the other hand, I can assure, exercise numbers will never change, so my readers can refer to them, and they are also referred from my book for beginners.


There are some pieces of code which are really does the same thing, but in different ways. Or maybe it is implemented for different architectures (x86 and Java VM/.NET). That’s OK.

A major resource for anyone interested in learning reverse engineering!

If you are in the job market, Dennis concludes with this advice:

How can I measure my performance?

  • As far as I can realize, If reverse engineer can solve most of these exercises, he is a hot target for head hunters (programming jobs in general).
  • Those who can solve from ¼ to ½ of all levels, perhaps, can freely apply for reverse engineering/malware analysts/vulnerability research job positions.
  • If you feel even first level is too hard for you, you may probably drop the idea to learn RE.

You have a target, the book and the exercises. The rest is up to you.

Reverse Engineering for Beginners

Wednesday, May 14th, 2014

Reverse Engineering for Beginners by Dennis Yurichev.

From the webpage:

Topics discussed: x86, ARM.

Topics touched: Oracle RDBMS, Itanium, copy-protection dongles, LD_PRELOAD, stack overflow, ELF, win32 PE file format, x86-64, critical sections, syscalls, TLS, position-independent code (PIC), profile-guided optimization, C++ STL, OpenMP, win32 SEH.

I guess I have a different definition of “beginner.”

Chapter 2 starts off with “Hello, World!” from C and by section 2.1.1:

Let’s compile it in MSVC 2010:


At more than 600 pages this took a lot of work. I suspect that it will repay a lot of work with the text.

I first saw this in Nat Torkington’s Four short links: 13 May 2014.

The Case for Semantics-Based Methods in Reverse Engineering

Sunday, July 1st, 2012

The Case for Semantics-Based Methods in Reverse Engineering by Rolf Rolles. (pdf – slides)

Jennifer Shockley quotes Rolf as saying:

“The goal of my RECON 2012 keynote speech was to introduce methods in academic program analysis and demonstrate — intuitively, without drawing too much on formalism — how they can be used to solve practical problems that are interesting to industrial researchers in the real world. Given that it was the keynote speech, and my goal of making the material as accessible as possible, I attempted to make my points with pictures instead of dense technical explanations.”

From his blog post: ‘RECON 2012 Keynote: The Case for Semantics-Based Methods in Reverse Engineering.’

Rolf also points to a reading list on program analysis.

Did someone say semantics? 😉

Anyone working on topic map based tools for reverse engineering?

Thinking that any improvement in sharing of results, even partial results, would improve response times.