Permalink
Browse files

added turkish and first page translated

  • Loading branch information...
ahmetarslandemirci committed Oct 28, 2018
1 parent 09a7c66 commit 5fcc28eabb76d53ff4e58913ff0b9389d452b37b
Showing with 116 additions and 1 deletion.
  1. +7 −1 Makefile
  2. +1 −0 RE4B-TR.tex
  3. +3 −0 UAL-TR.tex
  4. +20 −0 afterword_TR.tex
  5. +8 −0 macros.tex
  6. +7 −0 main.tex
  7. +64 −0 patterns/intro_CPU_ISA_TR.tex
  8. +6 −0 patterns/main.tex
@@ -1,4 +1,4 @@
all: UAL-EN UAL-RU UAL-DE UAL-FR UAL-JP RE4B-RU RE4B-EN RE4B-DE RE4B-FR RE4B-JP
all: UAL-EN UAL-RU UAL-DE UAL-FR UAL-JP RE4B-RU RE4B-EN RE4B-DE RE4B-FR RE4B-JP

clean:
rm -f *.aux
@@ -82,6 +82,9 @@ RE4B-FR:
RE4B-JP:
$(call compile,RE4B-JP)

RE4B-TR:
$(call compile,RE4B-TR)

UAL-RU:
$(call compile,UAL-RU)

@@ -97,3 +100,6 @@ UAL-FR:
UAL-JP:
$(call compile,UAL-JP)

UAL-TR:
$(call compile,UAL-TR)

@@ -0,0 +1 @@
\def\TURKISH{}\input{main}
@@ -0,0 +1,3 @@
\def\UAL{}
\def\TURKISH{}\input{main}

@@ -0,0 +1,20 @@
\part*{Önsöz}
\addcontentsline{toc}{part}{Afterword}

\mysection{Sorular?}

Do not hesitate to mail any questions to the author: \\
\GTT{<\EMAIL>}.
Do you have any suggestion on new content for to the book?
Please do not hesitate to send any corrections (including grammar (you see how horrible my English is?)), etc.

The author is working on the book a lot, so the page and listing numbers, etc., are changing very rapidly.
Please do not refer to page and listing numbers in your emails to me.
There is a much simpler method: make a screenshot of the page, in a graphics editor underline the place where you see the error,
and send it to the author. He'll fix it much faster.
And if you familiar with git and \LaTeX\, you can fix the error right in the source code:

