РуЛиб - онлайн библиотека > Юричев Денис > Крэкинг и реверсинжиниринг > Reverse Engineering для начинающих (Понимание языка ассемблера)

Читаем онлайн «Reverse Engineering для начинающих (Понимание языка ассемблера)»

____
| _ \ _____
_____ _ __ ___ ___
| |_) / _ \ \ / / _ \ '__/ __|/ _ \
| _ < __/\ V / __/ | \__ \ __/
|_| \_\___| \_/ \___|_| |___/\___|
_____
_
_
| ____|_ __
__ _(_)_ __
___ ___ _ __(_)_ __
__ _
| _| | '_ \ / _` | | '_ \ / _ \/ _ \ '__| | '_ \ / _` |
| |___| | | | (_| | | | | | __/ __/ | | | | | | (_| |
|_____|_| |_|\__, |_|_| |_|\___|\___|_| |_|_| |_|\__, |
|___/
|___/
__
/ _| ___ _ __
| |_ / _ \| '__|
| _| (_) | |
|_| \___/|_|
____
_
| __ ) ___ __ _(_)_ __ _ __
___ _ __ ___
| _ \ / _ \/ _` | | '_ \| '_ \ / _ \ '__/ __|
| |_) | __/ (_| | | | | | | | | __/ | \__ \
|____/ \___|\__, |_|_| |_|_| |_|\___|_| |___/
|___/
i
Reverse Engineering для начинающих
(Понимание языка ассемблера)
Почему два названия? Читайте здесь: (стр. xvi).
Денис Юричев
cb a
©2013-2020, Денис Юричев.
Это произведение доступно по лицензии Creative Commons
«Attribution-ShareAlike 4.0 International» (CC BY-SA 4.0). Чтобы увидеть копию
этой лицензии, посетите
https://creativecommons.org/licenses/by-sa/4.0/.
Версия этого текста (27
ноября 2020 г.).
Самая новая версия текста (а также англоязычная версия) доступна на сайте
https://beginners.re/.
Нужны переводчики!
Возможно, вы захотите мне помочь с переводом этой работы на другие языки,
кроме английского и русского. Просто пришлите мне любой фрагмент переведенного текста (не важно, насколько короткий), и я добавлю его в исходный
код на LaTeX.
Не спрашивайте, нужно ли переводить. Просто делайте хоть что-нибудь. Я уже
перестал отвечать на емейлы вроде “что нужно сделать?”
Также, прочитайте это.
Посмотреть статистику языков можно прямо здесь: https://beginners.re/.
Скорость не важна, потому что это опен-сорсный проект все-таки. Ваше имя будет указано в числе участников проекта. Корейский, китайский и персидский
языки зарезервированы издателями. Английскую и русскую версии я делаю
сам, но английский у меня все еще ужасный, так что я буду очень признателен
за коррективы, итд. Даже мой русский несовершенный, так что я благодарен
за коррективы и русского текста!
Не стесняйтесь писать мне: .
Если вы заметили опечатку, ошибку или имеете какие-то либо соображения,
пожелания, пожалуйста, напишите мне: . Спасибо!
Краткое оглавление
1 Образцы кода
1
2 Важные фундаментальные вещи
574
3 Более сложные примеры
604
4 Java
857
5 Поиск в коде того что нужно
910
6 Специфичное для ОС
956
7 Инструменты
1030
8 Примеры из практики
1033
9 Примеры разбора закрытых (проприетарных) форматов файлов 1189
10 Прочее
1266
11 Что стоит почитать
1288
12 Сообщества
1292
ii
Послесловие
1294
Приложение
1296
Список принятых сокращений
1335
Глоссарий
1342
Предметный указатель
1345
Оглавление
1 Образцы кода
1.1 Метод . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Некоторые базовые понятия . . . . . . . .
1.2.1 Краткое введение в CPU . . . . . . .
1.2.2 Представление чисел . . . . . . . . .
1.3 Пустая функция . . . . . . . . . . . . . . . . .
1.3.1 x86 . . . . . . . . . . . . . . . . . . . . .
1.3.2 ARM . . . . . . . . . . . . . . . . . . . . .
1.3.3 MIPS . . . . . . . . . . . . . . . . . . . . .
1.3.4 Пустые функции на практике . . .
1.4 Возврат значения . . . . . . . . . . . . . . . .
1.4.1 x86 . . . . . . . . . . . . . . . . . . . . .
1.4.2 ARM . . . . . . . . . . . . . . . . . . . . .
1.4.3 MIPS . . . . . . . . . . . . . . . . . . . . .
1.4.4 На практике . . . . . . . . . . . . . . .
1.5 Hello, world! . . . . . . . . . . . . . . . . . . . .
1.5.1 x86 . . . . . . . . . . . . . . . . . . . . .
1.5.2 x86-64 . . . . . . . . . . . . . . . . . . .
1.5.3 ARM . . . . . . . . . . . . . . . . . . . . .
1.5.4 MIPS . . . . . . . . . . . . . . . . . . . . .
1.5.5 Вывод . . . . . . . . . . . . . . . . . . .
1.5.6 Упражнения . . . . . . . . . . . . . . .
1.6 Пролог и эпилог функций . . . . . . . . . .
1.6.1 Рекурсия . . . . . . . . . . . . . . . . .
1.7 Еще кое-что о пустой ф-ции . . . . . . . .
1.8 Еще кое-что о возвращаемых