forked from wangyif2/RE-for-beginners
-
Notifications
You must be signed in to change notification settings - Fork 0
/
glossary.tex
425 lines (380 loc) · 21.8 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
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
\newglossaryentry{tail call}
{
name=\RU{хвостовая рекурсия}\EN{tail call}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}\FR{tail call},
description={\RU{Это когда компилятор или интерпретатор превращает рекурсию
(с которой возможно это проделать, т.е. \IT{хвостовую}) в итерацию для эффективности}
\EN{It is when the compiler (or interpreter) transforms the recursion (with which it is possible: \IT{tail recursion})
into an iteration for efficiency}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{C'est lorsque le compilateur (ou l'interpréteur) transforme la récursion (ce qui est possible: \IT{tail recursion})
en une itération pour l'efficacité}: \href{http://go.yurichev.com/17105}{wikipedia}}
}
\newglossaryentry{endianness}
{
name=endianness,
description={\RU{Порядок байт}\EN{Byte order}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}\FR{Ordre des octets}: \myref{sec:endianness}}
}
\newglossaryentry{caller}
{
name=caller,
description={\RU{Функция вызывающая другую функцию}\EN{A function calling another}\ESph{}\PTBRph{}\DE{aufrufende Funktion}\PLph{}\ITAph{}
\FR{Une fonction en appelant une autre}}
}
\newglossaryentry{callee}
{
name=callee,
description={\RU{Вызываемая функция}\EN{A function being called by another}\ESph{}\PTBRph{}\DE{aufgerufene Funktion}\PLph{}\ITAph{}
\FR{Une fonction appelée par une autre}}
}
\newglossaryentry{debuggee}
{
name=debuggee,
description={\RU{Отлаживаемая программа}\EN{A program being debugged}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{Un programme en train d'être débogué}}
}
\newglossaryentry{leaf function}
{
name=leaf function,
description={\RU{Функция не вызывающая больше никаких функций}
\EN{A function which does not call any other function}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{Une fonction qui n'appelle pas d'autre fonction}}
}
\newglossaryentry{link register}
{
name=link register,
description=(RISC) {\RU{Регистр в котором обычно записан адрес возврата.
Это позволяет вызывать leaf-функции без использования стека, т.е. быстрее}
\EN{A register where the return address is usually stored.
This makes it possible to call leaf functions without using the stack, i.e., faster}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{Un registre oú l'adresse de retour est en général stockée. Ceci permet
d'appeler une fonction leaf sans utiliser la pile, i.e, plus rapidemment}
}
}
\newglossaryentry{anti-pattern}
{
name=anti-pattern,
description={\RU{Нечто широко известное как плохое решение}
\EN{Generally considered as bad practice}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{En général considéré comme une mauvaise pratique}
}
}
\newglossaryentry{stack pointer}
{
name=\RU{указатель стека}\EN{stack pointer}\FR{pointeur de pile}\ESph{}\PTBRph{}\DE{Stapel-Zeiger}\PLph{}\ITAph{},
description={\RU{Регистр указывающий на место в стеке}
\EN{A register pointing to a place in the stack}\FR{Un registre qui pointe dans la pile}\ESph{}\PTBRph{}\DE{Ein Register das auf eine Stelle im Stack zeigt}\PLph{}\ITAph{}}
}
\newglossaryentry{decrement}
{
name=\RU{декремент}\EN{decrement}\FR{décrémenter}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{},
description={\RU{Уменьшение на 1}\EN{Decrease by 1}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{Décrémenter de 1}
}
}
\newglossaryentry{increment}
{
name=\RU{инкремент}\EN{increment}\FR{incrémenter}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{},
description={\RU{Увеличение на 1}\EN{Increase by 1}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{Incrémenter de 1}
}
}
\newglossaryentry{loop unwinding}
{
name=loop unwinding,
description={\RU{Это когда вместо организации цикла на $n$ итераций, компилятор генерирует $n$ копий тела
цикла, для экономии на инструкциях, обеспечивающих сам цикл}
\EN{It is when a compiler, instead of generating loop code for $n$ iterations, generates just $n$ copies of the
loop body, in order to get rid of the instructions for loop maintenance}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{C'est lorsqu'un compilateur, au lieu de générer du code pour une boucle de
$n$ itérations, génère juste $n$ copies du corps de la boucle, afin de supprimer
les instructions pour la gestion de la boucle}
}
}
\newglossaryentry{register allocator}
{
name=register allocator,
description={\RU{Функция компилятора распределяющая локальные переменные по регистрам процессора}
\EN{The part of the compiler that assigns CPU registers to local variables}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{La partie du compilateur qui assigne des registes du CPU aux variables locales}}
}
\newglossaryentry{quotient}
{
name=\RU{частное}\EN{quotient}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}\FR{quotient},
description={\RU{Результат деления}\EN{Division result}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{Résultat de la division}}
}
\newglossaryentry{product}
{
name=\RU{произведение}\EN{product}\ESph{}\PTBRph{}\DE{Produkt}\PLph{}\ITAph{}\FR{produit},
description={\RU{Результат умножения}\EN{Multiplication result}\ESph{}\PTBRph{}\DE{Ergebnis einer Multiplikation}\PLph{}\ITAph{}
\FR{Résultat d'une multiplication}}
}
\newglossaryentry{NOP}
{
name=NOP,
description={\q{no operation}, \RU{холостая инструкция}\EN{idle instruction}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{instruction ne faisant rien}}
}
\newglossaryentry{POKE}
{
name=POKE,
description={\RU{Инструкция языка BASIC записывающая байт по определенному адресу}
\EN{BASIC language instruction for writing a byte at a specific address}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{instruction du langage BASIC pour écrire un octet a une adresse spécifique}}
}
\newglossaryentry{keygenme}
{
name=keygenme,
description={\RU{Программа, имитирующая защиту вымышленной программы, для которой нужно сделать
генератор ключей/лицензий}\EN{A program which imitates software protection,
for which one needs to make a key/license generator}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{Un programme qui imite la protection des logiciels pour lesquels on a besoin d'un générateur de clef/licence}}
} % TODO clarify: A software which generate key/license value to bypass sotfware protection?
\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}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{Un dongle est un petit périphérique se connectant sur un port d'imprimante LPT (par le passé) ou USB}.
\RU{Исполняло функции security token-а, имела память и, иногда,
секретную (крипто-)хеширующую функцию}\EN{Its function was similar to a security token,
it has some memory and, sometimes, a secret (crypto-)hashing algorithm}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}i
\FR{Sa fonction est similaire au tokens de sécurité, il y a de la mémoire et, parfois, un algorithme secret de (crypto-)hachage.}}
}
\newglossaryentry{thunk function}
{
name=thunk function,
description={\RU{Крохотная функция делающая только одно: вызывающая другую функцию}
\EN{Tiny function with a single role: call another function}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{Minuscule fonction qui a un seul rôle: appeler une autre fonction}}
}
\newglossaryentry{user mode}
{
name=user mode,
description={\RU{Режим CPU с ограниченными возможностями в котором он исполняет прикладное ПО. ср.}
\EN{A restricted CPU mode in which it all application software code is executed. cf.}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{Un mode CPU restreint dans lequel tout le code des applications est exécuté. cf.} \gls{kernel mode}}
}
\newglossaryentry{kernel mode}
{
name=kernel mode,
description={\RU{Режим CPU с неограниченными возможностями в котором он исполняет ядро OS и драйвера. ср.}
\EN{A restrictions-free CPU mode in which the OS kernel and drivers execute. cf.}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{Un mode CPU sans restriction dans lequel le noyaux de l'OS et les drivers sont exécutés. cf.} \gls{user mode}}
}
\newglossaryentry{Windows NT}
{
name=Windows NT,
description={Windows NT, 2000, XP, Vista, 7, 8, 10}
}
\newglossaryentry{atomic operation}
{
name=atomic operation,
description={
\q{$\alpha{}\tau{}o\mu{}o\varsigma{}$}
%\q{atomic}
\RU{означает \q{неделимый} в греческом языке, так что атомарная операция ---
это операция которая гарантированно не будет прервана другими тредами}
\EN{stands for \q{indivisible} in Greek, so an atomic operation is guaranteed not
to be interrupted by other threads}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{signifie \q{indivisible} en grec, donc il est garantie qu'une opération atomique ne sera pas interrompue par d'autres threads}
}
}
% to be proofreaded (begin)
\newglossaryentry{NaN}
{
name=NaN,
description={
\RU{не число: специальные случаи чисел с плавающей запятой,
обычно сигнализирующие об ошибках}\EN{not a number:
a special cases for floating point numbers, usually signaling about errors}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{pas un nombre: nu cas particulier pour les nombres flottants, signifiant généralement une erreur}
}
}
\newglossaryentry{basic block}
{
name=basic block,
description={
\RU{группа инструкций, не имеющая инструкций переходов,
а также не имеющая переходов в середину блока извне.
В \IDA он выглядит как просто список инструкций без строк-разрывов}\EN{a group of
instructions that do not have jump/branch instructions, and also don't have
jumps inside the block from the outside.
In \IDA it looks just like as a list of instructions without empty lines}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
}
}
\newglossaryentry{NEON}
{
name=NEON,
description={\ac{AKA} \q{Advanced SIMD}\EMDASH\ac{SIMD} \RU{от}\EN{from}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}\FR{de} ARM}
}
\newglossaryentry{reverse engineering}
{
name=reverse engineering,
description={\RU{процесс понимания как устроена некая вещь, иногда, с целью клонирования оной}
\EN{act of understanding how the thing works, sometimes in order to clone it}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{action d'examiner et de comprendre comment quelque chose fonctionne, parfois dans le but de le reproduire}
}
}
\newglossaryentry{compiler intrinsic}
{
name=compiler intrinsic,
description={\RU{Специфичная для компилятора функция не являющаяся обычной библиотечной функцией.
Компилятор вместо её вызова генерирует определенный машинный код.
Нередко, это псевдофункции для определенной инструкции \ac{CPU}. Читайте больше:}
\EN{A function specific to a compiler which is not an usual library function.
The compiler generates a specific machine code instead of a call to it.
Often, it's a pseudofunction for a specific \ac{CPU} instruction. Read more:}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{Une foncion spécifique à un compilateur, qui n'est pas une fonction usuelle de bibliothèquee.
Le compilateur génère du code machine spcifique au lieu d'un appel à celui-ci.
Souvent il s'agit d'une pseudo-fonction pour une instruction \ac{CPU} spécifique. Lire plus:} (\myref{sec:compiler_intrinsic})
}
}
\newglossaryentry{heap}
{
name=\RU{heap}\EN{heap}\FR{tas},
description={\RU{(куча) обычно, большой кусок памяти предоставляемый \ac{OS}, так что прикладное ПО может делить его
как захочет. malloc()/free() работают с кучей}
\EN{usually, a big chunk of memory provided by the \ac{OS} so that applications can divide it by themselves as they wish.
malloc()/free() work with the heap}\FR{Généralement c'est un gros bout de mémoire fournit par l'\ac{OS} et utilisé par
les applications pour le diviser comme elles le souhaitent. malloc()/free() fonctionnent en utilisant le tas}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}}
}
\newglossaryentry{name mangling}
{
name=name mangling,
description={\RU{применяется как минимум в \Cpp, где компилятору нужно закодировать имя класса,
метода и типы аргументов в одной
строке, которая будет внутренним именем функции. читайте также здесь}
\EN{used at least in \Cpp, where the compiler needs to encode the name of class, method and argument types in one string,
which will become the internal name of the function. You can read more about it here}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{utilisé au moins en \Cpp, oú le compilateur doit encoder le nom de la classe, la méthode et le type des arguments dans un chaîne,
qui devient le nom interne de la fonction. Vous pouvez en lire plus à ce propos ici}: \myref{namemangling}}
}
\newglossaryentry{xoring}
{
name=xoring,
description={\RU{нередко применяемое в английском языке, означает применение операции
\ac{XOR}}
\EN{often used in the English language, which implying applying the \ac{XOR} operation}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{souvent utilisé en angalis, qui signifie appliquer l'opération \ac{XOR}}
}
}
\newglossaryentry{security cookie}
{
name=security cookie,
description={\RU{Случайное значение, разное при каждом исполнении. Читайте больше об этом тут}
\EN{A random value, different at each execution. You can read more about it here}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{Une valeur aléatoire, différente à chaque exécution. Vous pouvez en lire plus à ce propos ici}: \myref{subsec:BO_protection}}
}
\newglossaryentry{tracer}
{
name=tracer,
description={\RU{Моя простейшая утилита для отладки. Читайте больше об этом тут}
\EN{My own simple debugging tool. You can read more about it here}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{Mon propre outil de debugging. Vous pouvez en lire plus à son propos ici}: \myref{tracer}}
}
\newglossaryentry{GiB}
{
name=GiB,
description={\RU{Гибибайт: $2^{30}$ или 1024 мебибайт или 1073741824 байт}
\EN{Gibibyte: $2^{30}$ or 1024 mebibytes or 1073741824 bytes}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{Gibioctet: $2^{30}$ or 1024 mebioctets ou 1073741824 octets} %TODO: translate byte?
}
}
\newglossaryentry{CP/M}
{
name=CP/M,
description={Control Program for Microcomputers: \RU{очень простая дисковая \ac{OS} использовавшаяся перед}
\EN{a very basic disk \ac{OS} used before}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{un \ac{OS} de disque trè basique utilisé avant} MS-DOS}
}
\newglossaryentry{stack frame}
{
name=stack frame,
description={\RU{Часть стека, в которой хранится информация, связанная с текущей функцией: локальные переменные,
аргументы функции, \ac{RA}, итд.}\EN{A part of the stack that contains information specific to the current function:
local variables, function arguments, \ac{RA}, etc.}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{Une partie de la pile qui contient des informations spécifiques à la fonction courante:
variables locales, arguments de la fonciton, \ac{RA}, etc.}
}
}
\newglossaryentry{jump offset}
{
name=jump offset,
description={\RU{Часть опкода JMP или Jcc инструкции, просто прибавляется к адресу следующей инструкции,
и так вычисляется новый \ac{PC}. Может быть отрицательным}\EN{a part of the JMP or Jcc instruction's opcode,
to be added to the address
of the next instruction, and this is how the new \ac{PC} is calculated. May be negative as well}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{une partie de l'opcode de l'instruction JMP ou Jcc, qui doit être ajoutée à l'adresse de l'instruction suivante,
et c'est ainsi que le nouveau \ac{PC} est calculé. Peut-être négatif}
}
}
\newglossaryentry{integral type}
{
name=\RU{интегральный тип данных}\EN{integral data type}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{},
description={\RU{обычные числа, но не вещественные. могут использоваться для передачи булевых типов и перечислений (enumerations)}
\EN{usual numbers, but not a real ones. may be used for passing variables of boolean data type and enumerations}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{nombre usuel, mais pas un réel. peut être utilisé pour passer des variables de type booléen et des énumérations}
}
}
\newglossaryentry{real number}
{
name=\RU{вещественное число}\EN{real number}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{},
description={\RU{числа, которые могут иметь точку. в \CCpp это \Tfloat и \Tdouble}
\EN{numbers which may contain a dot. this is \Tfloat and \Tdouble in \CCpp}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{nombre qui peut contenir un point. ceci est \Tfloat et \Tdouble en \CCpp}
}
}
\newglossaryentry{PDB}
{
name=PDB,
description={(Win32) \RU{Файл с отладочной информацией, обычно просто имена функций,
но иногда имена аргументов функций и локальных переменных}
\EN{Debugging information file, usually just function names, but sometimes also function
arguments and local variables names}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{Fichier contenant des informations de débogage, en général seulement les noms des fonctions,
mais aussi parfois les arguments des fonctions et le nom des variables locales}
}
}
\newglossaryentry{NTAPI}
{
name=NTAPI,
description={\RU{\ac{API} доступное только в линии Windows NT.
Большей частью не документировано Microsoft-ом}\EN{\ac{API} available only in the Windows NT line.
Largely not documented by Microsoft}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{i\ac{API} disponible seulement dans la série de Windows NT. Très peu documentée par Microsoft}}
}
\newglossaryentry{stdout}
{
name=stdout,
description={standard output}
}
\newglossaryentry{word}
{
name=word,
description={\EN{data type fitting in \ac{GPR}}\RU{(слово) тип данных помещающийся в \ac{GPR}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}}.
\RU{В компьютерах старше персональных, память часто измерялась не в байтах,
а в словах}\EN{In the computers older than PCs,
the memory size was often measured in words rather than bytes}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{Dans les ordinateurs plus vieux que les PCs, la taille de la mémoire était
souvent mesurée en mots plutôt qu'en octet}}
}
\newglossaryentry{arithmetic mean}
{
name=\RU{среднее арифметическое}\EN{arithmetic mean}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}\FR{moyenne arithmétique},
description={\EN{a sum of all values divided by their count}
\RU{сумма всех значений, разделенная на их количество}\ESph{}\PTBRph{}\DEph{}\PLph{}\ITAph{}
\FR{la somme de toutes les valeurs, divisé par leur nombre}}
}
\newglossaryentry{padding}
{
name=padding,
description=
\EN{\IT{Padding} in English language means to stuff a pillow with something
to give it a desired (bigger) form.
In computer science, padding means to add more bytes to a block so it will have desired size, like $2^n$ bytes.}
\RU{\IT{Padding} в английском языке означает набивание подушки чем-либо для придания ей желаемой (большей)
формы. В информатике, \IT{padding} означает добавление к блоку дополнительных байт, чтобы он имел нужный
размер, например, $2^n$ байт.}
\FR{\IT{Padding} en anglais signifie rembourrer un oreiller, un matelat, etc. avec quelque chose afin de lui donner la forme désirée.
En informatique, padding signifie ajouter des octets à un bloc, afin qu'il ait une certaine taille, comme $2^n$ octets.}
}