| [досмотренная версия] | [ожидает проверки] |
|
|
| | == Инструменты == | | == Инструменты == |
| | | | |
| − | === Дизассемблеры === | + | === Статический анализ скомпилированных программ === |
| | | | |
| − | Дизассемблер — это утилита, преобразующая бинарный код в ассемблерный листинг. В простейших случаях этого вполне достаточно, и остаётся немного покурить и найти то, что нужно. В худших — это каша, и без скриптов и/или отладчика не обойтись.
| + | В данном разделе представлены инструменты для "декомпиляции", в смысле превращения машинного кода в понимание, что же он такое делает. При этом сюда же включены и отладчики, потому что главная функция отладчика в контексте RE - это в первую очередь оптимизация навигации по коду. |
| | | | |
| − | '''Hiew''' (''Hacker’s viewer''). Небольшая утилита, для нормальных людей бесполезная, юзают лишь надрочившиеся спецы, иногда — продвинутые пользователи (как шестнадцатеричный редактор). Давно существует куча GUI-шных тулзов для тех же целей, но по славной традиции тулзу продолжают использовать…
| + | Теперь о классификации инструментов. Есть 2 сорта инструментов - универсальные и узкоспециализированные. Узкоспециализированные оптимизированны для конкретной архитектуры. Они имеют меньшее потребление памяти и работают шустрее. Универсальные оптимизированны для code reuse. Они используют промежуточное представление и толстый middleware, в них может быть легче (если знаком с middleware) или тяжелее добавлять новые фичи, но когда это сделано, пользу получают все поддерживаемые архитектуры. |
| | | | |
| − | '''Sourcer''' от компании V Communications. Стародавний мощный дизассемблер времен DOS и ранних версий Windows. Позволял из .COM или .EXE файлов получать непосредственно .ASM файл, причём для различных компиляторов ассемблера, таких как TASM или MASM. Если было задано достаточное количество проходов при дизасемблировании, то с высокой степенью вероятности можно было при компилировании только что созданного .ASM файла получить исходную исполнимую программу байт-в-байт. Доставлял хорошими комментариями в листинге, скоростью работы, поддержкой разных типов процессора и, конечно, олдскульным ''сценовским'' интерфейсом. Сейчас не актуален, хотя некоторые анонимусы продолжают держать его в своём инструментарии, например, для дизассемблирования MBR жёсткого диска, Boot-сектора, специальных утилит, загружаемых с дискеты без какой-либо ОС (например утилиты перепрошивки BIOS или утилиты от производителей HDD), и прочего. То есть для низкосистемных нужд. Последней явилась на свет версия v8.01 от 2001 года. Sourcer — помним, любим, скорбим!
| + | Также можно классифицировать на 2 класса по возможности вклиниться между стадиями. |
| | | | |
| − | === Архив даташитов и документация ===
| + | 1. Конвейер. Парсер формата ("загрузчик") парсит заголовки и извлекает метаинформацию, метаинформация используется для правильного парсинга машинного кода в представление в памяти, специфичное для архитектуры ("дизассемблер"), "лифтер" преобразует это представление в нейтральное промежуточное представление, которое оптимизируется, после преобразуется "декомпилятором" в нужный язык программирования. Конвейер можно прервать между стадиями и поковыряться в промежуточных результатах. Обычно универсальные. |
| | | | |
| − | Без этих вещей вы никогда не узнаете, что процессор Nippon-Denso NP648976 на самом деле жалкий клон Motorola 6803 с 16К ROM на борту. А когда узнаете, поймёте, что япошки никогда ничего сами не придумывали, а только умело пиздили.
| + | 2. Монолит. Тут всё вышеперечисленное слито вместе, а нейтральное представление упразднено. Не между всеми стадиями можно вклиниться. Монолиты, обычно классифицируют по последней стадии. Обычно узкоспециализированные. |
| | | | |
| − | === Отладчики ===
| + | Инструменты можно ещё классифицировать как интерактивные и пассивные. |
| | | | |
| − | Отладчик — программа для контролируемого исполнения программы или в общем случае любого произвольного куска кода, вплоть до инжектированной в другой процесс DLL. Продвинутый отладчик умеет использовать аппаратные средства отладки, ну и, конечно, дизассемблировать.
| + | Интерактивные имеют пользовательский интерфейс, позволяющий человеку управлять его работой, подключая свою естественную нейронную сеть в качестве модуля. Пассивные просто получают на вход одно и выдают другое. |
| − | [[Файл:IDA Disasm02.jpeg|thumb|[[Матрица]] поимела тебя. Анализ кода в IDA.]]
| + | |
| − | [[Файл:ida linux.png|thumb|IDA в линуксе или линукс в IDA?]]
| + | |
| | | | |
| − | ==== IDA ==== | + | ==== Полные конвейеры / комбайны ==== |
| − | Основной дизассемблер на сегодняшний день. Обладает множеством функций типа поддержки скриптов, графического режима или встроенных плагинов вплоть до эмулятора x86. Не тупой интерфейс — множество интуитивно понятных «горячих» клавиш и т. п. Проекту уже лет 15, и он единственный из дизассемблеров живёт активной жизнью и [[недавно|поныне]]: у других в новых версиях фичи почти не родятся. До сих пор таскает с собой DOS-GUI версию для олдфагов. Также известен нефиговой ценовой политикой.
| + | |
| | | | |
| − | Пишет его татарский расовый мудак по имени Ильфак Гуильфанов. Детали истории создания дизассемблера покрыты мраком, но известно, что Ильфаку, как и [[Билл Гейтс|Биллу Гейтсу]] с DOS, добрые люди помогли написать первые версии. И задумывался он как инструмент для восстановления прошивок HDD. Дальше, непонятно как и почему, люди разошлись, и остался он один. Потом Ильфак всплывает с версией 3.x уже от лица фирмы Datarescue, которая купила проект. Начиная с версии 4.0, у него появляется GUI, написанный на BCB! С этого времени продукт начинает приобретать массовую известность в узких кругах по двум причинам: | + | ===== IDA ===== |
| | + | Как следует из названия, интерактивный. Основной декомпилятор и дизассемблер на сегодняшний день, скомбинированный с отладчиком. Обладает множеством функций типа поддержки скриптов, графического режима или встроенных плагинов вплоть до эмулятора x86. Не тупой интерфейс — множество интуитивно понятных «горячих» клавиш и т. п. Проекту уже лет 15, и он единственный из дизассемблеров живёт активной жизнью и [[недавно|поныне]]: у других в новых версиях фичи почти не родятся. До сих пор таскает с собой DOS-GUI версию для олдфагов. Также известен нефиговой ценовой и KYC политикой. |
| | + | |
| | + | Пишет его татарский расовый мудак по имени Ильфак Гильфанов. Детали истории создания дизассемблера покрыты мраком, но известно, что Ильфаку, как и [[Билл Гейтс|Биллу Гейтсу]] с DOS, добрые люди помогли написать первые версии. И задумывался он как инструмент для восстановления прошивок HDD. Дальше, непонятно как и почему, люди разошлись, и остался он один. Потом Ильфак всплывает с версией 3.x уже от лица фирмы Datarescue, которая купила проект. Начиная с версии 4.0, у него появляется GUI, написанный на BCB! С этого времени продукт начинает приобретать массовую известность в узких кругах по двум причинам: |
| | * MUST HAVE | | * MUST HAVE |
| − | * «[[Все пидорасы, а я — д’Артаньян|Ильфак — пидорас]]» | + | * «[[Все пидорасы, а я — д’Артаньян|Ильфак — пидорас]]» |
| | Остановимся на втором пункте подробнее. | | Остановимся на втором пункте подробнее. |
| | | | |
| − | Ильфак, будучи на данном рынке монополистом, давно забил на пользователей хуй. Потому что берут и так. Любой юзер IDA, которому приходилось иметь дело с поддержкой, получал кучу отрицательных эмоций: получив продукт с кучей багов, вы предоставлены себе в их исправлении. Ошибки исправлять никто не спешит — можно легко прождать полгода, даже если баг вопиющий. Продукт практически не тестировался перед релизами и не тестится до сих пор. Юзеры IDA вынуждены хранить несколько версий, потому что в одной хорошо работает одна фича, в другой — другая, в третьей — третья. | + | Ильфак, будучи на данном рынке монополистом, давно забил на пользователей хуй. Потому что берут и так. Любой юзер IDA, которому приходилось иметь дело с поддержкой, получал кучу отрицательных эмоций: получив продукт с кучей багов, вы предоставлены себе в их исправлении. Ошибки исправлять никто не спешит — можно легко прождать полгода, даже если баг вопиющий. Продукт практически не тестировался перед релизами и не тестится до сих пор. Юзеры IDA вынуждены хранить несколько версий, потому что в одной хорошо работает одна фича, в другой — другая, в третьей — третья. |
| | | | |
| − | А среди «неофициальных» юзеров Ильфак нелюбим за то, что без спроса берёт идеи. За счёт того, что IDA поставляется с SDK, юзеры могут делать свои плагины к IDA, и таки делают немало. Плагины пишутся как для того, чтобы исправить баги оригинальной функциональности, так и ради добавления своих фич для решения конкретных задач. Уровень альтруизма среди «неофициальных» юзеров высок, и исходники плагинов выкладываются на всеобщее обозрение. Так вот, примерно через полгода после появления полезных исходников это становится фичей IDA. У Ильфака на этот счёт железное алиби: «То, что тут придумали — это не новая идея, это меня пользователи попросили ещё год назад». | + | А среди «неофициальных» юзеров Ильфак нелюбим за то, что без спроса берёт идеи. За счёт того, что IDA поставляется с SDK, юзеры могут делать свои плагины к IDA, и таки делают немало. Плагины пишутся как для того, чтобы исправить баги оригинальной функциональности, так и ради добавления своих фич для решения конкретных задач. Уровень альтруизма среди «неофициальных» юзеров высок, и исходники плагинов выкладываются на всеобщее обозрение. Так вот, примерно через полгода после появления полезных исходников это становится фичей IDA. У Ильфака на этот счёт железное алиби: «То, что тут придумали — это не новая идея, это меня пользователи попросили ещё год назад». |
| | | | |
| | Вначале народная ненависть выливалась в троллинг на [http://idapro.ru/forum/ форуме официального русского сайта]. Но потом всё быстро утихло, ибо Ильфак анально отгородил форум официальных юзеров, а с неофициальными общаться перестал. Посему примерно раз в год то китайцы, то албанцы, то русские (был интересный случай, когда народ скидывался на руборде, чтобы купить одну копию и поделиться), то немцы тырят с тренингов, кардят, хачат сервера с IDA и коммуниздят очередную версию. Чем каждый раз нереально доставляют целевой аудитории IDA. А официальные юзеры потом смотрят в закрытые форумы поддержки и скидывают цитаты баттхёрта Ильфака в публику, повышая градус веселья. | | Вначале народная ненависть выливалась в троллинг на [http://idapro.ru/forum/ форуме официального русского сайта]. Но потом всё быстро утихло, ибо Ильфак анально отгородил форум официальных юзеров, а с неофициальными общаться перестал. Посему примерно раз в год то китайцы, то албанцы, то русские (был интересный случай, когда народ скидывался на руборде, чтобы купить одну копию и поделиться), то немцы тырят с тренингов, кардят, хачат сервера с IDA и коммуниздят очередную версию. Чем каждый раз нереально доставляют целевой аудитории IDA. А официальные юзеры потом смотрят в закрытые форумы поддержки и скидывают цитаты баттхёрта Ильфака в публику, повышая градус веселья. |
|
|
| | Потом Ильфак свалил с Datarescue и стал делать IDA от лица своей конторы Hex-Rays. Ходят слухи, что он нанял наконец программеров с прямыми руками, которые наконец начали чистить его говнокод. Поэтому версия 5.5 была воспринята с одобрением, и некоторые неофициальные пользователи даже начали помышлять о приобретении. Но эйфория продлилась недолго, баги снова были найдены, и всё вернулось на круги своя. | | Потом Ильфак свалил с Datarescue и стал делать IDA от лица своей конторы Hex-Rays. Ходят слухи, что он нанял наконец программеров с прямыми руками, которые наконец начали чистить его говнокод. Поэтому версия 5.5 была воспринята с одобрением, и некоторые неофициальные пользователи даже начали помышлять о приобретении. Но эйфория продлилась недолго, баги снова были найдены, и всё вернулось на круги своя. |
| | | | |
| − | Ознакомиться с историей спионеривания можно [http://www.woodmann.com/crackz/Ida.htm тут]. В июле 2011 года у антивирусной компании была упёрта полная версия декомпилятора версии 6.1. [http://web.archive.org/web/20111228160612/http://habrahabr.ru/blogs/infosecurity/124054 TEH DRAMA!] | + | Ознакомиться с историей спионеривания можно [http://www.woodmann.com/crackz/Ida.htm тут]. В июле 2011 года у антивирусной компании была упёрта полная версия декомпилятора версии 6.1. [https://web.archive.org/web/20111228160612/https://habrahabr.ru/blogs/infosecurity/124054 TEH DRAMA!] |
| | | | |
| − | ==== SoftIce ==== | + | ===== [https://github.com/NationalSecurityAgency/ghidra NSA Ghidra] ===== |
| | + | Универсальный интерактивный фреймворк от [[ZOG|АНБ США]], написанный на [[Java]] и использует Pcode для парсинга семантики инструкций, который скармливается декомпилятору и анализатору потока управления (поддерживаются типы перехода call, branch, return, terminated return, aka exit (для крашей, main и т.д.)), а также Sleigh для дизасма. Содержит в себе гораздо более качественный декомпилятор для цпушных бинарных языков (вроде x86, PPC, ARM, MIPS и прочих с указателями), но фейлится для управляемого байткода (JVM, Dalvik и прочее ООП), т.к. не пережёвывает синтаксический сахар, исключения и прочее. Содержит эмулятор, который при должном использовании становится убийцей отладчиков, поскольку те легко детектируются, а в эмулятор можно всунуть что угодно без патчинга, вплоть до перезаписи функций проверок наличия отладки и т.п. Плюс можно эмулировать для кросс-тестирования декомпиленного кода и пкода, т.к. декомпилятор может ВНЕЗАПНО допускать ошибки, приводящие к неопределённому поведению, но это так, на случай, если кому-то нужно получить функционально эквивалентный проект на C (нет, никакого ЦПП, только в C или, если загрузчик для языка так настроен (пока что только JVM, Dalvik), в Java, ибо такой сахар, как шаблоны, почти всё ООП, начиная с классов и заканчивая RAII, просто не выживает компиляцию). |
| | + | |
| | + | ===== [https://github.com/avast/retdec Retargetable Decompiler, aka retdec] ===== |
| | + | Универсальный декомпилятор-конвейер от [[Антивирус|Avast]]. [[Ахтунг|Пассивный]], что означает, что потвикать результаты декомпиляции модулем "естественный интеллект общего назначения" ты не сможешь. Вернее сможешь, закинув код в Студию/[[Пелевин|Creator]], но декомпилятор после этого тебе помогать откажется. Тормознутый и ужасно жрёт оперативу на мизерных бинарях на несколько мегабайт, после чего падает по OOM. Частично обхозится отключением части проходов. Очень не любит виртуальные машины - на них обрезание проходов скорее всего не поможет. Как и большинство декомпиляторов, использует под капотом LLVM. Промежуточные этапы дампятся в файлы, которые потом можно скормить другим инструментам, использующим LLVM, или наоборот, выхлоп других инструментов скормить retdec. |
| | + | |
| | + | ==== GUI ==== |
| | + | |
| | + | ===== [https://github.com/radareorg/cutter Cutter] ===== |
| | + | |
| | + | Интерактивный GUI к другим инструментам, в основном для Radare2, но туда ещё подключили retdec и hex-rays как плагины. |
| | + | |
| | + | ==== Дизассемблеры ==== |
| | + | |
| | + | Дизассемблер — это утилита, преобразующая бинарный код в ассемблерный листинг. Обычно монолиты. В простейших случаях этого вполне достаточно, и остаётся немного покурить и найти то, что нужно. В худших — это каша, и без скриптов и/или отладчика не обойтись. |
| | + | |
| | + | Существует 3 вида дизассемблеров. |
| | + | |
| | + | 1. Дизассемблирует всё подряд между двумя адресами. Абсолютно бесполезны для реверсинга. |
| | + | 2. Дизассемблирует инструкции, переходя по переходам. При отсутствии контрмер, которые сильно зависят от платформы, умеют отличать код от данных и брать верные смещения. Полезны для реверсера. |
| | + | 3. Brute-force disassembly. То же самое, что и 2, но не ставятся в тупик контрмерами. Имеют смысл только для некоторых платформ. |
| | + | |
| | + | '''Hiew''' (''Hacker’s viewer''). Небольшая утилита, для нормальных людей бесполезная, юзают лишь надрочившиеся спецы, иногда — продвинутые пользователи (как шестнадцатеричный редактор). Давно существует куча GUI-шных тулзов для тех же целей, но по славной традиции тулзу продолжают использовать… |
| | + | |
| | + | '''Sourcer''' от компании V Communications. Стародавний мощный дизассемблер времен DOS и разных версий Windows. Позволял из .COM или .EXE файлов получать непосредственно .ASM файл, причём для различных компиляторов ассемблера, таких как TASM или MASM. Если было задано достаточное количество проходов при дизасемблировании, то с высокой степенью вероятности можно было при компилировании только что созданного .ASM файла получить исходную исполнимую программу байт-в-байт. Доставлял хорошими комментариями в листинге, скоростью работы, поддержкой разных типов процессора и, конечно, олдскульным ''сценовским'' интерфейсом. Сейчас не актуален, хотя некоторые анонимусы продолжают держать его в своём инструментарии, например, для дизассемблирования MBR жёсткого диска, Boot-сектора, специальных утилит, загружаемых с дискеты без какой-либо ОС (например утилиты перепрошивки BIOS или утилиты от производителей HDD), и прочего. То есть для низкосистемных нужд. Последней явилась на свет версия v8.01 от 2001 года. Sourcer — помним, любим, скорбим! |
| | + | |
| | + | ==== Отладчики ==== |
| | + | |
| | + | Отладчик — программа для контролируемого исполнения программы или в общем случае любого произвольного куска кода, вплоть до инжектированной в другой процесс DLL. Продвинутый отладчик умеет использовать аппаратные средства отладки, ну и, конечно, дизассемблировать. |
| | + | [[Файл:IDA Disasm02.jpeg|thumb|[[Матрица]] поимела тебя. Анализ кода в IDA.]] |
| | + | [[Файл:ida linux.png|thumb|IDA в линуксе или линукс в IDA?]] |
| | + | |
| | + | ===== [https://github.com/x64dbg/x64dbg x64dbg] ===== |
| | + | Основной отладчик для Windows на данный момент. Скриптуется, плагинится, но имеет отвратительно управление, к которому надо привыкать. |
| | + | |
| | + | |
| | + | ===== SoftIce ===== |
| | [[Файл:SofticeII.gif|thumb|Прошлый desktop-тред в бамплимите, начинаем новый…]] | | [[Файл:SofticeII.gif|thumb|Прошлый desktop-тред в бамплимите, начинаем новый…]] |
| − | Дебаггер, работающий на нулевом уровне, на котором можно [[42|всё]]. Появляется по нажатию CTRL+D, и всё остальное — программы, драйвера и даже некоторые прерывания перестают работать. Переставало идти даже «время», и задебажившийся индивид мог потом реально фалломорфировать, осознав сколько прошло времени в «реальном мире». Заодно обрубалась модемная связь, вызывая лютый [[багет]] от забытого брейкпоинта при ночном дозвоне по дайлапу. Можно трассировать что угодно: драйвер HDD, USB-антенны и т. п. А ещё там работает мышь и можно делать скрины. | + | Дебаггер, работающий на нулевом уровне, на котором можно [[42|всё]]. Появляется по нажатию CTRL+D, и всё остальное — программы, драйвера и даже некоторые прерывания перестают работать. Переставало идти даже «время», и задебажившийся индивид мог потом реально фалломорфировать, осознав сколько прошло времени в «реальном мире». Заодно обрубалась модемная связь, вызывая лютый [[багет]] от забытого брейкпоинта при ночном дозвоне по дайлапу. Можно трассировать что угодно: драйвер HDD, USB-антенны и т. п. А ещё там работает мышь и можно делать скрины. |
| | | | |
| − | SoftIce вышел на рынок как отладчик уровня ядра совершенно неожиданно для самих создателей этого ядра — MS. Позиционировался как тулза «для нахождения багов в софте», но последние весьма разнообразны: сюда можно отнести MS Office, требующий ключ активации. Немаловажное преимущество: он умеет считывать при загрузке инфу о библиотеке, в процессе отладки показывая имена, например, Kernel.FindClose+105h. | + | SoftIce вышел на рынок как отладчик уровня ядра совершенно неожиданно для самих создателей этого ядра — MS. Позиционировался как тулза «для нахождения багов в софте», но последние весьма разнообразны: сюда можно отнести MS Office, требующий ключ активации. Немаловажное преимущество: он умеет считывать при загрузке инфу о библиотеке, в процессе отладки показывая имена, например, Kernel.FindClose+105h. |
| | | | |
| − | Нынче похож на свежий навоз: его уже n лет никто не обновляет. И не будет — в связи с выпилом конторы разработчиков: Numega невозбранно была проебана за 30 сребреников мудацкой Compuware. В итоге всё закончилось тотальным выпилом как нумеговских проектов, так и собственно офиса бывшей Нумеги. А остатки Девпартнера отдали какому-то ебучему реселлеру Microfocus, потому что Compuware после тотального экстерминатуса Нумеги забил на все эти ваши девпартнеры-девшмартеры болт. | + | Нынче похож на свежий навоз: его уже n лет никто не обновляет. И не будет — в связи с выпилом конторы разработчиков: Numega невозбранно была проебана за 30 сребреников мудацкой Compuware. В итоге всё закончилось тотальным выпилом как нумеговских проектов, так и собственно офиса бывшей Нумеги. А остатки Девпартнера отдали какому-то ебучему реселлеру Microfocus, потому что Compuware после тотального экстерминатуса Нумеги забил на все эти ваши девпартнеры-девшмартеры болт. |
| | | | |
| − | ==== Остальные ==== | + | ===== [https://github.com/radareorg/radare2 Radare2] ===== |
| − | '''WinDbg''' — как бы быдлокодерам, испытывающим от слова «Майкрософт» жжение в области ануса, ни было обидно, это самый популярный kernel-mode отладчик со времён смерти SoftIce. Да и в user-mode Винбэг обеспечивает лютый вин, кладя болт на эти ваши Debugging API и позволяя, например, заглянуть в native code для процесса, в который уже впилен отладчик для managed code.
| + | Целый фреймворк для реверс-инжиниринга. Изначально hex-редактор включает в себя дизассемблер, декомпилятор... Лучше сами [http://rada.re/r/cmp.html смотрите]. Кроссплатформенный, с несколькими интерфейсами на выбор, а исходный код его [https://github.com/radare/radare2 открыт]. [[Ня|Ня!]] |
| | | | |
| − | '''Syser''' — китайский дебагер уровня ядра с GUI. Пришёл на смену SoftIce, загнулся в 2011, проиграв войну новым 64-битным ядрам.
| + | ===== [https://www.immunityinc.com/products/debugger/ Immunity Debugger] ===== |
| | + | Очень популярный отладчик с поддержкой автоматизации на питоне. Но дохлый. |
| | | | |
| − | '''OllyDbg''' — отладчик третьего уровня, гуишный, симпатяффный, функционала выше крыши, применим для [[95 %]] программ, а пропатчен ручками и для всех 98%. Но из-за того, что r3 среди профессионалов считатся не труъ-тулзой, подходящей скорее для скрипткидисов, чем для разбора чего-то реально сложного, автор положил на него хуй, и теперь отладчик разрабатывают новые умельцы, пафосно назвав OllyDbg 2.0. [Отечественная разработка http://www.ollydbg.de ], хоть и менее известна, чем SoftIce, вполне [[кошер]]на и к тому же [[халява|бесплатна]]. Релизы выглядят хреново, но парни явно набираются опыта и [[Ленин|идут в правильном русле]].
| |
| | | | |
| − | === Декомпиляторы === | + | ===== Остальные ===== |
| − | Современные быдлоязыки программирования типа Java, C# и прочего [[.NET|.NOT]]'a вовсе и не требуют для своего взлома применения дизассемблеров и отладчиков. Весь исходный код легко можно получить в считанные секунды, а если кодер — лох и не применил даже обфускацию, то полученные исходники от авторских будут отличаться разве что отсутствием комментариев в первых. Впрочем, и для обычных сишных бинарников есть декомпиляторы, правда, полудохлые и малоюзабельные. Кому интересно, смотреть [http://strategoxt.org/Transform/DeCompilation здесь] и [http://boomerang.sourceforge.net вот тут].
| + | '''WinDbg''' — как бы быдлокодерам, испытывающим от слова «Майкрософт» жжение в области ануса, ни было обидно, это самый популярный kernel-mode отладчик со времён смерти SoftIce. Да и в user-mode Винбэг обеспечивает лютый вин, кладя болт на эти ваши Debugging API и позволяя, например, заглянуть в native code для процесса, в который уже впилен отладчик для managed code. |
| | | | |
| − | '''.NET Reflector''' — хороший инструмент для декомпиляции программ на C# и некоторых других языках. Авторы постоянно дорабатывают своё детище, вскорости обещают декомпилировать и другие основные языки. Изначально был бесплатен, но после появления широкой аудитории стал платным, впрочем, [[Рекурсия|Reflector использовали для взлома платной версии]]. | + | '''Syser''' — китайский дебагер уровня ядра с GUI. Пришёл на смену SoftIce, загнулся в 2011, проиграв войну новым 64-битным ядрам. |
| | | | |
| − | '''dotPeek''' — детище небезызвестной JetBrains, к моменту выхода из альфы ставшее вполне себе годным инструментом, способным конкурировать с лидерами отрасли. Декомпилирует обфусцированную лапщичку, перед которой пасует даже знаменитый и всеми любимый .NET Reflector. Ах да, программа поставляется абсолютно бесплатно. | + | '''OllyDbg''' — отладчик третьего уровня, гуишный, симпатяффный, функционала выше крыши, применим для [[95 %]] программ, а пропатчен ручками и для всех 98%. Но из-за того, что r3 среди профессионалов считатся не труъ-тулзой, подходящей скорее для скрипткидисов, чем для разбора чего-то реально сложного, автор положил на него хуй, и теперь отладчик разрабатывают новые умельцы, пафосно назвав OllyDbg 2.0. [Отечественная разработка http://www.ollydbg.de ], хоть и менее известна, чем SoftIce, вполне [[кошер]]на и к тому же [[халява|бесплатна]]. Релизы выглядят хреново, но парни явно набираются опыта и [[Ленин|идут в правильном русле]]. |
| | | | |
| − | '''ILSpy''' — свободный аналог рефлектора от разработчиков SharpDevelop. Вполне юзабелен, но остановился в развитии — все люди кинуты на новую версию SharpDevelop.
| + | ==== Лифтеры ==== |
| | | | |
| − | '''JD, JavaDec, JavaByte, Cavaj, тысячи их…''' — декомпиляторы для Жабы. Инструментарий тут гораздо побогаче, чем для С#, но реально хитовых тулзов не наблюдается. Впрочем, есть смысл полуркать ([http://www.apache.org/ открытые библиотеки]: так, бесплатная [http://www.jetbrains.com/idea/download/ idea9 community edition] плюс [http://plugins.intellij.net/plugin/?id=1570 это] и вот [http://www.varaneckas.com/jad это] вполне могут помочь в декомпиляции коммерческого быдлокода.
| + | Как уже сказано, переводят ("поднимают", "отрывают") бинарники в промежуточное абстрактное представление. Промышленный фактический стандарт промежуточного представления - это биткод LLVM, файлы имеют расширение bc. LLVM - это фреймворк для построения компиляторов, содержащий в себе код для оптимизации, и всеми нами любимый clang построен на нём, как и большая часть компиляторов шейдеров для видеокарт, входящих в состав драйверов. |
| | | | |
| − | === Деобфускаторы === | + | * retdec - используйте лучше его для лифтинга. |
| | + | |
| | + | ещё следует отметить |
| | + | |
| | + | * [https://github.com/lifting-bits/mcsema McSema] - без IDA Pro бесполезен, так как полагается на него для дизассемблирования |
| | + | * [https://github.com/Microsoft/llvm-mctoll llvm-mctoll] |
| | + | |
| | + | Остальные все сдохли. |
| | + | |
| | + | ==== Декомпиляторы ==== |
| | + | ===== Машинного кода ===== |
| | + | ====== Общего назначения ====== |
| | + | * См. раздел "комбайны". Остальное - лишь пародии на них. |
| | + | * [https://github.com/yegord/snowman Snowman] |
| | + | * [http://strategoxt.org/Transform/DeCompilation здесь] |
| | + | * [http://boomerang.sourceforge.net вот тут]. |
| | + | |
| | + | ====== Специфичные для языков ====== |
| | + | Некоторые компиляторы для [[Visual Basic|некоторых языков]] генерят весьма специфический субоптимальный машинный код, который имеет определённую структуру и привязан к некоторым runtime-библиотекам. Глубоко понимая структуру этого кода можно написать декомпилятор, восстанавливающий исходный код на исходном языке относительно близко к оригиналу. При этом декомпиляторы общего назначения захлебнутся это оптимизировать. |
| | + | |
| | + | К сожалению, свободных тут почти нет, одна дорогущая проприетарь: |
| | + | * [https://www.vb-decompiler.org/ VBDecompiler] |
| | + | * [https://qiil.io/ VBReformer] |
| | + | |
| | + | |
| | + | |
| | + | ===== LLVM bitcode ===== |
| | + | |
| | + | Декомпилируют из поднятого лифтером представления. |
| | + | |
| | + | * retdec |
| | + | * [https://github.com/staticafi/llvm2c llvm2c] - работает кое-как, но на гораздо меньшем количестве бинарников, чем retdec. |
| | + | |
| | + | ===== Языки с байт-кодом ===== |
| | + | Современные языки программирования типа [[Java]], C# и прочего [[.NET|.NET]]'a вовсе и не требуют для своего взлома применения дизассемблеров и отладчиков. Весь исходный код легко можно получить в считанные секунды, а если кодер не применил даже обфускацию, то полученные исходники от авторских будут отличаться разве что отсутствием комментариев в первых. |
| | + | |
| | + | ====== .Net ====== |
| | + | '''.NET Reflector''' — хороший инструмент для декомпиляции программ на C# и некоторых других языках. Авторы постоянно дорабатывают своё детище, вскорости обещают декомпилировать и другие основные языки. Изначально был бесплатен, но после появления широкой аудитории стал платным, впрочем, [[Рекурсия|Reflector использовали для взлома платной версии]]. |
| | + | |
| | + | [https://github.com/icsharpcode/ILSpy '''ILSpy'''] — свободный аналог рефлектора от разработчиков SharpDevelop. |
| | + | |
| | + | [https://www.jetbrains.com/decompiler/ '''dotPeek'''] — детище небезызвестной JetBrains, к моменту выхода из альфы ставшее вполне себе годным инструментом, способным конкурировать с лидерами отрасли. Декомпилирует обфусцированную лапщичку, перед которой пасует даже знаменитый и всеми любимый .NET Reflector. Ах да, программа поставляется абсолютно бесплатно. |
| | + | |
| | + | [https://www.telerik.com/products/decompiler.aspx '''JustDecompile'''] - декомпилятор от конкурентов из [[Толкиен|Telerik]] |
| | + | |
| | + | ====== JVM ====== |
| | + | * [https://github.com/Storyyeller/Krakatau Krakatau] - успешно декомпилирует то, на чём все другие декомпиляторы просто падают с ошибками, а именно программы, написанные не на [[Java]], но тоже скомпилированные в байт-код JVM. Правда декомпилированный код содержит излишнюю информацию, которую приходится чистить руками. |
| | + | * [https://github.com/leibnitz27/cfr CFR] - очень неплохой декомпилятор. |
| | + | * [https://github.com/deathmarine/Luyten luyten] |
| | + | * [https://github.com/java-decompiler/jd-gui JD] |
| | + | * JavaDec, JavaByte, Cavaj, тысячи их… Инструментарий тут гораздо побогаче, чем для .net. |
| | + | |
| | + | ====== [[Python]] ====== |
| | + | Эталонная реализация питона, cpython, компилирует код в байт-код, и исполняет его. Возможно распространять не исходники, а байт-код. |
| | + | |
| | + | К счастью есть [https://github.com/rocky/python-uncompyle6 uncompyle6]. |
| | + | |
| | + | ==== Деобфускаторы ==== |
| | Нередко код бывает обфусцирован. Зачастую помогают деобфускаторы. Для интерпретируемых языков (за исключением [[perl]]) обычно не требуются или легко самопишутся. | | Нередко код бывает обфусцирован. Зачастую помогают деобфускаторы. Для интерпретируемых языков (за исключением [[perl]]) обычно не требуются или легко самопишутся. |
| | | | |
| − | Для [[JavaScript]] — [http://jsbeautifier.org/ JSBeautifier]. | + | Для [[JavaScript]] — [https://jsbeautifier.org/ JSBeautifier]. |
| | | | |
| − | Для шарпа один из лучших — [https://github.com/0xd4d/de4dot de4dot]. | + | Для шарпа один из лучших — [https://github.com/0xd4d/de4dot de4dot]. |
| | | | |
| − | === Прочая дребедень === | + | ==== Парсеры "исполняемых" форматов ==== |
| − | '''PETools''' — тулза некоего NeoX (йодмен — человек, выливший йод на хуй). Пригодна для работы с PE-форматом. Конкурент — LordPE (умеет фиксить SizeOfImage в пебе), остальное из этой серии — УГ.
| + | Бинари для современных ОС содержат не только машинный код, но и информацию о том, как его необходимо правильно загружать в память. В никсах используется ELF, в винде - PE, в MacOS/gayOS - MachO. |
| | | | |
| − | '''RSATool''' — GUI-программа для прокачивания скила по RSA. Автор — эгоист из ТМГ (илита сцены, ни одного нюка). Для факторизации не годна, лучше юзать msieve. | + | Большинство из инструментов - библиотеки. standalone инструменты нужны больше для внешнего осмотра, все декомпиляторы/дизассемблеры/лифтеры либо пользуются чужими либами, либо имеют свою либу внутри себя. |
| | + | |
| | + | ===== Универсальные ===== |
| | + | * [https://github.com/lief-project/LIEF LIEF] - в большинстве случаев тебе нужен именно он. Либа с широким функционалом. Жаль только, что с нуля делать бинарники не умеет, только редактировать существующие. |
| | + | |
| | + | ===== PE ===== |
| | + | * [https://github.com/blackberry/pe_tree PE Tree] |
| | + | * '''PETools''' — тулза некоего NeoX. |
| | + | * LordPE - (умеет фиксить SizeOfImage в пебе). |
| | + | |
| | + | ===== ELF ===== |
| | + | * [https://sourceware.org/elfutils/ libelf] - умеер и в парсинг, и в конструирование. [[Столлман|LGPL v3]] |
| | + | * [https://github.com/eliben/pyelftools pyelftools] и статьи ([https://eli.thegreenplace.net/2012/08/13/how-statically-linked-programs-run-on-linux 1] [https://eli.thegreenplace.net/2011/11/03/position-independent-code-pic-in-shared-libraries 2] [https://eli.thegreenplace.net/2011/11/11/position-independent-code-pic-in-shared-libraries-on-x64 3] [https://eli.thegreenplace.net/2011/08/25/load-time-relocation-of-shared-libraries 4]) от [[HL2|Илая]] [[Бендер]]ски |
| | + | |
| | + | === Динамическая инструментация === |
| | + | |
| | + | Инструменты из этой группы позволяют автоматически навесить на чужой код свои обработчики. Полезно, например, для логгирования, некоторые инструменты из той группы сделаны поверх инструментов из этой группы. |
| | + | |
| | + | * [https://github.com/DynamoRIO/dynamorio DynamoRIO] |
| | + | * [https://github.com/frida/frida frida] |
| | + | * [https://sourceware.org/systemtap/ systemtap] - для ядра Linux. |
| | + | |
| | + | === Символьное выполнение === |
| | + | Ты накладываешь условие на желаемое состояние программы, система вычисляет входные данные, необходимые, чтобы его достичь. Разумеется, без каких либо гарантий, задача вообще неразрешима. |
| | + | |
| | + | * [https://github.com/angr/angr angr] |
| | + | |
| | + | === Патч-анализ и дифферы для control flow graph === |
| | + | |
| | + | Вендор выпустил патч, а что в нём - не сказал. Не порядок. |
| | + | |
| | + | * [https://github.com/ohjeongwook/DarunGrim DarunGrim] Проприетарь. |
| | + | * [https://github.com/seemoo-lab/polypyus Polypyus] |
| | + | |
| | + | === Логгирование поведения === |
| | + | |
| | + | Иногда нам нужно создать свою программу, взаимодействующую с определённой библиотекой с известным API, интерфейсом ядра ОС, устройством или с сетевым сервисом, обычно с сайтом. Тут незаменимы следующие инструменты: |
| | + | |
| | + | ==== Логгирование библиотечных вызовов ==== |
| | + | |
| | + | * ltrace для никсов |
| | + | * [https://github.com/mxmssh/drltrace drltrace] для Windows |
| | + | |
| | + | ==== Логгирование общения по сети ==== |
| | + | * [https://wireshark.org/ Wireshark] |
| | + | * [https://github.com/mitmproxy/mitmproxy mitmproxy] |
| | + | * [https://www.telerik.com/fiddler Telerik Fiddler] ("бесплатная" проприетарь, но на шарпе, см. пункт "Декомпиляторы") |
| | + | |
| | + | ==== Логгирование USB ==== |
| | + | * [https://github.com/desowin/usbpcap USBPcap] (Windows) |
| | + | * [https://www.kernel.org/doc/html/latest/usb/usbmon.html usbmon] (Linux) |
| | + | |
| | + | ==== Логгирование API OS ==== |
| | + | |
| | + | * strace |
| | + | * [https://docs.microsoft.com/en-us/sysinternals/downloads/procmon Microsoft Sysinternals Process Monitor] |
| | + | |
| | + | === Реверсинг файловых форматов === |
| | + | |
| | + | * [https://github.com/kaitai-io/kaitai_struct Kaitai Struct] - язык описания. Позволяет быстро и интуитивно понятно прототипировать парсеры, в почти реальном времени визуализировать результат и повторять до полного понимания структуры формата |
| | + | * Для сложных случаев: |
| | + | ** [https://github.com/Mahlet-Inc/hobbits Hobbits] - продвинутая визуализация бинарей через цифровую обработку сигнала. |
| | + | ** [https://github.com/codilime/veles Veles] - просто красивые картинки, построенные по всяким эвристикам, которые типа помогают видеть структуру в бинари, а на деле не помогают никак. По крайней мере мне не зашло. |
| | + | |
| | + | |
| | + | === Аппаратный реверсинг === |
| | + | |
| | + | * осциллограф с подключением к компу |
| | + | * устройства для работы с интерфейсами и сетями: UART, JTAG, SPI, I2C, CAN, Wi-Fi, Bluetooth, LoRa, ZigBee |
| | + | * glitch-kit |
| | + | |
| | + | ==== SDR ==== |
| | + | Позволяют слушать и слать произвольные радиосигналы. Необходимы для реверсинга беспроводных протоколов. |
| | + | |
| | + | * [https://www.rtl-sdr.com/ rtl-sdr] - дешёвый USB-донгл |
| | + | * [https://github.com/seemoo-lab/nexmon nexmon] - monitor mode + SDR из Wi-Fi чипов в телефонах и Raspberri Pi |
| | + | * [https://github.com/mossmann/hackrf hackrf], [https://www.nuand.com/ bladerf], [https://github.com/rad1o/hardware rad1o] - платы на основе FPGA |
| | + | |
| | + | ==== FPGA ==== |
| | + | Позволяет делать многое из вышеперечисленного. По сути микросхема, определяемая прошивкой. Обычно используется для быстрой обработки сигнала. |
| | + | |
| | + | |
| | + | |
| | + | === Прочее === |
| | + | '''RSATool''' — GUI-программа для прокачивания скила по RSA. Автор — эгоист из ТМГ (илита сцены, ни одного нюка). Для факторизации не годна, лучше юзать msieve. |
| | + | |
| | + | === Архив даташитов и документация === |
| | + | |
| | + | Без этих вещей вы никогда не узнаете, что процессор Nippon-Denso NP648976 на самом деле жалкий клон Motorola 6803 с 16К ROM на борту. А когда узнаете, поймёте, что япошки никогда ничего сами не придумывали, а только умело пиздили. |
| | | | |
| | == Вещи, затрудняющие анализ == | | == Вещи, затрудняющие анализ == |
|
|
| | Продвинутые программы редко содержат паранойю, например, [[Винрар|WinRar]]. | | Продвинутые программы редко содержат паранойю, например, [[Винрар|WinRar]]. |
| | | | |
| − | '''[[Быдлокод]]инг'''. Как это ни удивительно, но быдлопроги зачастую обладают естественной защитой от анализа. Cкажем, проект на [[Visual Basic]], скомпилированный в P-code, читать [[Умение разбираться в чужом коде|гораздо труднее]], чем продукт полноценного [[Pure C|C]]-программера. Также сложность представляет [[индус]]ский стиль программирования — быдлокодер неумело пытается защитить своё творение путём искусственного раздутия кода, хотя тот и без всякой доработки может представлять собой такую НЕХ, что даже имея оригинальные исходники, хрен поймёшь, как оно работает. | + | '''Выпуск эксклюзивно под [[Apple|анально огороженную платформу]] для [[потреблядь|демонстративного потребления]]''' - платформой не пользуются те, кого могла бы заинтересовать крякнутая прога или отреверсенная программа - касание технических деталей и/или использование софта, за который не заплачено, считается ниже достоинства пользователей данной платформы, как если бы генеральный директор компании с доходом миллион в неделю собственноручно занимался мытьём туалета у себя дома вместо того, чтобы нанять профессионала и заплатить ему, или ездил бы на автомобиле, который ремонтируют не в официальной дилерской мастерской. Любители сами поковыряться и нелюбители понтов просто используют [[Android|другую платформу]]. Раз никому не нужно - нет смысла и реверсить. |
| | + | |
| | + | '''[[Быдлокод]]инг'''. Как это ни удивительно, но быдлопроги зачастую обладают естественной защитой от анализа. Cкажем, проект на [[Visual Basic]], скомпилированный в P-code, читать [[Умение разбираться в чужом коде|гораздо труднее]], чем продукт полноценного [[Pure C|C]]-программера. Даже после декомпиляции. У профессиональных программистов есть представление, какой примерно должна быть архитектура для решения той или иной задачи. Архитектура строится из известных шаблонов (которые есть даже у тех, кто никогда о них не слышал, great minds think alike). У быдлокодеров понятия обо всём этом нет, поэтому их говнокод делает неожиданные и дикие для профессионала вещи и имеет ненужные зависимости между частями, что портит жизнь как самому быдлокодеру, так и всем остальным, вынужденным в разбираться в его коде. Также сложность представляет [[индус]]ский стиль программирования — быдлокодер неумело пытается защитить своё творение путём искусственного раздутия кода, хотя тот и без всякой доработки может представлять собой такую НЕХ, что даже имея оригинальные исходники, хрен поймёшь, как оно работает - чтение такого листинга может вызывать рвоту. |
| | | | |
| | '''[[Дзен]]-кодинг''' — использование хитросплетений паттернов проектирования и вообще кодогенерации шибко «умным» программистом приводит к созданию не менее отвратительного кода, который что в сорцах хуй проссышь, что в асме. | | '''[[Дзен]]-кодинг''' — использование хитросплетений паттернов проектирования и вообще кодогенерации шибко «умным» программистом приводит к созданию не менее отвратительного кода, который что в сорцах хуй проссышь, что в асме. |
|
|
| | '''Обфускация''' — превращение исходного/промежуточного/конечного (нужное подчеркнуть) исполняемого кода в [[говно|кашу]], которую невозможно читать. Из исходной инструкции обфускатор делает пять (а то и сотню, в случае <del>паранойи</del> пермутации), делающих то же, что и одна, плюс ещё 200, которые вообще ничего не делают, и 28 препятствующих эмулированию или отладке. Применяется как в «хороших» программах, чтобы перенести появление кряка, так и в «плохих», типа полиморфных вирусов, стремящихся оттянуть момент своей детекции — каждая следующая копия будет непохожа на предыдущую. Олсо [[фейл|пытается]] юзаться в илитной малваре типа рустока и прочей, в расчёте на то, что антивирусные вендоры будут сосать хуйцы. Кстати, есть такой сайтик http://www.ioccc.org, где проводится конкурсы на самую запутанную программу для UNIX. Победители конкурса — истинные шедевры кодописательства и кодозапутывания. Настоятельно рекомендуются к ознакомлению. | | '''Обфускация''' — превращение исходного/промежуточного/конечного (нужное подчеркнуть) исполняемого кода в [[говно|кашу]], которую невозможно читать. Из исходной инструкции обфускатор делает пять (а то и сотню, в случае <del>паранойи</del> пермутации), делающих то же, что и одна, плюс ещё 200, которые вообще ничего не делают, и 28 препятствующих эмулированию или отладке. Применяется как в «хороших» программах, чтобы перенести появление кряка, так и в «плохих», типа полиморфных вирусов, стремящихся оттянуть момент своей детекции — каждая следующая копия будет непохожа на предыдущую. Олсо [[фейл|пытается]] юзаться в илитной малваре типа рустока и прочей, в расчёте на то, что антивирусные вендоры будут сосать хуйцы. Кстати, есть такой сайтик http://www.ioccc.org, где проводится конкурсы на самую запутанную программу для UNIX. Победители конкурса — истинные шедевры кодописательства и кодозапутывания. Настоятельно рекомендуются к ознакомлению. |
| | | | |
| − | '''Антиотладка''' — приёмы для борьбы с отладкой. Для мелкософтовского виндувса достаточно <code>IsDebuggerPresent()</code>. Например, уныло посмотреть поле BeingDebugged в пебе, или посмотреть значение NtGlobalFlag. Это 2 самых говнометода, илита же предпочитает еблю с rdtsc (многопроцессорные системы сосут хуйцы), ядерные сплойты и парсинг физической памяти. На каждый такой приём существует антиприём, [[рекурсия|ну и так далее]]. И обычно это люто, бешено глючит, бсодит, и вообще, нормальные челы не отлаживают всякую хуиту на своих компах, а заставляют давиться этим калом эмуляторы: Virtual Box, VMWare, VirtualPC и т. д. | + | '''Антиотладка''' — приёмы для борьбы с отладкой. Для мелкософтовского виндувса достаточно <code>IsDebuggerPresent()</code>. Например, уныло посмотреть поле BeingDebugged в Process Environment Block, или посмотреть значение NtGlobalFlag. Это 2 самых говнометода, илита же предпочитает еблю с rdtsc (многопроцессорные системы сосут хуйцы), ядерные сплойты и парсинг физической памяти. На каждый такой приём существует антиприём, [[рекурсия|ну и так далее]]. И обычно это люто, бешено глючит, бсодит, и вообще, нормальные челы не отлаживают всякую хуиту на своих компах, а заставляют давиться этим калом эмуляторы: Virtual Box, VMWare, VirtualPC и т. д. |
| | | | |
| − | '''Краденые куски''' — часть кода программы выпиливается, а выполнение оригинального куска выносится вовне: в протектор, на удалённый сервер, донгл и прочая. Когда хацкер делает дамп, он получает не всю программу, а лишь её часть. | + | '''Краденые куски''' — часть кода программы выпиливается, а выполнение оригинального куска выносится вовне: в протектор, на удалённый сервер, донгл и прочая. Когда хацкер делает дамп, он получает не всю программу, а лишь её часть. Кошерным примером реализации этого метода являются токены RSA SecurID. |
| | | | |
| | '''Виртуальные машины''' — часть кода программы транслируется в байткоды другого (не обязательно реального) процессора, и добавляется транслятор, который эти байткоды хавает и выполняет. Некоторые протекторы, такие как «Темида», превращают один грамм исходного быдлокода в 1-3 десятка кило нового говна. | | '''Виртуальные машины''' — часть кода программы транслируется в байткоды другого (не обязательно реального) процессора, и добавляется транслятор, который эти байткоды хавает и выполняет. Некоторые протекторы, такие как «Темида», превращают один грамм исходного быдлокода в 1-3 десятка кило нового говна. |
|
|
| | | | |
| | == Немного о личных качествах самих реверсеров == | | == Немного о личных качествах самих реверсеров == |
| − | | + | {{Цитата|pre=1|1=Вечер. Автобус. Едет. На первом сиденье сидят двое. У них коэф. интеллекта IQ=180: |
| − | {{Цитата|pre=1|1=Вечер. Автобус. Едет. На первом сиденье сидят двое. У них коэф. интеллекта IQ=180: | + | — Я вчера Гамлета в оригинале читал… Такое эстетическое наслаждение… |
| − | - Я вчера Гамлета в оригинале читал... Такое эстетическое наслаждение...
| + | На другом сиденье сидят ещё двое. У них IQ=140: |
| − | На другом сиденье сидят ещё двое. У них IQ=140: | + | — Я вчера посмотрел «Андалузского пса» и нашёл коррелят с ранними картинами Пикассо… |
| − | - Я вчера посмотрел "Андалузского пса" и нашёл коррелят с ранними картинами Пикассо...
| + | На другом сиденье сидят двое. У них IQ=100: |
| − | На другом сиденье сидят двое. У них IQ=100: | + | — Мы с другом час назад посмотрели «От заката до рассвета». Как там тёлка говорит тёлке, что… |
| − | - Мы с другом час назад посмотрели "От заката до рассвета". Как там тёлка говорит тёлке, что...
| + | На другом сиденье сидят двое других. У них IQ=80: |
| − | На другом сиденье сидят двое других. У них IQ=80: | + | — Слышь, брат! Помнишь, какое пойло мы в мерсе пили, когда ноги какой-то б..яди торчали в окне… |
| − | - Слышь, брат! Помнишь, какое пойло мы в мерсе пили, когда ноги какой-то б..яди торчали в окне...
| + | А на задней площадке стоят двое с IQ=40: |
| − | А на задней площадке стоят двое с IQ=40: | + | — Ну вот, вскрываю прогу твоим дебаггером…}} |
| − | - Ну вот, вскрываю прогу твоим дебаггером...}}
| + | Анекдоты — анекдотами, но реверсивщики делают много хорошего. Помимо упомянутого участия в разработке всевозможных антивирусов, именно один из них создал неофициальный кодовый патч (UCP) для [[Master of Orion]] образца 2016 г, позволивший модить игруху сверх дозволенного разработчиками. Продукт продолжает расширяться и дорабатываться. Самое забавное, что даже по строгим заокеанским законам собственник не осудил кулибина, но и не заплатил за старания, а вместо этого тупо скомуниздил несколько решений в официальный патч. Вот тебе, бабушка, и [[авторские права]]! |
| | | | |
| | == Ресурсы == | | == Ресурсы == |
| − | * [http://wasm.ru WASM.ru] — Windows Assembler Site, ориентирован в том числе на «Отладка и дизассемблирование программ» и «[[ВП|Защита от предыдущего пункта]]». Отличная подборка статей на разные околореверсные тематики, набор исходников и утилит (впрочем, не сильно приватных), а также форум, где можно получить или поделиться знаниями в области ассемблера. В Германии забанен <del>кровавой гэбней</del> TrendMicro. | + | * [http://wasm.ru/ WASM.ru] — Windows Assembler Site, ориентирован в том числе на «Отладка и дизассемблирование программ» и «[[ВП|Защита от предыдущего пункта]]». Отличная подборка статей на разные околореверсные тематики, набор исходников и утилит (впрочем, не сильно приватных), а также форум, где можно получить или поделиться знаниями в области ассемблера. В Германии забанен <del>кровавой гэбней</del> TrendMicro. В настоящее время ушел в вечность. Появились [https://wasm.in/ псевдоподия] основанные на слитых базах форума, короч внимания не достойны. |
| | * [http://exelab.ru exelab.ru] — более узкоспециализированный форум. | | * [http://exelab.ru exelab.ru] — более узкоспециализированный форум. |
| − | * [http://www.exetools.com/ exetools] — некогда был неплохой сайт, где тусило немало [[ИЛ]]. Сейчас анально огородились, без [[инвайт]]ов не попасть, на ftp не зайти. | + | * [https://www.exetools.com/ exetools] — некогда был неплохой сайт, где тусило немало [[ИЛ]]. Сейчас анально огородились, без [[инвайт]]ов не попасть, на ftp не зайти. |
| | * [http://www.woodmann.com/fravia/ woodmann/fravia] — с чего начинается реверсинг, с картинки в твоем букваре… Самый натуральный букварь, на котором выросло поколение реверсеров конца 90-х. | | * [http://www.woodmann.com/fravia/ woodmann/fravia] — с чего начинается реверсинг, с картинки в твоем букваре… Самый натуральный букварь, на котором выросло поколение реверсеров конца 90-х. |
| | * [http://www.openrce.org OpenRCE], [http://www.reverse4you.org/ r0 Crew] — ещё комьюнити реверсеров, где местами можно найти интересные тулзы, скрипты и плагины. | | * [http://www.openrce.org OpenRCE], [http://www.reverse4you.org/ r0 Crew] — ещё комьюнити реверсеров, где местами можно найти интересные тулзы, скрипты и плагины. |
| | * [http://beginners.re/RE_for_beginners-ru.pdf Еще один учебник для начинающих на русском] | | * [http://beginners.re/RE_for_beginners-ru.pdf Еще один учебник для начинающих на русском] |
| | + | * [[:w:International Journal of Proof-of-Concept]] — на инглише. Познавательный журнал. |
| | | | |
| | == См. также == | | == См. также == |