\href{http://go.yurichev.com/17089}{GitHub}.

Do not worry to bother me while writing me about any petty mistakes you found, even if you are not very confident.
I'm writing for beginners, after all, so beginners' opinions and comments are crucial for my job.
@@ -106,6 +106,12 @@
\newcommand*{\JPN}[1]{}
\fi

\ifdefined\TURKISH{}
\newcommand*{\TR}[1]{\iflanguage{turkish}{#1}{}}
\else
\newcommand*{\TR}[1]{}
\fi

\newcommand{\ESph}{\ES{{\color{red}Spanish text placeholder}}}
\newcommand{\PTBRph}{\PTBR{{\color{red}Brazilian Portuguese text placeholder}}}
\newcommand{\PLph}{\PL{{\color{red}Polish text placeholder}}}
@@ -115,6 +121,7 @@
\newcommand{\NLph}{\NL{{\color{red}Dutch text placeholder}}}
\newcommand{\FRph}{\FR{{\color{red}French text placeholder}}}
\newcommand{\JPNph}{\JPN{{\color{red}Japanese text placeholder}}}
\newcommand{\TRph}{\TR{{\color{red}Turkish text placeholder}}}

\newcommand{\TitleRE}{%
\EN{Reverse Engineering for Beginners}%
@@ -128,6 +135,7 @@
\NLph{}%
\FR{Reverse Engineering pour Débutants}%
\JPN{リバースエンジニアリング入門}%
\TR{Acemiler için Tersine Mühendislik}%
}

\newcommand{\TitleUAL}{%
@@ -61,6 +61,11 @@
\setotherlanguage{english}
\fi

\ifdefined\TURKISH
\setmainlanguage{turkish}
\setotherlanguage{english}
\fi

\ifdefined\THAI
\setmainlanguage{thai}
%\usepackage[thai]{babel}
@@ -364,6 +369,7 @@
\THAph{}\NLph{}%
\FR{Contenus abrégés}%
\JPN{簡略版}
\TR{İçindekiler}
}{0}

\tableofcontents
@@ -396,6 +402,7 @@
\THAph{}\NLph{}%
\FR{Glossaire}%
\JPN{用語}
\TR{Bolum}
}
\printglossaries

@@ -0,0 +1,64 @@
\subsection{CPU'ya Giriş}

\ac{CPU} makine kodundan oluşan programları çalıştıran donanımdır.

\textbf{Ufak bir Sözlük:}

\begin{description}
\item[Instruction]: İlkel bir \ac{CPU} komutu.
Basit bir örnek olarak: register (yazmaçlar) arasında değer taşıma, bellek ile çalışma, ilkel aritmetik operasyonlar verilebilir.
Genellikle, her \ac{CPU}'nun kendine has instruction listesi vardır (\ac{ISA}).

\item[Machine code]: \ac{CPU}'nun direkt olarak işleyebildiği kod.
Her instruction genellikle bir kaç byte ile gösterilir.
\item[Assembly language]: Programcının hayatını kolaylaştırmak için mnemonic kodlar ve bazı eklentiler (çeşitli microlar gibi) içeren bir dildir.
\item[CPU register]: Her \ac{CPU} sabit sayıda genel amaçlı register'dan (yazmaç) oluşur (\ac{GPR}).
x86'da $\approx 8$, x86-64'de $\approx 16$ ve ARM'da $\approx 16$ adet vardır.
Register'ları anlamanın en kolay yolu onları belirli bir tipi olmayan geçici değişkenler olarak düşünmektir.
Yüksek seviyeli bir \ac{PL} kullandığınızı ve yalnızca 32-bit (ya da 64-bit) değişkenler kullanabildiğinizi hayal edin.
Buna rağmen bir çok şeyi yapabilirdiniz!
\end{description}

% TODO1 add about linker: "компоновщик" и "редактор связей" в русскоязычной лит-ре

% A note on the experiments in this area (like the LISP machines http://en.wikipedia.org/wiki/Lisp_machine
% might be useful
Makine kodu ile bir \ac{PL} arasında neden fark olduğunu merak edebilirsiniz. Cevap insan beyninin ve \ac{CPU}'ların benzer çalışmadığında yatıyor.---%
İnsanlar için \CCpp, Java, or Python, gibi yüksek-seviyeli \ac{PL}'leri algılamaları daha kolay olmasına karşın \ac{CPU}'ler daha alçak-seviyeli soyutlamaları algılayabiliyor.
Muhtemelen \ac{CPU}'nun algılayabileceği yüksek-seviyeli bir dil icat etmek mümkün ama o zaman kullanılacak \ac{CPU}'ler günümüzdekilerden çok daha karmaşık olurlardı.
Benzer olarak insanların düşük seviyeli bir dil olan assembly'de program yazması can sıkıcı hatalar ve buglar olmadan pek mümkün değil.
Yüksek seviyeli bir \ac{PL}'den assembly'e çevirme işlemini yapan programlara \IT{compiler} denir.
\footnote{Old-school Russian literatöründe bu terim \q{translator} olarak kullanılır.}.

\myindex{ARM!\ARMMode}%
\myindex{ARM!\ThumbMode}%
\myindex{ARM!\ThumbTwoMode}%

\subsubsection{Farklı \ac{ISA}'ler hakkında bir kaç söz}
x86 \ac{ISA} daima değişken uzunluktaki instruction'lara sahipti bu yüzden 64-bit mimari geldiğinde, x64 uzantısı \ac{ISA}'yı çok fazla etkilemedi. Aslında, x86 \ac{ISA} hala daha ilk 16-bit 8086 CPU'ya ait instructionları içermekte ve bugünün işlemcilerinde bir çoğu kullanılabilir.
ARM, sabit uzunluklu incstruction'lara sahip bir \ac{RISC} \ac{CPU}'dur ki bunun geçmişte faydaları da olmuştur.
İlk başlarda ARM instructionları sabit olarak 4byte uzunluktaydı.%
\footnote{
Sabit uzunluklu instruction'ların faydası bir sonraki (veya bir önceki) instruction'ın yerinin tespiti çok daha kolay olmaktadır. Bu özellik switch() operator~(\myref{sec:SwitchARMLot}) bölümünde tartışılacak.
}.
Şu an bu \q{ARM mode} olarak geçiyor.
Sonraları bunun başta sandıkları gibi tutumlu bir yöntem olmadığını anladılar.
Aslında, en çok kullanılan \ac{CPU} instruction'ları \footnote{e.g. MOV/PUSH/CALL/Jcc} gerçek dünya uygulamalarında daha az bilgi ile kodlanabilmektedir.
Bu yüzden her instruction'un 2 byte yer kapladığı Thumb adında yeni bir \ac{ISA} eklediler
Şu an bu \q{Thumb mode} olarak geçiyor.
Malesef \IT{tüm} ARM instruction'ları 2 byte ile temsil edilemiyordu bu yüzden Thumb instruction set biraz sınırlı kaldı.
Tabi bir programda hem ARM modunun hem de Thumb modunun bir arada kullanılabileceğini belirtmek gerekir.
ARM'ın yaratıcıları Thumb'ın genişletilebileceğini düşündüler ve ARMv7'de kullanılan Thumb-2'yi oluşturdular.
Thumb-2'de de 2-byte uzunluğundaki instruction'lar kullanılıyor ancak bazı instructionlar 4-byte uzunluğunda olabilmektedir.
Thumb-2'nin ARM ve Thumb modlarının karışımı olduğu şeklinde genel bir yanlış kanı mevcut ancak bu yanlış bir algıdır.
Yanlış kanının aksine Thumb-2 ARM moduyla yarışmak için tüm işlemcileri destekleyecek şekilde genişletildi ki Thumb-2 amacına ulaşarak \idevices uygulamaların çoğunluğu Thumb-2 instruction set ile derlendi.
are compiled for the Thumb-2 instruction set. (Tabi hedefe ulaşmada XCode'un bunu varsayılan olarak yapmasının payı büyük)
Sonra 64-bit geldi. Bu \ac{ISA} 4-byte instructionlara sahipti ve Thumb modun bunun için herhangi bir değişiklik yapmasına gerek yoktu.
Ne yazık ki 64-bit \ac{ISA}'yı etkiledi ve bu şu an kullanılan üç instruction set'inin var olmasına neden oldu:instruction sets: ARM mod, Thumb mod (Thumb-2 dahil) ve ARM64.
Bu \ac{ISA}'ler kısmen kesişirler ama bir tanesinin farklı versiyonları demektense farklı \ac{ISA}'ler oldukları söylenebilir.
Buna rağmen biz bu kitapta üç ARM \ac{ISA} için de kod parçaları kullanacağız.

\myindex{PowerPC}%
\myindex{MIPS}%
\myindex{Alpha AXP}%
Ayrıca piyasada sabit uzunluklu 32-bit instruction'lara sahip başka MIPS, PowerPC ve Alpha AXP gibi bir çok \ac{RISC} \ac{ISA}'ler mevcut.
@@ -38,6 +38,10 @@ \chapter{\PLph{}}
\chapter{コードパターン}
\fi % JAPANESE

\ifdefined\TURKISH
\chapter{Kod Şablonları}
\fi % Turkish

% sections
\EN{\input{patterns/patterns_opt_dbg_EN}}
\ES{\input{patterns/patterns_opt_dbg_ES}}
@@ -59,6 +63,7 @@ \chapter{コードパターン}
\PTBR{\mysection{\PTBRph{}}}
\THA{\mysection{\THAph{}}}
\PL{\mysection{\PLph{}}}
\TR{\mysection{Temeller}}
\JPN{\mysection{基本的な事柄}}

% sections:
@@ -71,6 +76,7 @@ \chapter{コードパターン}
\FR{\input{patterns/intro_CPU_ISA_FR}}
\PL{\input{patterns/intro_CPU_ISA_PL}}
\JPN{\input{patterns/intro_CPU_ISA_JPN}}
\TR{\input{patterns/intro_CPU_ISA_TR}}

\EN{\input{patterns/numeral_EN}}
\RU{\input{patterns/numeral_RU}}

4 comments on commit 5fcc28e

@ysftzcn

This comment has been minimized.

Copy link

ysftzcn replied Nov 6, 2018

Başarılar ... Yardım etmek isterim ...

@ahmetarslandemirci

This comment has been minimized.

Copy link
Contributor

ahmetarslandemirci replied Nov 6, 2018

Teşekkürler.. Çok sevinirim.. Projeyi fork edip istediğiniz bölümün çevirisini yaptıktan sonra pull request atabilirsiniz. Kitabın yazarı kısa sürede merge ediyor. Ancak çeviriden kısa süre sonra pull requesti atmanızın daha iyi olacağını düşünüyorum. Aynı sayfanın iki defa çevrilmemesi için.

@DennisYurichev

This comment has been minimized.

Copy link
Owner

DennisYurichev replied Nov 6, 2018

@DennisYurichev

This comment has been minimized.

Copy link
Owner

DennisYurichev replied Nov 6, 2018

Thanks!

Please sign in to comment.