Software Security Links

 

Software Reverse Engineering

Software reverse engineering is the art of revealing the secrets behind a software. In addition to knowledge of how things really work (operating systems, processors, programs etc.), reverse engineering requires a lot of patience. It is illegal (and immoral in my view) to reverse engineer software for commercial purposes, but it is legal to reverse engineer for educational purposes.

 

Disassemblers, Decompilers and Debuggers

A disassembler takes a machine language file and translates it to assembly language; a decompiler takes a program and translates it to high level language. There are no good decompilers for translating machine language to high level language (e.g. C, C++ etc.) but there are decompilers for Java and .net-based languages. Also, there are good disassemblers (e.g. IDA).
A debugger may help in monitoring the execution of a program; using a debugger it is possible to get the contents of registers and memory at different stages, in addition to tracing the flow of the program.  

 

Code Obfuscation

Code obfuscation is a technique for protecting programs from being reverse engineered. The general idea is making the program look much more complicated than it really is by changing its structure, complicating the way data is represented etc. There are several commercial obfuscators for Java and .net languages, in which decompilation is easy when the program is not protected.

 

Obfuscators

 

General Software Security

 

Back to my homepage
Last updated: 19/08/04
p>