forked from wangyif2/RE-for-beginners
-
Notifications
You must be signed in to change notification settings - Fork 0
/
glossary.tex
executable file
·308 lines (269 loc) · 12.5 KB
/
glossary.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
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
\newglossaryentry{tail call}
{
name=\RU{хвостовая рекурсия}\EN{tail call},
description={\RU{Это когда компилятор или интерпретатор превращает рекурсию
(с которой возможно это проделать, т.е., \IT{хвостовую}) в итерацию для эффективности}
\EN{It is when compiler (or interpreter) transforms recursion (with which it is possible: \IT{tail recursion})
into iteration for efficiency}: \url{http://en.wikipedia.org/wiki/Tail_call}}
}
\newglossaryentry{endianness}
{
name=endianness,
description={\RU{Порядок байт}\EN{Byte order}: \ref{sec:endianness}}
}
\newglossaryentry{caller}
{
name=caller,
description={\RU{Ф-ция вызывающая другую ф-цию}\EN{A function calling another}}
}
\newglossaryentry{callee}
{
name=callee,
description={\RU{Вызываемая ф-ция}\EN{A function being called by another}}
}
\newglossaryentry{debuggee}
{
name=debuggee,
description={\RU{Отлаживаемая программа}\EN{A program being debugged}}
}
\newglossaryentry{leaf function}
{
name=leaf function,
description={\RU{Ф-ция не вызывающая больше никаких ф-ций}
\EN{A function which is not calling any other function}}
}
\newglossaryentry{link register}
{
name=link register,
description=(RISC) {\RU{Регистр в котором обычно записан адрес возврата.
Это позволяет вызывать leaf-функции без использования стека, т.е., быстрее.}
\EN{A register where return address is usually stored.
This makes calling leaf functions without stack usage, i.e., faster.}}
}
\newglossaryentry{anti-pattern}
{
name=anti-pattern,
description={\RU{Нечто широко известное как плохое решение}
\EN{Generally considered as bad practice}}
}
\newglossaryentry{stack pointer}
{
name=\RU{указатель стека}\EN{stack pointer},
description={\RU{Регистр указывающий на место в стеке.}
\EN{A register pointing to the place in the stack.}}
}
\newglossaryentry{decrement}
{
name=\RU{декремент}\EN{decrement},
description={\RU{Уменьшение на $1$}\EN{Decrease by $1$}}
}
\newglossaryentry{increment}
{
name=\RU{инкремент}\EN{increment},
description={\RU{Увеличение на $1$}\EN{Increase by $1$}}
}
\newglossaryentry{loop unwinding}
{
name=loop unwinding,
description={\RU{Это когда вместо организации цикла на $n$ итераций, компилятор генерирует $n$ копий тела
цикла, для экономии на инструкциях, обеспечивающих сам цикл}
\EN{It is when a compiler instead of generation loop code of $n$ iteration, generates just $n$ copies of the
loop body, in order to get rid of loop maintenance instructions}}
}
\newglossaryentry{register allocator}
{
name=register allocator,
description={\RU{Ф-ция компилятора распределяющая локальные переменные по регистрам процессора}
\EN{Compiler's function assigning local variables to CPU registers}}
}
\newglossaryentry{quotient}
{
name=\RU{частное}\EN{quotient},
description={\RU{Результат деления}\EN{Division result}}
}
\newglossaryentry{product}
{
name=\RU{произведение}\EN{product},
description={\RU{Результат умножения}\EN{Multiplication result}}
}
\newglossaryentry{NOP}
{
name=NOP,
description={``no operation'', \RU{холостая инструкция}\EN{idle instruction}}
}
\newglossaryentry{POKE}
{
name=POKE,
description={\RU{Инструкция языка BASIC записывающая байт по определенному адресу}
\EN{BASIC language instruction writing byte on specific address}}
}
\newglossaryentry{keygenme}
{
name=keygenme,
description={\RU{Программа, имитирующая защиту вымышленной программы, для которой нужно сделать
генератор ключей/лицензий}\EN{A program which imitates fictional software protection,
for which one needs to make a keys/licenses generator}}
}
\newglossaryentry{dongle}
{
name=dongle,
description={\RU{Небольшое устройство подключаемое к LPT-порту для принтера (в прошлом) или к USB}
\EN{Dongle is a small piece of hardware connected to LPT printer port (in past) or to USB}.
\RU{Исполняло функции security token-а, имела память и, иногда,
секретную (крипто-)хеширующую функцию}
\EN{Its function was akin to security token, it has some memory and, sometimes,
secret (crypto-)hashing algorithm}.}
}
\newglossaryentry{thunk function}
{
name=thunk function,
description={\RU{Крохотная функция делающая только одно: вызывающая другую функцию.}
\EN{Tiny function with a single role: call another function.}}
}
\newglossaryentry{user mode}
{
name=user mode,
description={\RU{Режим CPU с ограниченными возможностями в котором он исполняет прикладное ПО. ср.}
\EN{A restricted CPU mode in which it executes all applied software code. cf.} \gls{kernel mode}.}
}
\newglossaryentry{kernel mode}
{
name=kernel mode,
description={\RU{Режим CPU с неограниченными возможностями в котором он исполняет ядро OS и драйвера. ср.}
\EN{A restrictions-free CPU mode in which it executes OS kernel and drivers. cf.} \gls{user mode}.}
}
\newglossaryentry{Windows NT}
{
name=Windows NT,
description={Windows NT, 2000, XP, Vista, 7, 8}
}
\newglossaryentry{atomic operation}
{
name=atomic operation,
description={
``$\alpha{}\tau{}o\mu{}o\varsigma{}$''
%``atomic''
\RU{означает ``неделимый'' в греческом языке, так что атомарная операция
это операция которая гарантированно не будет прервана другими тредами}
\EN{mean ``indivisible'' in Greek, so atomic operation is what guaranteed not
to be broke up during operation by other threads}}
}
% to be proofreaded (begin)
\newglossaryentry{NaN}
{
name=NaN,
description={
\RU{не число: специальные случаи чисел с плавающей запятой, обычно сигнализирующие об ошибках}
\EN{not a number: special cases of floating point numbers, usually signaling about errors}
}
}
\newglossaryentry{basic block}
{
name=basic block,
description={
\RU{группа инструкций не имеющая инструкций переходов,
а также не имеющая переходов в середину блока извне.
В IDA он выглядит как просто список инструкций без строк-разрывов}
\EN{a group of instructions not having jump/branch instructions, and also not having
jumps inside block from the outside.
In IDA it looks just like as a list of instructions without breaking empty lines}
}
}
\newglossaryentry{NEON}
{
name=NEON,
description={\ac{AKA} ``Advanced SIMD''\EMDASH\ac{SIMD} \RU{от}\EN{from} ARM}
}
\newglossaryentry{reverse engineering}
{
name=reverse engineering,
description={\RU{процесс понимания как устроена некая вещь, иногда, с целью клонирования оной}
\EN{act of understanding, how the thing works, sometimes, in order to clone it}}
}
\newglossaryentry{compiler intrinsic}
{
name=compiler intrinsic,
description={\RU{Специфичная для компилятора ф-ция не являющаяся обычной библиотечной ф-цией.
Компилятор вместо её вызова генерирует определенный машинный код.
Нередко, это псевдофункции для определенной инструкции \ac{CPU}. Читайте больше:}
\EN{A function specific to a compiler which is not usual library function.
Compiler generate a specific machine code instead of call to it.
It is often a pseudofunction for specific \ac{CPU} instruction. Read more:} (\ref{sec:compiler_intrinsic})}
}
\newglossaryentry{heap}
{
name=heap,
description={\RU{(куча) обычно, большой кусок памяти предоставляемый \ac{OS}, так что прикладное ПО может делить его
как захочет. malloc()/free() работают с кучей.}
\EN{usually, a big chunk of memory provided by \ac{OS} so that applications can divide it by themselves as they wish.
malloc()/free() works with heap.}}
}
\newglossaryentry{name mangling}
{
name=name mangling,
description={\RU{применяется как минимум в Си++, где компилятору нужно закодировать имя класса,
метода и типы аргументов в одной
строке, которая будет внутренним именем ф-ции. читайте также здесь}
\EN{used at least in C++, where compiler need to encode name of class, method and argument types in the one string,
which will become internal name of the function. read more here}: \ref{namemangling}}
}
\newglossaryentry{xoring}
{
name=xoring,
description={\RU{нередко применяемое в английском языке, означает применение операции
\ac{XOR}}
\EN{often used in English language, meaning applying \ac{XOR} operation}}
}
\newglossaryentry{security cookie}
{
name=security cookie,
description={\RU{Случайное значение, разное при каждом исполнении. Читайте больше об этом тут}
\EN{A random value, different at each execution. Read more about it}: \ref{subsec:BO_protection}}
}
\newglossaryentry{tracer}
{
name=tracer,
description={\RU{Моя простейшая утилита для отладки. Читайте больше об этом тут}
\EN{My own simple debugging tool. Read more about it}: \ref{tracer}}
}
\newglossaryentry{GiB}
{
name=GiB,
description={\RU{Гибибайт: $2^{30}$ или 1024 мебибайт или 1073741824 байт}
\EN{Gibibyte: $2^{30}$ or 1024 mebibytes or 1073741824 bytes}}
}
\newglossaryentry{CP/M}
{
name=CP/M,
description={Control Program for Microcomputers: \RU{очень простая дисковая \ac{OS} использовавшаяся перед}
\EN{a very basic disk \ac{OS} used before} MS-DOS}
}
\newglossaryentry{stack frame}
{
name=stack frame,
description={\RU{Часть стека, в которой хранится информация связанная с текущей ф-цией: локальные переменные,
аргументы ф-ции, \ac{RA}, итд}\EN{Part of stack containing information specific to the current functions:
local variables, function arguments, \ac{RA}, etc}}
}
\newglossaryentry{jump offset}
{
name=jump offset,
description={\RU{Часть опкода JMP или Jcc инструкции, просто прибавляется к адресу следующей инструкции,
и так вычисляется новый \ac{PC}. Может быть отрицательным.}\EN{a part of JMP or Jcc instruction opcode,
it just to be added to the address
of the next instruction, and thus is how new \ac{PC} is calculated. May be negative as well.}}
}
\newglossaryentry{integral type}
{
name=\RU{интегральный тип данных}\EN{integral data type},
description={\RU{обычные числа, но не с плавающей точкой}
\EN{usual numbers, but not floating point ones}}
}
\newglossaryentry{PDB}
{
name=PDB,
description={(Win32) \RU{Файл с отладочной информацией, обычно просто имена ф-ций,
но иногда имена аргументов ф-ций и локальных переменных}
\EN{Debugging information file, usually just function names, but sometimes also function
arguments and local variables names}}
}