Reverse Engineering for Beginners - D.Yurichev.pdf

(6707 KB) Pobierz
My services
The book you currently see is
free
and is
available in opensource form.
But sometimes I need to do something for money, so
sorry in advance for placing my advertisement right here.
Need documentation?
I could try to write a documentation/reference/manual for some API, language, framework, etc.
Sometimes I’m good at finding concise and clear example for each API/language feature. This book is an example of it. I can
try to do this in long and steady fashion.
On the other side, my English is far from fluent. And I may need a long time for diving deep into product unknown to me.
But I’ll glad to rework existing documentation project.
Example of reference I admire is Wolfram Mathematica one:
http://reference.wolfram.com/language/.
Reverse engineering
I can’t accept full-time job offers, I mostly work remotely on small tasks, like these:
Decrypting a database, managing unknown type of files
Due to NDA agreement, I can’t reveal many details about the last case, but the case in
”Encrypted database case #1”
article
is heavily based on a real case.
Rewriting some kind of old EXE or DLL file back to C/C++
Dongles
Occasionally I do
software copy-protection dongle
replacements or dongle emulators. In general, it is somewhat unlawful
to break software protection, so I can do this only if these conditions are met:
• software company who developed the software product does not exist anymore to my best knowledge;
• the software product is older than 10 years;
• you have a dongle to read information from it. In other words, I can only help to those who still uses some very old
software, completely satisfied with it, but afraid of dongle electrical breakage and there are no company who can still
sell the dongle replacement.
These includes ancient MS-DOS and UNIX software. Software for exotic computer architectures (like MIPS, DEC Alpha, Pow-
erPC) accepted as well.
Examples of my work you may find here:
• My book devoted to reverse engineering has a part about copy-protection dongles:
81.
Finding unknown algorithm using only input/output pairs and Z3 SMT solver article
About MicroPhar (93c46-baseed dongle) emulation in DosBox.
Source code of DOS MicroPhar emulator using EMM386 I/O interception API
Contact me
E-Mail:
dennis(a)yurichev.com
.
Still want to hire reverse engineer/security researcher on full-time basis?
You may try
Reddit RE hiring thread.
There is also Russian-speaking forum with a
section devoted to RE jobs.
i
Reverse Engineering for Beginners
Dennis Yurichev
Reverse Engineering for Beginners
Dennis Yurichev
<dennis(a)yurichev.com>
cba
©2013-2016, Dennis Yurichev.
This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. To view a
copy of this license, visit
https://creativecommons.org/licenses/by-sa/4.0/.
Text version (
September 5, 2016
).
The latest version (and Russian edition) of this text is accessible at
beginners.re.
An e-book reader version is also available
there.
The cover was made by Andy Nechaevsky:
facebook.
i
Call for translators!
You may want to help me with translation this work into languages other than English and Russian. Just send me any piece
of translated text (no matter how short) and I’ll put it into my LaTeX source code.
Speed isn’t important, because this is open-source project, after all. Your name will be mentioned as project contributor.
Korean, Chinese and Persian languages are reserved by publishers. English and Russian versions I do by myself, but my
English is still that horrible, so I’m very grateful for any notes about grammar, etc. Even my Russian is also flawed, so I’m
grateful for notes about Russian text as well!
So do not hesitate to contact me:
dennis(a)yurichev.com
.
ii
Abridged contents
I
II
III
IV
V
VI
VII
VIII
IX
X
XI
Code patterns
Important fundamentals
Slightly more advanced examples
Java
Finding important/interesting stuff in the code
OS-specific
Tools
Examples from practice
Examples of reversing proprietary file formats
Other things
Books/blogs worth reading
1
453
464
631
670
701
757
765
874
906
924
929
931
961
Afterword
Appendix
Acronyms used
iii
Zgłoś jeśli naruszono regulamin