forked from Cactus-proj/RE-for-Beginners
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
9 changed files
with
192 additions
and
79 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
\mysection{Windows 16-bit} | ||
\myindex{Windows!Windows 3.x} | ||
|
||
16-bit Windows programs are rare nowadays, but can be used in the cases of retrocomputing | ||
or dongle hacking (\myref{dongles}). | ||
|
||
16-bit Windows versions were up to 3.11. | ||
95/98/ME also support 16-bit code, as well as the 32-bit versions of the \gls{Windows NT} line. | ||
The 64-bit versions of \gls{Windows NT} line do not support 16-bit executable code at all. | ||
|
||
The code resembles MS-DOS's one. | ||
|
||
Executable files are of type NE-type (so-called \q{new executable}). | ||
|
||
All examples considered here were compiled by the OpenWatcom 1.9 compiler, using these switches: | ||
|
||
\begin{lstlisting} | ||
wcl.exe -i=C:/WATCOM/h/win/ -s -os -bt=windows -bcl=windows example.c | ||
\end{lstlisting} | ||
|
||
\input{\CURPATH/ex1.tex} | ||
\input{\CURPATH/ex2.tex} | ||
\input{\CURPATH/ex3.tex} | ||
\input{\CURPATH/ex4.tex} | ||
\input{\CURPATH/ex5.tex} | ||
\input{\CURPATH/ex6_EN.tex} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
\mysection{Windows 16-bit} | ||
\myindex{Windows!Windows 3.x} | ||
|
||
16-битные программы под Windows в наше время редки, хотя иногда можно поработать с ними, в смысле ретрокомпьютинга, | ||
либо которые защищенные донглами (\myref{dongles}). | ||
|
||
16-битные версии Windows были вплоть до 3.11. | ||
95/98/ME также поддерживает 16-битный код, как и все 32-битные OS линейки \gls{Windows NT}. | ||
64-битные версии \gls{Windows NT} не поддерживают 16-битный код вообще. | ||
|
||
Код напоминает тот что под MS-DOS. | ||
|
||
Исполняемые файлы имеют NE-тип (так называемый \q{new executable}). | ||
|
||
Все рассмотренные здесь примеры скомпилированы компилятором OpenWatcom 1.9 используя эти опции: | ||
|
||
\begin{lstlisting} | ||
wcl.exe -i=C:/WATCOM/h/win/ -s -os -bt=windows -bcl=windows example.c | ||
\end{lstlisting} | ||
|
||
\input{\CURPATH/ex1.tex} | ||
\input{\CURPATH/ex2.tex} | ||
\input{\CURPATH/ex3.tex} | ||
\input{\CURPATH/ex4.tex} | ||
\input{\CURPATH/ex5.tex} | ||
\input{\CURPATH/ex6_RU.tex} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
\subsection{Простейшее XOR-шифрование} | ||
|
||
Однажды я видел ПО, где все отладочные сообщения были зашифрованы используя XOR со значением 3. | ||
Иными словами, 2 младших бита каждого символа были переключены. | ||
|
||
``Hello, world'' становилось ``Kfool/\#tlqog'': | ||
|
||
\begin{lstlisting}[caption=Python,style=custompy] | ||
#!/usr/bin/python | ||
|
||
msg="Hello, world!" | ||
|
||
print "".join(map(lambda x: chr(ord(x)^3), msg)) | ||
\end{lstlisting} | ||
|
||
Это интересное шифрование (или даже обфускация), потому что оно имеет два важных свойства: | ||
1) одна ф-ция для шифрования/дешифрования, просто вызовите её еще раз; | ||
2) символы на выходе печатаемые, так что вся строка может быть использована в исходном коде без специальных (\text{escaping}) символов. | ||
|
||
Второе свойство использует тот факт что все печатаемые символы расположены в рядах: 0x2x-0x7x, и когда вы меняете | ||
два младших бита, символ \emph{перемещается} на 1 или 3 символа влево или вправо, но никогда не \emph{перемещается} в другой | ||
(может быть, непечатаемый) ряд: | ||
|
||
\begin{figure}[H] | ||
\centering | ||
\includegraphics[width=0.8\textwidth]{ascii_clean.png} | ||
\caption{7-битная \ac{ASCII}-таблица в Emacs} | ||
\end{figure} | ||
|
||
\dots с единственным исключением символа 0x7F. | ||
|
||
Например, давайте \emph{зашифруем} символы в пределах A-Z: | ||
|
||
\begin{lstlisting} | ||
#!/usr/bin/python | ||
|
||
msg="@ABCDEFGHIJKLMNO" | ||
|
||
print "".join(map(lambda x: chr(ord(x)^3), msg)) | ||
\end{lstlisting} | ||
|
||
Результат: \verb|CBA@GFEDKJIHONML|. | ||
|
||
Это как если символы ``@'' и ``C'' были поменены местами, и так же и ``B'' и ``a''. | ||
|
||
Так или иначе, это интересный пример использующий свойства XOR, нежели шифрование: | ||
тот самый эффект \emph{сохранения печатаемости} может быть достигнут переключая любой из младших 4-х бит, | ||
в любой последовательности. | ||
|