forked from wangyif2/RE-for-beginners
-
Notifications
You must be signed in to change notification settings - Fork 0
/
tools.tex
267 lines (234 loc) · 9.86 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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
\part{%
\RU{Инструменты}%
\EN{Tools}%
\ES{Herramientas}%
\PTBRph{}%
\DEph{}\PLph{}%
\ITAph{}%
}
\chapter{%
\RU{Дизассемблер}%
\EN{Disassembler}%
\ES{Desensamblador}%
\PTBRph{}%
\DEph{}\PLph{}%
\ITAph{}%
}
\section{IDA}
\label{IDA}
\RU{Старая бесплатная версия доступна для скачивания}%
\EN{An older freeware version is available for download}%
\ES{Una versi\'on freeware anterior est\'a disponible para descargar}%
\PTBRph{}%
\DEph{}\PLph{}%
\ITAph{}
\footnote{\href{http://go.yurichev.com/17031}{hex-rays.com/products/ida/support/download\_freeware.shtml}}.
\ifx\LITE\undefined
\ShortHotKeyCheatsheet: \myref{sec:IDA_cheatsheet}
\fi
\chapter{%
\RU{Отладчик}%
\EN{Debugger}%
\ES{Depurador}%
\PTBRph{}%
\DEph{}\PLph{}%
\ITAph{}%
}
\ifdefined\IncludeOlly
\section{\olly}
\index{\olly}
\RU{Очень популярный отладчик пользовательской среды win32:}%
\EN{Very popular user-mode win32 debugger:}%
\ES{Un depurador muy popular para win32 en modo usuario:}%
\PTBRph{}%
\DEph{}\PLph{}%
\ITAph{}
\par \href{http://go.yurichev.com/17032}{ollydbg.de}.
\ShortHotKeyCheatsheet: \myref{sec:Olly_cheatsheet}
\fi
\ifdefined\IncludeGDB
\section{GDB}
\index{GDB}
\RU{Не очень популярный отладчик у реверсеров, тем не менее, крайне удобный.}%
\EN{Not very popular debugger among reverse engineers, but very comfortable nevertheless.}%
\ES{No es muy popular entre reversers, aunqu es muy c\'omoda.} % even though there's a direct translation for 'reverse engineer', the word commonly used is 'reverser'
\PTBRph{}%
\DEph{}\PLph{}%
\ITAph{}
\RU{Некоторые команды:}%
\EN{Some commands:}%
\ES{Algunos comandos:}%
\PTBRph{}%
\DEph{}\PLph{}%
\ITAph{}
\myref{sec:GDB_cheatsheet}.
\fi
\section{tracer}
\index{tracer}
\label{tracer}
\RU{Автор часто использует}%
\EN{The author often uses}%
\ES{El autor suele utilizar}%
\PTBRph{}%
\DEph{}\PLph{}%
\ITAph{}
\IT{tracer}
\footnote{
\RU{\href{http://go.yurichev.com/17339}{yurichev.com}}%
\EN{\href{http://go.yurichev.com/17338}{yurichev.com}}%
\ES{\href{http://go.yurichev.com/17338}{yurichev.com}}% english link
\PTBRph{}%
\DEph{}\PLph{}%
\ITAph{}
}
\RU{вместо отладчика.}%
\EN{instead of a debugger.}%
\ES{(recurso en ingl\'es) en vez de un depurador.}% we explicitly say that the link is for the english version
\PTBRph{}%
\DEph{}\PLph{}%
\ITAph{}
\RU{Со временем, автор этих строк отказался использовать отладчик, потому что всё что ему нужно от него это иногда подсмотреть
какие-либо аргументы какой-либо функции во время исполнения или состояние регистров в определенном месте.
Каждый раз загружать отладчик для этого это слишком, поэтому родилась очень простая утилита \IT{tracer}.
Она консольная, запускается из командной строки, позволяет перехватывать исполнение функций,
ставить точки останова на произвольные места, смотреть состояние регистров, модифицировать их, \etc{}.}%
\EN{The author of these lines stopped using a debugger eventually, since all he needs from it is to spot function arguments while
executing, or registers state at some point.
Loading a debugger each time is too much, so a small utility called \IT{tracer} was born.
It works from command line, allows intercepting function execution,
setting breakpoints at arbitrary places, reading and changing registers state, \etc{}.}%
\ES{El autor de estas l\'ineas eventualmente dej\'o de utilizar un depurador, ya que lo \'unico que necesita es hallar los argumentos
de las funciones durante la ejecuci\'on, o el estado de los registros en alg\'un punto.
Cargar un depurador en cada ocasi\'on es demasiado, y fue as\'i como naci\'o una utiler\'ia llamada \IT{tracer}.
Funciona a trav\'es de la l\'inea de comandos, permitiendo interceptar la ejecuc\'on de una funci\'on,
colocar breakpoints en lugares arbitrarios, leer y cambiar el estado de los registros, \etc{}.}%
\PTBRph{}%
\DEph{}\PLph{}%
\ITAph{}
\RU{Но для учебы очень полезно трассировать код руками в отладчике, наблюдать как меняются значения регистров
(например, как минимум классический SoftICE, OllyDbg, WinDbg подсвечивают измененные регистры),
флагов, данные, менять их самому, смотреть реакцию, \etc{}.}%
\EN{However, for learning purposes it is highly advisable to trace code in a debugger manually, watch how the registers state
changes (e.g. classic SoftICE, OllyDbg, WinDbg highlight changed registers), flags, data, change them
manually, watch the reaction, \etc{}.}%
\ES{Sin embargo, con fines de aprendizaje es altamente recomendable trazar el c\'odigo manualmente en un depurador,
observar c\'omo cambia el estado de los registros (e.g. los cl\'asicos SoftICE, OllyDbg, WinDbg subrayan los registros modificado),
de las banderas, de los datos, modificarlos, observar la reacci\'on, \etc{}.}%
\PTBRph{}%
\DEph{}\PLph{}%
\ITAph{}
\ifx\LITE\undefined
\chapter{%
\RU{Трассировка системных вызовов}%
\EN{System calls tracing}%
\ES{Trazado de llamadas al sistema}%
\PTBRph{}%
\DEph{}\PLph{}%
\ITAph{}%
}
\label{strace}
\index{strace}
\index{dtruss}
\subsection{strace / dtruss}
\index{syscall}
\RU{Позволяет показать, какие системные вызовы (syscalls(\myref{syscalls})) прямо сейчас вызывает процесс.}%
\EN{It shows which system calls (syscalls(\myref{syscalls})) are called by a process right now.}%
\ES{Muestra cu\'ales llamadas al sistema (llamadas al sistema(\myref{syscalls})) son llamadas por un proceso en este momento.}%
\PTBRph{}%
\DEph{}\PLph{}%
\ITAph{}
\RU{Например:}%
\EN{For example:}%
\EN{Por ejemplo:}%
\PTBRph{}%
\DEph{}\PLph{}%
\ITAph{}
\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 doing the same.}%
\ES{\MacOSX tiene dtruss para hacer lo mismo.}%
\PTBRph{}%
\DEph{}\PLph{}%
\ITAph{}
\index{Cygwin}
\RU{В Cygwin также есть strace, впрочем, насколько известно,
он показывает результаты только для .exe-файлов скомпилированных для среды самого cygwin.}%
\EN{Cygwin also has strace, but as far as it's known, it works only for .exe-files
compiled for the cygwin environment itself.}%
\ES{Cygwin tambi\'en tiene strace, para hasta donde se sabe, s\'olo trabaja con archivos .exe
compilados para el mismo ambiente cygwin.}%
\PTBRph{}%
\DEph{}\PLph{}%
\ITAph{}
\fi
\chapter{%
\RU{Декомпиляторы}%
\EN{Decompilers}%
\ES{Decompiladores}%
\PTBRph{}%
\DEph{}\PLph{}%
\ITAph{}%
}
\RU{Пока существует только один публично доступный декомпилятор в Си высокого качества: Hex-Rays:}%
\EN{There is only one known, publicly available, high-quality decompiler to C code: Hex-Rays:}%
\ES{Existe un solo decompilador a c\'odigo C de alta calidad y disponible p\'ublicamente: Hex-Rays:}%
\par
\href{http://go.yurichev.com/17033}{hex-rays.com/products/decompiler/}
% TODO Java, .NET, VB, etc
\chapter{%
\RU{Прочие инструменты}%
\EN{Other tools}%
\ES{Otras herramientas}%
\PTBRph{}%
\DEph{}\PLph{}%
\ITAph{}%
}
\begin{itemize}
\item
Microsoft Visual Studio Express\footnote{\href{http://go.yurichev.com/17034}{visualstudio.com/en-US/products/visual-studio-express-vs}}:
\RU{Усеченная бесплатная версия Visual Studio, пригодная для простых экспериментов.}%
\EN{Stripped-down free version of Visual Studio, convenient for simple experiments.}%
\ES{La versi\'on m\'inima y gratuita de Visual Studio, conveniente para experimentos sencillos.}%
\PTBRph{}%
\DEph{}\PLph{}%
\ITAph{}
\ifx\LITE\undefined
\RU{Некоторые полезные опции:}%
\EN{Some useful options:}%
\ES{Algunas opciones \'utiles:}%
\PTBRph{}%
\DEph{}\PLph{}%
\ITAph{}
\myref{sec:MSVC_options}.
\fi
\item
\label{Hiew}
Hiew\footnote{\href{http://go.yurichev.com/17035}{hiew.ru}}:
\RU{для мелкой модификации кода в исполняемых файлах.}%
\EN{for small modifications of code in binary files.}%
\ES{para realizar modificaciones de c\'odigo peque\~nas en archivos binarios.}%
\PTBRph{}%
\DEph{}\PLph{}%
\ITAph{}
\item
\index{binary grep}
binary grep:
\RU{небольшая утилита для поиска констант (либо просто последовательности байт)
в большом количестве файлов, включая неисполняемые: \BGREPURL.}%
\EN{a small utility for searching any byte sequence in a big pile of files,
including non-executable ones: \BGREPURL.}%
\ES{una peque\~na utiler\'ia para buscar cualquier secuencia de bytes en un mont\'on de archivos,
incluyendo archivos no ejecutables: \BGREPURL.}%
\PTBRph{}%
\DEph{}\PLph{}%
\ITAph{}
\end{itemize}