Permalink
Browse files

PDF filenames shortened; \DE macro for German language

  • Loading branch information...
DennisYurichev committed Mar 5, 2016
1 parent 581911e commit 02eea4ba998079a0498e802d3ece19da80c0f05a
Showing with 480 additions and 371 deletions.
  1. +1 −0 .gitignore
  2. +1 −1 ARM_X0_register.tex
  3. +27 −7 FAQ.tex
  4. +2 −0 INSTALL
  5. +3 −0 LITE_warning.tex
  6. +26 −17 Makefile
  7. +1 −1 OS/NT_critical_sections.tex
  8. +2 −2 OS/PE/main.tex
  9. +1 −1 OS/PIC.tex
  10. +1 −1 OS/calling_conventions/main.tex
  11. +1 −1 OS/calling_conventions/ptr_to_argument/main.tex
  12. +3 −0 RE4B-DE-lite.tex
  13. +1 −0 RE4B-DE.tex
  14. 0 Reverse_Engineering_for_Beginners-en-A5-lite.tex → RE4B-EN-A5-lite.tex
  15. 0 Reverse_Engineering_for_Beginners-en-A5.tex → RE4B-EN-A5.tex
  16. 0 Reverse_Engineering_for_Beginners-en-lite.tex → RE4B-EN-lite.tex
  17. 0 Reverse_Engineering_for_Beginners-en.tex → RE4B-EN.tex
  18. 0 Reverse_Engineering_for_Beginners-ES-lite.tex → RE4B-ES-lite.tex
  19. 0 Reverse_Engineering_for_Beginners-ES.tex → RE4B-ES.tex
  20. 0 Reverse_Engineering_for_Beginners-IT-lite.tex → RE4B-IT-lite.tex
  21. 0 Reverse_Engineering_for_Beginners-IT.tex → RE4B-IT.tex
  22. 0 Reverse_Engineering_for_Beginners-polish-lite.tex → RE4B-PL-lite.tex
  23. 0 Reverse_Engineering_for_Beginners-polish.tex → RE4B-PL.tex
  24. 0 Reverse_Engineering_for_Beginners-PTBR-lite.tex → RE4B-PTBR-lite.tex
  25. 0 Reverse_Engineering_for_Beginners-PTBR.tex → RE4B-PTBR.tex
  26. 0 Reverse_Engineering_for_Beginners-ru-A5-lite.tex → RE4B-RU-A5-lite.tex
  27. 0 Reverse_Engineering_for_Beginners-ru-A5.tex → RE4B-RU-A5.tex
  28. 0 Reverse_Engineering_for_Beginners-ru-lite.tex → RE4B-RU-lite.tex
  29. 0 Reverse_Engineering_for_Beginners-ru.tex → RE4B-RU.tex
  30. +28 −3 Translation.md
  31. +5 −1 XOR_property.tex
  32. +19 −7 acronyms.tex
  33. +1 −1 advanced/111_netmask/main.tex
  34. +1 −1 advanced/127_inline_function/str_mem/main.tex
  35. +8 −8 afterword.tex
  36. +3 −3 appendix/x86/instructions/LEA.tex
  37. +2 −0 common_URLS.tex
  38. +1 −0 commons.m4
  39. +1 −1 cover.tex
  40. +1 −1 digging_into_code/communication_win32.tex
  41. +1 −1 digging_into_code/constants.tex
  42. +5 −5 digging_into_code/instructions.tex
  43. +1 −1 digging_into_code/suspicious_code.tex
  44. +1 −1 examples/SAP/sapgui/sapgui.tex
  45. +1 −1 ff/Oracle_MSB/main.tex
  46. +1 −1 ff/main.tex
  47. +3 −3 float_IEEE754.tex
  48. +9 −9 fundamentals/CPU.tex
  49. +32 −32 fundamentals/endianness.tex
  50. +22 −22 fundamentals/hashfunc.tex
  51. +1 −1 fundamentals/main.tex
  52. +25 −25 fundamentals/memory.tex
  53. +28 −28 fundamentals/signed_numbers.tex
  54. +54 −54 glossary.tex
  55. +22 −3 macros.tex
  56. +12 −5 main.tex
  57. +1 −1 other/8086mm.tex
  58. +9 −9 page_after_cover.tex
  59. +1 −1 patterns/065_GOTO/main.tex
  60. +1 −1 patterns/06_return_results/main.tex
  61. +1 −1 patterns/09_loops/simple/x86.tex
  62. +1 −1 patterns/11_arith_optimizations/div.tex
  63. +1 −1 patterns/12_FPU/3_comparison/x86/GCC_O3.tex
  64. +2 −2 patterns/13_arrays/45_month_1D/main.tex
  65. +1 −1 patterns/145_LCG/main.tex
  66. +1 −1 patterns/14_bitfields/2_set_reset/x86.tex
  67. +1 −1 patterns/17_unions/main.tex
  68. +2 −2 patterns/main.tex
  69. +10 −10 praise.tex
  70. +53 −53 preface.tex
  71. +11 −11 reading.tex
  72. +2 −2 survey.tex
  73. +24 −24 tools.tex
