I have some questions about reverse engineering:

  • What do I need for studying RE?
  • Should I know all of programing languages to study RE? (I only intend to reverse Android and Window PC applications for studying)
  • Do I need any specific application to do it?

Oh, I did some searching on internet. However, it is too complex, and I cannot understand, especially Wikipedia. So, I would be really grateful if you guys could make it simple enough to understand.


These suggestions may help. One sure way of becoming a better reverse engineer is to become a better "forward engineer"! Here's what I would suggest:

  • Time to study and learn (again..:).
  • Examine the assembly output of various compilers. Write test programs of increasing complexity and examine the assembly language output so that you get a sense of what the compiler does for any given high level construct.
  • Try running binaries through a decompiler. This will allow you to see how those same programs are interpreted by a tool and allow you to begin to see the kinds of errors that the tools make.
  • Try completely reverse engineering a small project. It's not hard to find source code for all kinds of things these days. Pick an open source project that you are not familiar with, compile it without peeking at the code and try to reverse engineer it entirely. Alternatively, try reverse engineering some particular routine or aspect (which is more usual).
  • Try to write code to fool the decompiler. Open source projects typically don't take any anti-disassembly measures but other kinds of software (e.g. malware) often does. Learn these techniques in the forward direction and then look at the results with your reverse engineering tools. You'll get a feel for which techniques are successful and why.

There's more, I quickly remember more of that.

Hope that helps.


| improve this answer | |

I think, in my humble opinion, you will need (based on my experience):

  • Dedicated Internet Link
  • Physical equipment as architecture (x86, x86-64, arm, mips and others)
  • Storage (to store samplers)
  • Tools - IDA Pro Freeware, gdb, radare2, etc.
  • VM (Windows, Linux, Android, IOS, etc)
  • Time to study and learn.

There's more, I quickly remember more of that.

I hope this helps.

| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.