forked from wangyif2/RE-for-beginners
-
Notifications
You must be signed in to change notification settings - Fork 0
/
tools.tex
executable file
·117 lines (87 loc) · 6.18 KB
/
tools.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
\part{\RU{Инструменты}\EN{Tools}}
\chapter{\RU{Дизассемблер}\EN{Disassembler}}
\section{IDA}
\label{IDA}
\RU{Старая бесплатная версия доступна для скачивания}\EN{Older freeware version is available for downloading}
\footnote{\url{http://go.yurichev.com/17031}}.
\ShortHotKeyCheatsheet: \ref{sec:IDA_cheatsheet}
\chapter{\RU{Отладчик}\EN{Debugger}}
\section{tracer}
\index{tracer}
\label{tracer}
\RU{Я использую}\EN{I use} \IT{tracer}\footnote{\EN{\href{http://go.yurichev.com/17338}{yurichev.com}}\RU{\href{http://go.yurichev.com/17339}{yurichev.com}}}
\RU{вместо отладчика}\EN{instead of debugger}.
\RU{Со временем я отказался использовать отладчик, потому что все что мне нужно от него: это иногда подсмотреть
какие-либо аргументы какой-либо функции во время исполнения или состояние регистров в определенном месте.
Каждый раз загружать отладчик для этого это слишком, поэтому я написал очень простую утилиту \IT{tracer}.
Она консольная, запускается из командной строки, позволяет перехватывать исполнение функций,
ставить брякпойнты на произвольные места, смотреть состояние регистров, модифицировать их, и так далее.}
\EN{I stopped to use debugger eventually, since all I need from it is to spot a function's arguments while
execution, or registers' state at some point.
To load debugger each time is too much, so I wrote a small utility \IT{tracer}.
It has console-interface, working from command-line, enable us to intercept function execution,
set breakpoints at arbitrary places, spot registers' state, modify it, etc.}
\RU{Но для учебы, очень полезно трассировать код руками в отладчике, наблюдать как меняются значения регистров
(например, как минимум классический SoftICE, OllyDbg, WinDbg подсвечивают измененные регистры),
флагов, данные, менять их самому, смотреть реакцию, и т.д.}
\EN{However, as for learning purposes, it is highly advisable to trace code in debugger manually, watch how register's state
changing (e.g. classic SoftICE, OllyDbg, WinDbg highlighting changed registers), flags, data, change them
manually, watch reaction, etc.}
\section{\olly}
\index{\olly}
\RU{Очень популярный отладчик пользовательской среды win32}\EN{Very popular user-mode win32 debugger}:\\
\url{http://go.yurichev.com/17032}.
\ShortHotKeyCheatsheet: \ref{sec:Olly_cheatsheet}
\section{GDB}
\index{GDB}
\RU{Не очень популярный отладчик у реверсеров, тем не менее, крайне удобный}\EN{Not very popular
debugger among reverse engineers, but very comfortable nevertheless}.
\RU{Некоторые команды}\EN{Some commands}: \ref{sec:GDB_cheatsheet}.
\chapter{\RU{Трассировка системных вызовов}\EN{System calls tracing}}
\label{strace}
\index{strace}
\index{dtruss}
\subsection{strace / dtruss}
\index{syscall}
\RU{Позволяет показать, какие системные вызовы (syscalls(\ref{syscalls})) прямо сейчас вызывает процесс}
\EN{Will show which system calls (syscalls(\ref{syscalls})) are called by process right now}.
\RU{Например}\EN{For example}:
\begin{lstlisting}
# strace df -h
...
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/i386-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220\232\1\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1770984, ...}) = 0
mmap2(NULL, 1780508, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb75b3000
\end{lstlisting}
\index{\MacOSX}
\RU{В \MacOSX для этого же имеется dtruss}\EN{\MacOSX has dtruss for the same aim}.
\index{Cygwin}
\RU{В Cygwin также есть strace, впрочем, если я верно понял,
он показывает результаты только для .exe-файлов скомпилированных для среды самого cygwin}
\EN{The Cygwin also has strace, but if I understood correctly, it works only for .exe-files
compiled for cygwin environment itself}.
\chapter{\RU{Декомпиляторы}\EN{Decompilers}}
\RU{Пока существует только один, публично доступный, декомпилятор в Си высокого качества}
\EN{There are only one known, publically available, high-quality decompiler to C code}: Hex-Rays:\\
\url{http://go.yurichev.com/17033}
% TODO Java, .NET, VB, etc
\chapter{\RU{Прочие инструменты}\EN{Other tools}}
\begin{itemize}
\item
Microsoft Visual Studio Express\footnote{\url{http://go.yurichev.com/17034}}:
\RU{Усеченная бесплатная версия Visual Studio, пригодная для простых экспериментов}
\EN{Stripped-down free Visual Studio version, convenient for simple experiments}.
Some useful options: \ref{sec:MSVC_options}.
\item
\label{Hiew}
Hiew\footnote{\url{http://go.yurichev.com/17035}} \RU{для мелкой модификации кода в исполняемых файлах}
\EN{for small modifications of code in binary files}.
\item
\index{binary grep}
binary grep: \RU{небольшая утилита для поиска констант (либо просто последовательности байт)
в большом кол-ве файлов, включая неисполняемые: \BGREPURL.}
\EN{the small utility for constants searching (or just any byte sequence) in a big pile of files,
including non-executable: \BGREPURL.}
\end{itemize}