@@ -34,6 +34,7 @@ dummy.tex
*.sp
*.es
*.ptbr
*.de
*.it
cover_for_websites.jpg
RE_for_beginners-*.log
@@ -1,7 +1,7 @@
\begin{center}
\begin{tabular}{ | l | l | }
\hline
\RU{Старшие 32 бита}\EN{High 32-bit part}\ES{Parte alta de 32 bits}\PTBRph{}\PLph{}\ITAph{} & \RU{младшие 32 бита}\EN{low 32-bit part}\ES{parte baja de 32 bits}\PTBRph{}\PLph{}\ITAph{} \\
\RU{Старшие 32 бита}\EN{High 32-bit part}\ES{Parte alta de 32 bits}\PTBRph{}\PLph{}\ITAph{}\DEph{} & \RU{младшие 32 бита}\EN{low 32-bit part}\ES{parte baja de 32 bits}\PTBRph{}\PLph{}\ITAph{}\DEph{} \\
\hline
\multicolumn{2}{ | c | }{X0} \\
\hline
34 FAQ.tex
@@ -5,6 +5,7 @@ \subsection*{mini-%
\PTBRph{}%
\PLph{}%
\ITAph{}%
\DEph{}%
}

\newcommand{\HACKINGMdURL}{https://github.com/dennis714/RE-for-beginners/blob/master/HACKING.md}
@@ -16,7 +17,8 @@ \subsection*{mini-%
\ES{?`Por qu\'e deber\'ia aprender lenguaje ensamblador hoy en d\'ia?}%
\PTBRph{}%
\PLph{}%
\ITAph{}
\ITAph{}%
\DEph{}%
\\
A:
\RU{Если вы не разработчик \ac{OS}, вам наверное не нужно писать на ассемблере:
@@ -28,20 +30,22 @@ \subsection*{mini-%
\PTBRph{}%
\PLph{}%
\ITAph{}
\DEph{}%
\footnote{%
\RU{Очень хороший текст на эту тему}%
\EN{A very good text about this topic}%
\ES{Un buen texto acerca de este tema}%
\PTBRph{}%
\PLph{}%
\ITAph{}: \cite{AgnerFog}
}.
\DEph{}%
\ITAph{}: \cite{AgnerFog}}.
\RU{К тому же, современные \ac{CPU} это крайне сложные устройства и знание ассемблера вряд ли
поможет узнать их внутренности.}%
\EN{Also, modern \ac{CPU}s are very complex devices and assembly knowledge doesn't really help one to understand their internals.}%
\ES{Adem\'as, los \ac{CPU}s modernos son dispositivos muy complejos y el conocimiento de ensamblador en realidad no ayuda a comprender su funcionamiento interno.}%
\PTBRph{}%
\PLph{}%
\DEph{}%
\ITAph{}
\RU{Но все-таки остается по крайней мере две области, где знание ассемблера может хорошо
помочь:
@@ -53,6 +57,7 @@ \subsection*{mini-%
Antes que nada, la investigaci\'on de seguridad/malware. Tambi\'en es una buena manera de obtener un mejor entendimiento de tu c\'odigo compilado mientras es depurado.}%
\PTBRph{}%
\PLph{}%
\DEph{}%
\ITAph{}

\RU{Таким образом, эта книга предназначена для тех, кто хочет скорее понимать ассемблер,
@@ -62,16 +67,14 @@ \subsection*{mini-%
than to code in it, which is why there are many examples of compiler output contained within.}%
\ES{Por lo tanto, este libro est\'a dirigido a aquellos que desean comprender el lenguaje ensamblador en vez de codificar en \'el,
raz\'on por la cual contiene tantos ejemplos de c\'odigo generado por compilador.}%
\PTBRph{}%
\PLph{}%
\ITAph{}
\\
\PTBRph{}\DEph{}\PLph{}\ITAph{} \\
\\
Q:
\RU{Я кликнул на ссылку внутри PDF-документа, как теперь вернуться назад?}%
\EN{I clicked on a hyperlink inside a PDF-document, how do I go back?}%
\ES{Di click en un link dentro del documento PDF, ?`c\'omo regreso?}%
\PTBRph{}%
\DEph{}%
\PLph{}%
\ITAph{}
\\
@@ -80,6 +83,7 @@ \subsection*{mini-%
\EN{In Adobe Acrobat Reader click Alt+LeftArrow.}%
\ES{En Acrobat Reader, presiona Alt+FlechaIzquierda.}%
\PTBRph{}%
\DEph{}%
\PLph{}%
\ITAph{}
\\
@@ -90,6 +94,7 @@ \subsection*{mini-%
\EN{Your book is huge! Is there anything shorter?}%
\ES{!`Tu libro es enorme! ?`Hay algo m\'as corto?}%
\PTBRph{}%
\DEph{}%
\PLph{}%
\ITAph{}
\\
@@ -98,6 +103,7 @@ \subsection*{mini-%
\EN{There is a shortened, lite version found here:}%
\ES{Puedes encontrar una versi\'on reducida (LITE), aqu\'i:}%
\PTBRph{}%
\DEph{}%
\PLph{}%
\ITAph{}
\url{http://beginners.re/\#lite}.
@@ -109,6 +115,7 @@ \subsection*{mini-%
\EN{I'm not sure if I should try to learn reverse engineering or not.}%
\ES{No estoy seguro de si deber\'ia tratar de aprender ingenier\'ia inversa o no.}%
\PTBRph{}%
\DEph{}%
\PLph{}%
\ITAph{}
\\
@@ -117,6 +124,7 @@ \subsection*{mini-%
\EN{Perhaps, the average time to become familiar with the contents of the shortened LITE-version is 1-2 month(s).}%
\ES{Quiz\'a, el tiempo promedio para familiarizarse con los contenidos de la versi\'on LITE es de 1-2 meses.}%
\PTBRph{}%
\DEph{}%
\PLph{}%
\ITAph{}
\\
@@ -126,6 +134,7 @@ \subsection*{mini-%
\EN{May I print this book / use it for teaching?}%
\ES{?`Puedo imprimir este libro / usarlo para ense\~nanza?}%
\PTBRph{}%
\DEph{}%
\PLph{}%
\ITAph{}
\\
@@ -134,13 +143,15 @@ \subsection*{mini-%
\EN{Of course! That's why the book is licensed under the Creative Commons license.}%
\ES{!`Por supuesto! Por eso es que el libro est\'a registrado bajo Creative Commons.}%
\PTBRph{}%
\DEph{}%
\PLph{}%
\ITAph{}

\RU{Кто-то может захотеть скомпилировать свою собственную версию книги, читайте \href{\HACKINGMdURL}{здесь} об этом.}%
\EN{Someone might also want to build one's own version of book\textemdash{}read \href{\HACKINGMdURL}{here} to find out more.}%
\ES{Puede que alguien quiera generar su propia versi\'on del libro\textemdash{}lee \href{\HACKINGMdURL}{here} para m\'as informaci\'on al respecto.}%
\PTBRph{}%
\DEph{}%
\PLph{}%
\ITAph{}
\\
@@ -150,6 +161,7 @@ \subsection*{mini-%
\EN{I want to translate your book to some other language.}%
\ES{Quiero traducir tu libro a otro idioma.}%
\PTBRph{}%
\DEph{}%
\PLph{}%
\ITAph{}
\\
@@ -158,13 +170,15 @@ \subsection*{mini-%
\EN{Read}%
\ES{Lee}%
\PTBRph{}%
\DEph{}%
\PLph{}%
\ITAph{}
\href{https://github.com/dennis714/RE-for-beginners/blob/master/Translation.md}{
\RU{мою заметку для переводчиков}%
\EN{my note to translators}%
\ES{mis notas para traductores}%
\PTBRph{}%
\DEph{}%
\PLph{}%
\ITAph{}%
}.
@@ -175,6 +189,7 @@ \subsection*{mini-%
\EN{How does one get a job in reverse engineering?}%
\ES{?`C\'omo se consigue un trabajo en ingenier\'ia inversa?}%
\PTBRph{}%
\DEph{}%
\PLph{}%
\ITAph{}
\\
@@ -183,6 +198,7 @@ \subsection*{mini-%
\EN{There are hiring threads that appear from time to time on reddit, devoted to RE\FNURLREDDIT}%
\ES{Existen threads de contrataci\'on que aparecen de vez en cuando en reddit, dedicados a reversing\FNURLREDDIT}%
\PTBRph{}%
\DEph{}%
\PLph{}%
\ITAph{}
(\href{http://go.yurichev.com/17333}{2013 Q3},
@@ -191,13 +207,15 @@ \subsection*{mini-%
\EN{Try looking there.}%
\ES{Intenta buscando ah\'i.}%
\PTBRph{}%
\DEph{}%
\PLph{}%
\ITAph{}

\RU{В смежном субреддите \q{netsec} имеется похожий тред:}
\EN{A somewhat related hiring thread can be found in the \q{netsec} subreddit:}%
\ES{Un thread en ocasiones relacionado con contrataciones puede ser encontrado en el subreddit \q{netsec}:}%
\PTBRph{}%
\DEph{}%
\PLph{}%
\ITAph{}
\href{http://go.yurichev.com/17335}{2014 Q2}.
@@ -212,6 +230,7 @@ \subsection*{mini-%
\EN{I have a question...}%
\ES{Tengo una pregunta...}%
\PTBRph{}%
\DEph{}%
\PLph{}%
\ITAph{}
\\
@@ -220,6 +239,7 @@ \subsection*{mini-%
\EN{Send it to me by email}%
\ES{Env\'iamela por email}%
\PTBRph{}%
\DEph{}%
\PLph{}%
\ITAph{}
(\EMAIL).
@@ -15,6 +15,8 @@ biber
These Ubuntu packages should be also installed for Russian version:
texlive-lang-cyrillic

For other languages, other textlive-lang-* packages must also be installed.

If unsure, install everything: texlive-full and biber.

2) You may need to install PT Sans font.
@@ -6,6 +6,7 @@
\EN{Warning: this is a shortened LITE-version!}%
\ES{!`Atenci\'on: \'esta es una versi\'on LITE resumida!}%
\PTBRph{}%
\DEph{}%
\PLph{}%
\ITAph{}
\normalsize
@@ -25,6 +26,7 @@
a aquellos que deseen una introducci\'on breve a la esencia de la ingenier\'ia inversa.
No incluye nada sobre MIPS, ARM, OllyDBG, GCC, GDB, IDA, no contiene ejercicios, ejemplos, \etc{}.}%
\PTBRph{}%
\DEph{}%
\PLph{}%
\ITAph{}
\normalsize
@@ -37,6 +39,7 @@
\EN{If you're still interested in reverse engineering, full version of the book is always available on my website:}%
\ES{Si a\'un est\'as interesado en la ingenier\'ia inversa, la versi\'on completa del libro siempre est\'a disponible en mi sitio:}%
\PTBRph{}%
\DEph{}%
\PLph{}%
\ITAph{}
\href{http://go.yurichev.com/17009}{beginners.re}.
@@ -1,4 +1,4 @@
.SUFFIXES: .m4 .ru .en .es .ptbr .pl .it
.SUFFIXES: .m4 .ru .en .es .ptbr .pl .it .de
.m4.en:
m4 --define=lang=en $*.m4 >$*.en
.m4.ru:
@@ -11,6 +11,8 @@
m4 --define=lang=es $*.m4 >$*.pl
.m4.it:
m4 --define=lang=it $*.m4 >$*.it
.m4.de:
m4 --define=lang=de $*.m4 >$*.de

M4SOURCES := $(shell find . $(pwd) -name '*.m4')
RU_LISTINGS := $(M4SOURCES:%.m4=%.ru)
@@ -19,6 +21,7 @@ ES_LISTINGS := $(M4SOURCES:%.m4=%.es)
PL_LISTINGS := $(M4SOURCES:%.m4=%.pl)
PTBR_LISTINGS := $(M4SOURCES:%.m4=%.ptbr)
IT_LISTINGS := $(M4SOURCES:%.m4=%.it)
DE_LISTINGS := $(M4SOURCES:%.m4=%.de)

all: russian english russian-A5 english-A5 \
russian-lite english-lite russian-A5-lite english-A5-lite
@@ -54,6 +57,7 @@ clean:
rm -f *.ru
rm -f RE_for_beginners-*.log
rm -f Reverse_Engineering_for_Beginners-*.log
rm -f RE4B-*.log
rm -f *~
rm -f *.log
rm -f *.lyx
@@ -75,49 +79,54 @@ define compile
endef

russian: $(RU_LISTINGS)
$(call compile,Reverse_Engineering_for_Beginners-ru)
$(call compile,RE4B-RU)

english: $(EN_LISTINGS)
$(call compile,Reverse_Engineering_for_Beginners-en)
$(call compile,RE4B-EN)

russian-A5: $(RU_LISTINGS)
$(call compile,Reverse_Engineering_for_Beginners-ru-A5)
$(call compile,RE4B-RU-A5)

english-A5: $(EN_LISTINGS)
$(call compile,Reverse_Engineering_for_Beginners-en-A5)
$(call compile,RE4B-EN-A5)

russian-lite: $(RU_LISTINGS)
$(call compile,Reverse_Engineering_for_Beginners-ru-lite)
$(call compile,RE4B-RU-lite)

english-lite: $(EN_LISTINGS)
$(call compile,Reverse_Engineering_for_Beginners-en-lite)
$(call compile,RE4B-EN-lite)

russian-A5-lite: $(RU_LISTINGS)
$(call compile,Reverse_Engineering_for_Beginners-ru-A5-lite)
$(call compile,RE4B-RU-A5-lite)

english-A5-lite: $(EN_LISTINGS)
$(call compile,Reverse_Engineering_for_Beginners-en-A5-lite)
$(call compile,RE4B-EN-A5-lite)

ES: $(ES_LISTINGS)
$(call compile,Reverse_Engineering_for_Beginners-ES)
$(call compile,RE4B-ES)

PTBR: $(PTBR_LISTINGS)
$(call compile,Reverse_Engineering_for_Beginners-PTBR)
$(call compile,RE4B-PTBR)

ES-lite: $(ES_LISTINGS)
$(call compile,Reverse_Engineering_for_Beginners-ES-lite)
$(call compile,RE4B-ES-lite)

PTBR-lite: $(PTBR_LISTINGS)
$(call compile,Reverse_Engineering_for_Beginners-PTBR-lite)
$(call compile,RE4B-PTBR-lite)

polish: $(PL_LISTINGS)
$(call compile,Reverse_Engineering_for_Beginners-polish)
$(call compile,RE4B-PL)

polish-lite: $(PL_LISTINGS)
$(call compile,Reverse_Engineering_for_Beginners-polish-lite)
$(call compile,RE4B-PL-lite)

IT: $(IT_LISTINGS)
$(call compile,Reverse_Engineering_for_Beginners-IT)
$(call compile,RE4B-IT)
IT-lite: $(IT_LISTINGS)
$(call compile,Reverse_Engineering_for_Beginners-IT-lite)
$(call compile,RE4B-IT-lite)

german: $(DE_LISTINGS)
$(call compile,RE4B-DE)
german-lite: $(DE_LISTINGS)
$(call compile,RE4B-DE-lite)

@@ -9,7 +9,7 @@ \section{Windows NT: \RU{Критические секции}\EN{Critical sectio
\EN{Critical sections in any \ac{OS} are very important in multithreaded environment,
mostly for giving a guarantee
that only one thread can access some data in a single moment of time,
while blocking other threads and interrupts.}\ESph{}\PTBRph{}\PLph{}\ITAph{} \\
while blocking other threads and interrupts.}\ESph{}\PTBRph{}\PLph{}\ITAph{}\DEph{} \\
\\
\RU{Вот как объявлена структура}\EN{That is how a} \TT{CRITICAL\_SECTION}
\RU{объявлена в линейке OS}\EN{structure is declared in} \gls{Windows NT}\EN{ line OS}:
@@ -108,7 +108,7 @@ \subsection{\RU{Базовый адрес}\EN{Base address}}
во второй DLL будут скорректированы.}
\EN{So that is why if two necessary DLLs for a process have the same base address,
one of them will be loaded at this base address, and the other\EMDASH{}at some other free space in process memory,
and each virtual addresses in the second DLL will be corrected.}\ESph{}\PTBRph{}\PLph{}\ITAph{} \\
and each virtual addresses in the second DLL will be corrected.}\ESph{}\PTBRph{}\PLph{}\ITAph{}\DEph{} \\
\\
\RU{Очень часто линкер в}\EN{Often,} \ac{MSVC} \RU{генерирует .exe-файлы с базовым адресом}
\EN{the linker generates the .exe files with a base address of} \TT{0x400000}
@@ -144,7 +144,7 @@ \subsection{\RU{Базовый адрес}\EN{Base address}}
\EN{method loads your program and all modules it needs at random base addresses, different every time}.

\RU{В PE-файлах, поддержка \ac{ASLR} отмечается выставлением флага}
\EN{\ac{ASLR} support is denoted in a PE file by setting the flag}\ESph{}\PTBRph{}\PLph{}\ITAph{} \\
\EN{\ac{ASLR} support is denoted in a PE file by setting the flag}\ESph{}\PTBRph{}\PLph{}\ITAph{}\DEph{} \\
\TT{IMAGE\_DLL\_CHARACTERISTICS\_DYNAMIC\_BASE} \cite{Russinovich}.

\subsection{Subsystem}
@@ -120,7 +120,7 @@ \section{\CapitalPICcode}
\newcommand{\globvar}{\IT{global\_variable}}

\RU{Так и есть: указатели на строку \retstring{} и переменную \globvar{} корректируются при каждом исполнении функции.}%
\EN{That's it: the pointers to \retstring{} and \globvar{} are to be corrected at each function execution.}\ESph{}\PTBRph{}\PLph{}\ITAph{}\\
\EN{That's it: the pointers to \retstring{} and \globvar{} are to be corrected at each function execution.}\ESph{}\PTBRph{}\PLph{}\ITAph{}\DEph{}\\
\RU{Функция}\EN{The} \TT{\_\_x86\_get\_pc\_thunk\_bx()} \RU{возвращает адрес точки после вызова самой себя (здесь: \TT{0x57C}) в \EBX}\EN{function returns in \EBX the address of the point after a call to itself (\TT{0x57C} here)}.
\RU{Это очень простой способ получить значение указателя на текущую инструкцию (\EIP) в произвольном месте}
\EN{That's a simple way to get the value of the program counter (\EIP) at some point}.
Oops, something went wrong.

0 comments on commit 02eea4b

Please sign in to comment.