FreeComputerBooks.com
Links to Free Computer, Mathematics, Technical Books all over the World
|
|
- Title x86 Disassembly: Exploring the Relationship between C, x86 Assembly, and Machine Code
- Author(s) Wikibooks Contributors
- Publisher: CreateSpace (September 15, 2011), eBook (WikiBooks)
- License(s): CC BY-SA 3.0
- Paperback 146 pages
- eBookHTML and PDF files
- Language: English
- ISBN-10: 1466346051
- ISBN-13: 978-1466346055
- Share This:
What Is This Book About? This book is about the disassembly of x86 machine code into human-readable assembly, and the decompilation of x86 assembly code into human-readable C or C++ source code. Some topics covered will be common to all computer architectures, not just x86-compatible machines.
What Will This Book Cover? This book is going to look in-depth at the disassembly and decompilation of x86 machine code and assembly code. We are going to look at the way programs are made using assemblers and compilers, and examine the way that assembly code is made from C or C++ source code. Using this knowledge, we will try to reverse the process. By examining common structures, such as data and control structures, we can find patterns that enable us to disassemble and decompile programs quickly.
Who Is This Book For? This book is for readers at the undergraduate level with experience programming in x86 Assembly and C or C++. This book is not designed to teach assembly language programming, C or C++ programming, or compiler/assembler theory. What Are The Prerequisites? The reader should have a thorough understanding of x86 Assembly, C Programming, and possibly C++ Programming. This book is intended to increase the reader's understanding of the relationship between x86 machine code, x86 Assembly Language, and the C Programming Language. If you are not too familar with these topics, you may want to reread some of the above-mentioned books before continuing.
What is Disassembly? Computer programs are written originally in a human readable code form, such as assembly language or a high-level language. These programs are then compiled into a binary format called machine code. This binary format is not directly readable or understandable by humans. Many programs, such as proprietary commercial programs, or very old legacy programs may not have the source code available to you. Programs frequently perform tasks that need to be duplicated, or need to be made to interact with other programs. Without the source code and without adequate documentation, these tasks can be difficult to accomplish.
This book outlines tools and techniques for attempting to convert the raw machine code of an executable file into equivalent code in assembly language and the high-level languages C and C++. With the high-level code to perform a particular task, several things become possible: 1. Programs can be ported to new computer platforms, by compiling the source code in a different environment. 2. The algorithm used by a program can be determined. This allows other programs to make use of the same algorithm, or for updated versions of a program to be rewritten without needing to track down old copies of the source code. 3. Security holes and vulnerabilities can be identified and patched by users without needing access to the original source code. 4. New interfaces can be implemented for old programs. New components can be built on top of old components to speed development time and reduce the need to rewrite large volumes of code.
About the Authors- N/A
- Assembly and Machine Languages
- Reverse Engineering
- Electronics Circuit Design and Programming
- Embedded Systems Programming
- Computer Programming
-
Zen of Assembly Language: Knowledge (Michael Abrash)
This book unlocks the secrets of writing superb assembly-language code. It assumes that you're already familiar with assembly language, at least acquainted with the registers and instructions of the 8088, and with the use of one of the popular PC assemblers.
-
BIOS Disassembly Ninjutsu Uncovered (Darmawan Salihun)
This book is primarily oriented toward system programmers and computer security experts. In addition, electronic engineers, pc technicians and computer enthusiasts can also benefit a lot from this book.
-
x86-64 Assembly Language Programming with Ubuntu
This book provides a reference for University level assembly language and systems programming courses. Specifically, this text addresses the x86-64 instruction set for the popular x86-64 class of processors using the Ubuntu 64-bit Operating System (OS).
-
PC Assembly Language (Paul A. Carter)
The purpose of this book is to give the reader a better understanding of how computers really work at a lower level than in programming languages like Pascal. It has extensive coverage of interfacing assembly and C code.
-
Assembly Language Succinctly (Chris Rose)
You'll learn how to write x64 assembly for modern CPUs, first by writing inline assembly for 32-bit applications, and then writing native assembly for C++ projects, and the basics of memory spaces, data segments, CISC instructions, SIMD instructions, and much more.
-
The Art of Assembly Language (Randall Hyde)
This book presents assembly language from the high-level programmer's point of view, so you can start writing meaningful programs within days. It provides a comprehensive, plain-English, and patient introduction to assembly for non-assembly programmers.
-
Programming from the Ground Up: Linux Assembly Language
This book uses Linux assembly language to teach new programmers the most important concepts in programming. It starts by teaching how the computer works under the hood, so that the programmer will have a sufficient background to be successful.
:
|
|