www.program-transformation.org

TwitterFacebook
Get flash to fully experience Pearltrees
Praise for Exploiting Software “ Exploiting Software highlights the most critical part of the software quality problem. As it turns out, software quality problems are a major contributing factor to computer security problems. Increasingly, companies large and small depend on software to run their businesses every day. The current approach to software quality and security taken by software companies, system integrators, and internal development organizations is like driving a car on a rainy day with worn-out tires and no air bags. http://www.amazon.com/Exploiting-Software-How-Break-Code/dp/0201786958

Exploiting Software: How to Break Code (0785342786958): Greg Hoglund, Gary McGraw: Books

Our look is the result of reader comments, our own experimentation, and feedback from distribution channels. Distinctive covers complement our distinctive approach to technical topics, breathing personality and life into potentially dry subjects. The image on the cover of Security Warrior is a group of Sumo wrestlers. Sumo is the traditional national sport of Japan. An origin myth about Japan tells how the god Take-Mikazuchi won dominion over the Japanese islands in a Sumo match.

Security Warrior - O'Reilly Media

http://shop.oreilly.com/product/9780596005450.do
http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0764574817.html

Reversing: Secrets of Reverse Engineering

Beginning with a basic primer on reverse engineering-including computer internals, operating systems, and assembly language-and then discussing the various applications of reverse engineering, this book provides readers with practical, in-depth techniques for software reverse engineering. The book is broken into two parts, the first deals with security-related reverse engineering and the second explores the more practical aspects of reverse engineering. In addition, the author explains how to reverse engineer a third-party software library to improve interfacing and how to reverse engineer a competitor's software to build a better product. * The first popular book to show how software reverse engineering can help defend against security threats, speed up development, and unlock the secrets of competitive products
http://desquirr.sourceforge.net/desquirr/ Desquirr is a decompiler plugin for Interactive Disassembler Pro. It is currently capable of simple data flow analysis of binaries with Intel x86 machine code.

Desquirr :: Desquirr (2002)

Program Transformation Wiki / Decompilation Possible

http://www.program-transformation.org/Transform/DecompilationPossible Program-Transformation.Org: The Program Transformation Wiki Almost every week requests for decompilation programs are made in newsgroups (like comp.lang.c ), and these are usually replied with: It is not possible! People claim that decompilation is similar to converting a hamburger back into a cow, or unscrambling an omelette back to an egg. Here is a typical FAQ entry from C++-FAQ-Lite , and my refutation of it. Also BobStoutOnDecompilation and its refutation .
http://revenge.berlios.de/index.php This site is dedicated to reverse engineering and decompiling. Anyone interested in things like a decompiler will find useful information here. For some more details, please look at the FAQ .

Revenge: Research into Reverse engineering and decompiling.

CGEN (pronounced seejen ) is a framework for developing generators of CPU-related tools such as assemblers, disassemblers and simulators. It specifies a description language for describing the architecture and organization of a CPU without reference to any particular application. Additional applications can be written within the framework. http://sourceware.org/cgen/

CGEN

The New Jersey Machine-Code (NJMC) Toolkit helps programmers write applications that process machine code -- assemblers, disassemblers, code generators, tracers, profilers, and debuggers. The NJMC Toolkit implements the SLED (Specification Language for Encoding and Decoding) language. SLED specifications for the MIPS, SPARC, Pentium, Alpha and PowerPC have been written. http://www.program-transformation.org/Transform/NjmcTk

Program Transformation Wiki / Njmc Tk

http://www.program-transformation.org/Transform/DecompilationResources

Program Transformation Wiki / Decompilation Resources

Sim-nML might be considered a competitor to the NJMC toolkit. Using specifications, you can generate disassemblers, code generators, simulators, etc. Fenris is a multipurpose tracer, GUI debugger, stateful analyzer and partial decompiler intended to simplify bug tracking, security audits, code, algorithm, protocol analysis and computer forensics.
Even if you know the compiler's manufacturer and version number and compile-time options, what third party libraries were linked-in, and what was their version? Even if you know all that stuff, most executables have had their debugging information stripped out, so the resulting decompiled code will be totally unreadable. Even if you know everything about the compiler, manufacturer, version number, compile-time options, third party libraries, and debugging information, the cost of writing a decompiler that works with even one particular compiler and has even a modest success rate at generating code would be significant — on the par with writing the compiler itself from scratch.

[38] Compiler dependencies  Updated! , C++ FAQ

http://www.parashift.com/c++-faq-lite/compiler-dependencies.html#faq-38.4

Program Transformation Wiki / Bob Stout Refutation

Program-Transformation.Org: The Program Transformation Wiki This page is my refutation of a Frequently Asked Question answer on decompilation. The original page is difficult to find now in its complete form, so I have archived it here . As with the other refutation page , I sincerely mean no disrespect to Bob Stout, Jeremy Coffin, or other commentators. This sort of attitude to decompilation is unfortunately common. Ultimately, the naysayers may be correct in a very broad sense, i.e. it may be that machine code decompilers will never be easy enough to use to become mainstream.
Program-Transformation.Org: The Program Transformation Wiki There may be a few machine code patterns that are impossible to decompile automatically. These would therefore require expert human intervention to decompile successfully. There are features such as the original comments, variable names and function names that can never be recovered, although very powerful analyses may be able to suggest good (perhaps even better than the original, in some cases) alternatives. These unrecoverable features are not the aim of this page, since correct decompilations can be generated (even if usually less readable that the original) without recovering the original comments or names. Reference combined with casts

Program Transformation Wiki / Impossible To Decompile

Program Transformation Wiki / Binary Translation

Binary tanslation is the process of automatically translating binary object code from one machine Mi to another. The machines are normally different. Binary translation either takes place at software or hardware level. - If the machines and the operating systems are different. In this case we are interested in both translating the applications from the source machine, but also in trapping or translating the operating system calls from the source machine to the operating system supported on the target machine. Often, the solution to this problem is to have an virtual machine supporting the source machine.

Antique Software: Turbo C version 2.01

[All] By: David Intersimone Abstract: Turbo C 2.01 provided everything you needed, all of the tools, included in one environment. Turbo C 2.01 provided tight integration between the editor, compiler, linker, and debugger.

Decompilation

Decompilation is the reverse process of compilation i.e. creating high level language code from machine/assembly language code. At the basic level, it just requires to understand the machine/assembly code and rewrite it into a high level language, but things are not as simple as they seem, particularly when it comes to implementing a decompiler. Throughout this discussion, we will be using the C language for the high level language, and the 8086 assembly language for the low level language. To recover lost source code. You may have written a program for which you only have the executable now (or you got the exe of a program you wrote long back, from someone else!).