emacs.d/clones/lisp/llthw.common-lisp.dev/3-06-00-reverse-engineering.html

1894 lines
47 KiB
HTML
Raw Normal View History

2022-08-24 19:36:32 +02:00
<!DOCTYPE HTML>
<html lang="" >
<head>
<meta charset="UTF-8">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>Reverse Engineering · Learn Lisp The Hard Way</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="description" content="">
<meta name="generator" content="GitBook 3.2.3">
<meta name="author" content=""the Phoeron" Colin J.E. Lupton">
<link rel="stylesheet" href="gitbook/style.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-hints/plugin-hints.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-folding-chapters/folding-chapters.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-highlight/website.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-search/search.css">
<link rel="stylesheet" href="gitbook/gitbook-plugin-fontsettings/website.css">
<meta name="HandheldFriendly" content="true"/>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="gitbook/images/apple-touch-icon-precomposed-152.png">
<link rel="shortcut icon" href="gitbook/images/favicon.ico" type="image/x-icon">
<link rel="next" href="3-07-00-graphics.html" />
<link rel="prev" href="3-05-00-system-utils.html" />
</head>
<body>
<div class="book">
<div class="book-summary">
<div id="book-search-input" role="search">
<input type="text" placeholder="Type to search" />
</div>
<nav role="navigation">
<ul class="summary">
<li class="header">LEARN LISP THE HARD WAY</li>
<li class="chapter " data-level="1.1" data-path="./">
<a href="index.html">
Second Draft (in-progress)
</a>
</li>
<li class="chapter " data-level="1.2" data-path="CHANGELOG.html">
<a href="CHANGELOG.html">
CHANGELOG
</a>
</li>
<li class="chapter " data-level="1.3" data-path="TODO.html">
<a href="TODO.html">
TODO
</a>
</li>
<li class="header">PREFACE</li>
<li class="chapter " data-level="2.1" data-path="preface.html">
<a href="preface.html">
TANSTAAFL
</a>
</li>
<li class="chapter " data-level="2.2" data-path="preface-part-two.html">
<a href="preface-part-two.html">
The Hard Way is Easier
</a>
</li>
<li class="chapter " data-level="2.3" data-path="preface-part-three.html">
<a href="preface-part-three.html">
Who Is This Book For?
</a>
</li>
<li class="chapter " data-level="2.4" data-path="introduction.html">
<a href="introduction.html">
Lisp: A Future History
</a>
</li>
<li class="chapter " data-level="2.5" data-path="acknowledgements.html">
<a href="acknowledgements.html">
Acknowledgements
</a>
</li>
<li class="header">PART ONE</li>
<li class="chapter " data-level="3.1" data-path="1-0-0-overview.html">
<a href="1-0-0-overview.html">
Grokking Lisp
</a>
<ul class="articles">
<li class="chapter " data-level="3.1.1" data-path="1-01-00-lisp-bootcamp.html">
<a href="1-01-00-lisp-bootcamp.html">
Common Lisp Bootcamp
</a>
<ul class="articles">
<li class="chapter " data-level="3.1.1.1" data-path="1-01-01-syntax-overview.html">
<a href="1-01-01-syntax-overview.html">
Syntax Overview in 5 Minutes
</a>
</li>
<li class="chapter " data-level="3.1.1.2" data-path="1-01-02-repl.html">
<a href="1-01-02-repl.html">
The REPL
</a>
</li>
<li class="chapter " data-level="3.1.1.3" data-path="1-01-03-expressions.html">
<a href="1-01-03-expressions.html">
Expressions, Parentheses, and Return Values
</a>
</li>
<li class="chapter " data-level="3.1.1.4" data-path="1-01-04-lists-cons-cells.html">
<a href="1-01-04-lists-cons-cells.html">
Lists, Cons-Cells, and Memory
</a>
</li>
<li class="chapter " data-level="3.1.1.5" data-path="1-01-05-symbols.html">
<a href="1-01-05-symbols.html">
Symbols and Namespaces
</a>
</li>
<li class="chapter " data-level="3.1.1.6" data-path="1-01-06-prefix-notation.html">
<a href="1-01-06-prefix-notation.html">
Prefix Notation
</a>
</li>
<li class="chapter " data-level="3.1.1.7" data-path="1-01-07-style-guide.html">
<a href="1-01-07-style-guide.html">
Common Lisp Style Guide
</a>
</li>
<li class="chapter " data-level="3.1.1.8" data-path="1-01-08-configuration.html">
<a href="1-01-08-configuration.html">
Configuring Your Development Environment
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="3.1.2" data-path="1-02-00-input-output.html">
<a href="1-02-00-input-output.html">
Printing, Streams, and Strings
</a>
<ul class="articles">
<li class="chapter " data-level="3.1.2.1" data-path="1-02-01-strings.html">
<a href="1-02-01-strings.html">
Strings
</a>
</li>
<li class="chapter " data-level="3.1.2.2" data-path="1-02-02-more-strings.html">
<a href="1-02-02-more-strings.html">
More Strings
</a>
</li>
<li class="chapter " data-level="3.1.2.3" data-path="1-02-03-unicode.html">
<a href="1-02-03-unicode.html">
Unicode and Strings
</a>
</li>
<li class="chapter " data-level="3.1.2.4" data-path="1-02-04-chars.html">
<a href="1-02-04-chars.html">
Characters
</a>
</li>
<li class="chapter " data-level="3.1.2.5" data-path="1-02-05-more-chars.html">
<a href="1-02-05-more-chars.html">
More Characters
</a>
</li>
<li class="chapter " data-level="3.1.2.6" data-path="1-02-06-char-codes.html">
<a href="1-02-06-char-codes.html">
Character Codes
</a>
</li>
<li class="chapter " data-level="3.1.2.7" data-path="1-02-07-strings-from-chars.html">
<a href="1-02-07-strings-from-chars.html">
Strings from Chars
</a>
</li>
<li class="chapter " data-level="3.1.2.8" data-path="1-02-08-printing.html">
<a href="1-02-08-printing.html">
Printing
</a>
</li>
<li class="chapter " data-level="3.1.2.9" data-path="1-02-09-more-printing.html">
<a href="1-02-09-more-printing.html">
More Printing
</a>
</li>
<li class="chapter " data-level="3.1.2.10" data-path="1-02-10-prin1.html">
<a href="1-02-10-prin1.html">
Printing With prin1
</a>
</li>
<li class="chapter " data-level="3.1.2.11" data-path="1-02-11-princ.html">
<a href="1-02-11-princ.html">
Printing With princ
</a>
</li>
<li class="chapter " data-level="3.1.2.12" data-path="1-02-12-format.html">
<a href="1-02-12-format.html">
A Brief Introduction to Format
</a>
</li>
<li class="chapter " data-level="3.1.2.13" data-path="1-02-13-more-format.html">
<a href="1-02-13-more-format.html">
A Little Bit More on Format
</a>
</li>
<li class="chapter " data-level="3.1.2.14" data-path="1-02-14-pathnames.html">
<a href="1-02-14-pathnames.html">
Pathnames
</a>
</li>
<li class="chapter " data-level="3.1.2.15" data-path="1-02-15-streams.html">
<a href="1-02-15-streams.html">
Streams
</a>
</li>
<li class="chapter " data-level="3.1.2.16" data-path="1-02-16-file-streams.html">
<a href="1-02-16-file-streams.html">
File Streams
</a>
</li>
<li class="chapter " data-level="3.1.2.17" data-path="1-02-17-binary-streams.html">
<a href="1-02-17-binary-streams.html">
Binary Streams
</a>
</li>
<li class="chapter " data-level="3.1.2.18" data-path="1-02-18-prompting-users.html">
<a href="1-02-18-prompting-users.html">
Prompting Users
</a>
</li>
<li class="chapter " data-level="3.1.2.19" data-path="1-02-19-pretty-printing.html">
<a href="1-02-19-pretty-printing.html">
Pretty-Printing
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="3.1.3" data-path="1-03-0-getting-input-from-users.html">
<a href="1-03-0-getting-input-from-users.html">
Extra Credit: Getting Input from Users
</a>
</li>
<li class="chapter " data-level="3.1.4" data-path="1-04-0-lists.html">
<a href="1-04-0-lists.html">
Lists and List-Operations
</a>
</li>
<li class="chapter " data-level="3.1.5" data-path="1-05-0-lookups-trees.html">
<a href="1-05-0-lookups-trees.html">
Extra Credit: Look-up Lists and Trees
</a>
</li>
<li class="chapter " data-level="3.1.6" data-path="1-06-0-math.html">
<a href="1-06-0-math.html">
Numbers and Math
</a>
<ul class="articles">
<li class="chapter " data-level="3.1.6.1" data-path="1-06-01-integers.html">
<a href="1-06-01-integers.html">
Integers
</a>
</li>
<li class="chapter " data-level="3.1.6.2" data-path="1-06-02-more-integers.html">
<a href="1-06-02-more-integers.html">
More Integers
</a>
</li>
<li class="chapter " data-level="3.1.6.3" data-path="1-06-03-hexadecimal-notation.html">
<a href="1-06-03-hexadecimal-notation.html">
Hexadecimal Integer Notation
</a>
</li>
<li class="chapter " data-level="3.1.6.4" data-path="1-06-04-octal-notation.html">
<a href="1-06-04-octal-notation.html">
Octal Integer Notation
</a>
</li>
<li class="chapter " data-level="3.1.6.5" data-path="1-06-05-binary-notation.html">
<a href="1-06-05-binary-notation.html">
Binary Integer Notation
</a>
</li>
<li class="chapter " data-level="3.1.6.6" data-path="1-06-06-ratios.html">
<a href="1-06-06-ratios.html">
Ratios and Rational Numbers
</a>
</li>
<li class="chapter " data-level="3.1.6.7" data-path="1-06-07-floating-point.html">
<a href="1-06-07-floating-point.html">
Floating-point Numbers
</a>
</li>
<li class="chapter " data-level="3.1.6.8" data-path="1-06-08-constants.html">
<a href="1-06-08-constants.html">
Numeric Constants
</a>
</li>
<li class="chapter " data-level="3.1.6.9" data-path="1-06-09-complex-numbers.html">
<a href="1-06-09-complex-numbers.html">
Complex Numbers
</a>
</li>
<li class="chapter " data-level="3.1.6.10" data-path="1-06-10-arithmetic.html">
<a href="1-06-10-arithmetic.html">
Arithmetic
</a>
</li>
<li class="chapter " data-level="3.1.6.11" data-path="1-06-11-more-arithmetic.html">
<a href="1-06-11-more-arithmetic.html">
More Arithmetic
</a>
</li>
<li class="chapter " data-level="3.1.6.12" data-path="1-06-12-even-more-arithmetic.html">
<a href="1-06-12-even-more-arithmetic.html">
Even More Arithmetic
</a>
</li>
<li class="chapter " data-level="3.1.6.13" data-path="1-06-13-exponents.html">
<a href="1-06-13-exponents.html">
Exponents
</a>
</li>
<li class="chapter " data-level="3.1.6.14" data-path="1-06-14-logarithms.html">
<a href="1-06-14-logarithms.html">
Logarithms
</a>
</li>
<li class="chapter " data-level="3.1.6.15" data-path="1-06-15-trigonometry.html">
<a href="1-06-15-trigonometry.html">
Trigonometry
</a>
</li>
<li class="chapter " data-level="3.1.6.16" data-path="1-06-16-psuedorandom-numbers.html">
<a href="1-06-16-psuedorandom-numbers.html">
Pseudo-Random Numbers
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="3.1.7" data-path="1-07-0-arrays.html">
<a href="1-07-0-arrays.html">
Extra Credit: Arrays and Vectors
</a>
</li>
<li class="chapter " data-level="3.1.8" data-path="1-08-0-variables.html">
<a href="1-08-0-variables.html">
Variables, Parameters, and Constants
</a>
</li>
<li class="chapter " data-level="3.1.9" data-path="1-09-0-closures.html">
<a href="1-09-0-closures.html">
Extra Credit: Closures
</a>
</li>
<li class="chapter " data-level="3.1.10" data-path="1-10-0-functions.html">
<a href="1-10-0-functions.html">
Functions and Macros
</a>
</li>
<li class="chapter " data-level="3.1.11" data-path="1-11-0-text-adventure.html">
<a href="1-11-0-text-adventure.html">
Extra Credit: A Simple Text Adventure
</a>
</li>
<li class="chapter " data-level="3.1.12" data-path="1-12-0-namespaces.html">
<a href="1-12-0-namespaces.html">
Namespaces, Symbols, Packages, and Systems
</a>
</li>
<li class="chapter " data-level="3.1.13" data-path="1-13-0-simple-web-app.html">
<a href="1-13-0-simple-web-app.html">
Extra Credit: A Simple Web Application
</a>
</li>
<li class="chapter " data-level="3.1.14" data-path="1-14-0-conditionals.html">
<a href="1-14-0-conditionals.html">
Conditionals
</a>
</li>
<li class="chapter " data-level="3.1.15" data-path="1-15-0-command-line-utility.html">
<a href="1-15-0-command-line-utility.html">
Extra Credit: Command-Line Utilities
</a>
</li>
<li class="chapter " data-level="3.1.16" data-path="1-16-0-map-loop.html">
<a href="1-16-0-map-loop.html">
Mapping and Looping
</a>
</li>
<li class="chapter " data-level="3.1.17" data-path="1-17-0-iterate.html">
<a href="1-17-0-iterate.html">
Extra Credit: Revisiting Loops with Iterate
</a>
</li>
<li class="chapter " data-level="3.1.18" data-path="1-18-0-format.html">
<a href="1-18-0-format.html">
Format Strings
</a>
</li>
<li class="chapter " data-level="3.1.19" data-path="1-19-0-dsl.html">
<a href="1-19-0-dsl.html">
Extra Credit: Domain Specific Languages
</a>
</li>
<li class="chapter " data-level="3.1.20" data-path="1-20-0-review.html">
<a href="1-20-0-review.html">
Part One in Review
</a>
</li>
</ul>
</li>
<li class="header">PART TWO</li>
<li class="chapter " data-level="4.1" data-path="2-0-0-overview.html">
<a href="2-0-0-overview.html">
The Suffusion of Blue
</a>
<ul class="articles">
<li class="chapter " data-level="4.1.1" data-path="2-01-0-programming-paradigms.html">
<a href="2-01-0-programming-paradigms.html">
Programming Paradigms
</a>
</li>
<li class="chapter " data-level="4.1.2" data-path="2-02-0-regex.html">
<a href="2-02-0-regex.html">
Extra Credit: Regular Expressions
</a>
</li>
<li class="chapter " data-level="4.1.3" data-path="2-03-0-objects-control.html">
<a href="2-03-0-objects-control.html">
Objects and Control Structures
</a>
</li>
<li class="chapter " data-level="4.1.4" data-path="2-04-0-data-persistence.html">
<a href="2-04-0-data-persistence.html">
Extra Credit: Persistence and Databases
</a>
</li>
<li class="chapter " data-level="4.1.5" data-path="2-05-0-extended-types.html">
<a href="2-05-0-extended-types.html">
Extended Types
</a>
</li>
<li class="chapter " data-level="4.1.6" data-path="2-06-0-threads-memos-parallel.html">
<a href="2-06-0-threads-memos-parallel.html">
Extra Credit: Concurrency and Memoization
</a>
</li>
<li class="chapter " data-level="4.1.7" data-path="2-07-0-logic-and-more-math.html">
<a href="2-07-0-logic-and-more-math.html">
Logic and Advanced Math
</a>
</li>
<li class="chapter " data-level="4.1.8" data-path="2-08-0-number-theory.html">
<a href="2-08-0-number-theory.html">
Extra Credit: Number Theory
</a>
</li>
<li class="chapter " data-level="4.1.9" data-path="2-09-0-binary-octets-bits.html">
<a href="2-09-0-binary-octets-bits.html">
Binary Streams, Octet-Vectors, and Bit-Vectors
</a>
</li>
<li class="chapter " data-level="4.1.10" data-path="2-10-0-improved-text-adventure-engine.html">
<a href="2-10-0-improved-text-adventure-engine.html">
Extra Credit: An Improved Text Adventure Engine
</a>
</li>
<li class="chapter " data-level="4.1.11" data-path="2-11-0-conditions.html">
<a href="2-11-0-conditions.html">
Conditions and Error Handling
</a>
</li>
<li class="chapter " data-level="4.1.12" data-path="2-12-0-2d-game.html">
<a href="2-12-0-2d-game.html">
Extra Credit: Write a 2D Game
</a>
</li>
<li class="chapter " data-level="4.1.13" data-path="2-13-0-compiler.html">
<a href="2-13-0-compiler.html">
The Compiler
</a>
</li>
<li class="chapter " data-level="4.1.14" data-path="2-14-0-tree-shaker.html">
<a href="2-14-0-tree-shaker.html">
Extra Credit: Write a Tree-Shaker
</a>
</li>
<li class="chapter " data-level="4.1.15" data-path="2-15-0-docs-and-inspection.html">
<a href="2-15-0-docs-and-inspection.html">
Documentation and Inspection
</a>
</li>
<li class="chapter " data-level="4.1.16" data-path="2-16-0-foreign-libs.html">
<a href="2-16-0-foreign-libs.html">
Extra Credit: Foreign Libraries in Lisp
</a>
</li>
<li class="chapter " data-level="4.1.17" data-path="2-17-0-debugging-testing.html">
<a href="2-17-0-debugging-testing.html">
Debugging and Unit Testing
</a>
</li>
<li class="chapter " data-level="4.1.18" data-path="2-18-0-ffi.html">
<a href="2-18-0-ffi.html">
Extra Credit: Write a Foreign Function Interface
</a>
</li>
<li class="chapter " data-level="4.1.19" data-path="2-19-0-essential-libs.html">
<a href="2-19-0-essential-libs.html">
Essential Lisp Libraries
</a>
</li>
<li class="chapter " data-level="4.1.20" data-path="2-20-0-packaging-libs.html">
<a href="2-20-0-packaging-libs.html">
Extra Credit: Packaging Lisp Libraries
</a>
</li>
<li class="chapter " data-level="4.1.21" data-path="2-21-0-review.html">
<a href="2-21-0-review.html">
Detailed Syntax Review
</a>
</li>
</ul>
</li>
<li class="header">PART THREE</li>
<li class="chapter " data-level="5.1" data-path="3-00-00-overview.html">
<a href="3-00-00-overview.html">
Lisp So(u)rcery
</a>
<ul class="articles">
<li class="chapter " data-level="5.1.1" data-path="3-01-00-web-apps.html">
<a href="3-01-00-web-apps.html">
Real-world Web Apps
</a>
</li>
<li class="chapter " data-level="5.1.2" data-path="3-02-00-typesetting.html">
<a href="3-02-00-typesetting.html">
Typesetting
</a>
</li>
<li class="chapter " data-level="5.1.3" data-path="3-03-00-mobile.html">
<a href="3-03-00-mobile.html">
Native Mobile Applications
</a>
</li>
<li class="chapter " data-level="5.1.4" data-path="3-04-00-gui.html">
<a href="3-04-00-gui.html">
Cross-platform Desktop Applications
</a>
</li>
<li class="chapter " data-level="5.1.5" data-path="3-05-00-system-utils.html">
<a href="3-05-00-system-utils.html">
Drivers, Daemons, and System-Utilities
</a>
</li>
<li class="chapter active" data-level="5.1.6" data-path="3-06-00-reverse-engineering.html">
<a href="3-06-00-reverse-engineering.html">
Reverse Engineering
</a>
</li>
<li class="chapter " data-level="5.1.7" data-path="3-07-00-graphics.html">
<a href="3-07-00-graphics.html">
Graphics Rendering
</a>
</li>
<li class="chapter " data-level="5.1.8" data-path="3-08-00-gaming.html">
<a href="3-08-00-gaming.html">
OpenGL, SDL, and 3D Game Development
</a>
</li>
<li class="chapter " data-level="5.1.9" data-path="3-09-00-audio.html">
<a href="3-09-00-audio.html">
Audio Generation and Manipulation
</a>
</li>
<li class="chapter " data-level="5.1.10" data-path="3-10-00-data.html">
<a href="3-10-00-data.html">
Data Aggregation and Analysis
</a>
</li>
<li class="chapter " data-level="5.1.11" data-path="3-11-00-cryptosec.html">
<a href="3-11-00-cryptosec.html">
Cryptography and Security
</a>
</li>
<li class="chapter " data-level="5.1.12" data-path="3-12-00-fintech.html">
<a href="3-12-00-fintech.html">
Financial Software and Crypto-Currencies
</a>
</li>
<li class="chapter " data-level="5.1.13" data-path="3-13-00-scientific-computing.html">
<a href="3-13-00-scientific-computing.html">
Scientific Computing
</a>
</li>
<li class="chapter " data-level="5.1.14" data-path="3-14-00-computational-physics.html">
<a href="3-14-00-computational-physics.html">
Computational Physics
</a>
</li>
<li class="chapter " data-level="5.1.15" data-path="3-15-00-quantum-computing.html">
<a href="3-15-00-quantum-computing.html">
Quantum Computing
</a>
</li>
<li class="chapter " data-level="5.1.16" data-path="3-16-00-nlp.html">
<a href="3-16-00-nlp.html">
Natural Language Processing
</a>
</li>
<li class="chapter " data-level="5.1.17" data-path="3-17-00-ai.html">
<a href="3-17-00-ai.html">
Artificial Intelligence
</a>
</li>
<li class="chapter " data-level="5.1.18" data-path="3-18-00-robotics.html">
<a href="3-18-00-robotics.html">
Robotics
</a>
</li>
<li class="chapter " data-level="5.1.19" data-path="3-19-00-space-tech.html">
<a href="3-19-00-space-tech.html">
Space Tech
</a>
</li>
<li class="chapter " data-level="5.1.20" data-path="3-20-00-neurotech.html">
<a href="3-20-00-neurotech.html">
Neuroscience and Thought-Controlled Computing
</a>
</li>
<li class="chapter " data-level="5.1.21" data-path="3-21-00-lispos.html">
<a href="3-21-00-lispos.html">
A Simple LispOS
</a>
</li>
<li class="chapter " data-level="5.1.22" data-path="3-22-00-lisp-machine.html">
<a href="3-22-00-lisp-machine.html">
Build Your Own Lisp Machine
</a>
</li>
<li class="chapter " data-level="5.1.23" data-path="3-23-00-gov-mil.html">
<a href="3-23-00-gov-mil.html">
Government and Military Grade Systems
</a>
</li>
</ul>
</li>
<li class="divider"></li>
<li>
<a href="https://www.gitbook.com" target="blank" class="gitbook-link">
Published with GitBook
</a>
</li>
</ul>
</nav>
</div>
<div class="book-body">
<div class="body-inner">
<div class="book-header" role="navigation">
<!-- Title -->
<h1>
<i class="fa fa-circle-o-notch fa-spin"></i>
<a href="index.html" >Reverse Engineering</a>
</h1>
</div>
<div class="page-wrapper" tabindex="-1" role="main">
<div class="page-inner">
<div id="book-search-results">
<div class="search-noresults">
<section class="normal markdown-section">
<h1 id="chapter-36">Chapter 3.6</h1>
<h2 id="reverse-engineering">Reverse Engineering</h2>
<blockquote>
<p>&quot;Aside from a cold appreciation of my own genius I felt that I was a modest man.&quot;</p>
<footer>Robert A. Heinlein, <em>Double Star</em></footer>
</blockquote>
<p><strong>Disclaimer:</strong> <em>Reverse engineering commercially licensed software may subject you to criminal prosecution. The material in this chapter is presented for informational purposes only, to aid in the authorized porting of software to the Common Lisp language, and the recovery of lost source code by the owners of the software; its use for criminal activities, including but not limited to, intellectual property theft, and circumvention of software authorization and digital-rights management protocols, in violation of the license agreements of commercial software and other digital assets is strictly prohibited.</em></p>
<p>Reverse Engineering is an art, more than a science---that being said, it is also a highly skilled area that requires a deep understanding of all aspects of computer science. While this chapter will cover the essential techniques to reverse engineer software using the Common Lisp language, it does not attempt to teach the methodology or theory behind reverse engineering. For a complete, general introduction to the subject, please see the Resources section for texts related to this area.</p>
<p>In this chapter we will explore the structure of binary applications as output by various compilers, the features available across the most popular reverse engineering tools, and what Lisp offers that other tools don&apos;t. We will then tackle the specific reverse engineering tasks to progressively migrate a closed-source application to Lisp by parsing <code>objdump</code> files, generating header files (for software compiled from C/C++), parsing common patterns in Assembly Language to create low-level Lisp code, and then wrapping up everything together to generate high-level Lisp code that can be used to maintain and compile a new version of the reverse engineered software.</p>
<h3 id="exercise-361">Exercise 3.6.1</h3>
<p><strong>OBJDUMP: Dumping Binaries as Assembly</strong></p>
<pre><code class="lang-lisp">
</code></pre>
<h3 id="exercise-362">Exercise 3.6.2</h3>
<p><strong>Operating System Kernels</strong></p>
<pre><code class="lang-lisp">
</code></pre>
<h3 id="exercise-363">Exercise 3.6.3</h3>
<p><strong>x86 Assembly</strong></p>
<pre><code class="lang-lisp">
</code></pre>
<h3 id="exercise-364">Exercise 3.6.4</h3>
<p><strong>x86-64 Assembly</strong></p>
<pre><code class="lang-lisp">
</code></pre>
<h3 id="exercise-365">Exercise 3.6.5</h3>
<p><strong>Stripped Binaries</strong></p>
<pre><code class="lang-lisp">
</code></pre>
<h3 id="exercise-366">Exercise 3.6.6</h3>
<p><strong>(Re)Generating Header Files</strong></p>
<pre><code class="lang-lisp">
</code></pre>
<h3 id="exercise-367">Exercise 3.6.7</h3>
<p><strong>Obfuscation and Deobfuscation</strong></p>
<pre><code class="lang-lisp">
</code></pre>
<h3 id="exercise-368">Exercise 3.6.8</h3>
<p><strong>Finding Compiler Patterns</strong></p>
<pre><code class="lang-lisp">
</code></pre>
<h3 id="exercise-369">Exercise 3.6.9</h3>
<p><strong>Transforming Assembly to Low-Level Lisp</strong></p>
<pre><code class="lang-lisp">
</code></pre>
<h3 id="exercise-3610">Exercise 3.6.10</h3>
<p><strong>High-Level Transformations</strong></p>
<pre><code class="lang-lisp">
</code></pre>
<h3 id="project-3611">Project 3.6.11</h3>
<p><strong>A Reverse Engineering Toolkit</strong></p>
<pre><code class="lang-lisp">
</code></pre>
</section>
</div>
<div class="search-results">
<div class="has-results">
<h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
<ul class="search-results-list"></ul>
</div>
<div class="no-results">
<h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
</div>
</div>
</div>
</div>
</div>
</div>
<a href="3-05-00-system-utils.html" class="navigation navigation-prev " aria-label="Previous page: Drivers, Daemons, and System-Utilities">
<i class="fa fa-angle-left"></i>
</a>
<a href="3-07-00-graphics.html" class="navigation navigation-next " aria-label="Next page: Graphics Rendering">
<i class="fa fa-angle-right"></i>
</a>
</div>
<script>
var gitbook = gitbook || [];
gitbook.push(function() {
gitbook.page.hasChanged({"page":{"title":"Reverse Engineering","level":"5.1.6","depth":2,"next":{"title":"Graphics Rendering","level":"5.1.7","depth":2,"path":"3-07-00-graphics.md","ref":"./3-07-00-graphics.md","articles":[]},"previous":{"title":"Drivers, Daemons, and System-Utilities","level":"5.1.5","depth":2,"path":"3-05-00-system-utils.md","ref":"./3-05-00-system-utils.md","articles":[]},"dir":"ltr"},"config":{"plugins":["hints","folding-chapters"],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"hints":{"danger":"fa fa-exclamation-circle","info":"fa fa-info-circle","tip":"fa fa-mortar-board","working":"fa fa-wrench"},"folding-chapters":{},"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","author":"\"the Phoeron\" Colin J.E. Lupton","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"index.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"Learn Lisp The Hard Way","gitbook":"*"},"file":{"path":"3-06-00-reverse-engineering.md","mtime":"2022-08-23T00:01:55.636Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2022-08-24T16:15:01.957Z"},"basePath":".","book":{"language":""}});
});
</script>
</div>
<script src="gitbook/gitbook.js"></script>
<script src="gitbook/theme.js"></script>
<script src="gitbook/gitbook-plugin-folding-chapters/folding-chapters.js"></script>
<script src="gitbook/gitbook-plugin-search/search-engine.js"></script>
<script src="gitbook/gitbook-plugin-search/search.js"></script>
<script src="gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
<script src="gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
<script src="gitbook/gitbook-plugin-sharing/buttons.js"></script>
<script src="gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
</body>
</html>