Дизассемблер: различия между версиями
[непроверенная версия] | [отпатрулированная версия] |
Нет описания правки |
Спасено источников — 2, отмечено мёртвыми — 0. Сообщить об ошибке. См. FAQ.) #IABot (v2.0.9.5 |
||
(не показано 47 промежуточных версий 38 участников) | |||
Строка 1: | Строка 1: | ||
'''Дизассе́мблер''' — [[транслятор]], преобразующий [[машинный язык|машинный код]] |
'''Дизассе́мблер''' (от {{lang-en|disassembler}} [{{IPA|ˌdɪsəˈsɛmblə(r)}}]) — [[транслятор]], преобразующий [[машинный язык|машинный код]], [[Объектный модуль|объектный файл]] или библиотечные модули в текст [[компьютерная программа|программы]] на [[язык ассемблера|языке ассемблера]]. |
||
По режиму работы с пользователем делятся на автоматические и интерактивные. Такие дизассемблеры генерируют готовый листинг, который можно затем править в текстовом редакторе. Пример интерактивного — [[IDA]]. Он позволяет изменять правила дизассемблирования и является весьма удобным инструментом для [[исследование программ|исследования программ]]. |
|||
По режиму работы с пользователем делятся на |
|||
Дизассемблеры бывают однопроходные и многопроходные. Основная трудность при работе дизассемблера — отличить данные от машинного кода, поэтому на первых проходах автоматически или интерактивно собирается информация о границах процедур и функций, а на последнем проходе формируется итоговый листинг. Интерактивность позволяет улучшить этот процесс, так как просматривая дамп дизассемблируемой области памяти, программист может сразу выделить строковые константы, дать содержательные имена известным точкам входа, прокомментировать разобранные им фрагменты программы. Обычно однопроходный дизассемблер (как и построчный ассемблер) является составной частью [[отладчик]]а. |
|||
* Автоматические |
|||
* Интерактивные |
|||
Чаще всего дизассемблер используют для анализа программы (или её части), [[исходный текст]] которой неизвестен — с целью модификации, копирования или взлома. Реже — для поиска ошибок ([[баг]]ов) в программах и [[компилятор]]ах, а также для анализа и оптимизации создаваемого [[компилятор]]ом машинного кода. |
|||
Примером автоматических дизассемблеров может служить [[Sourcer]]. Такие дизассемблеры генерируют готовый листинг, который можно затем править в текстовом редакторе. |
|||
Пример интерактивного — [[IDA]]. Он позволяет изменять правила дизассемблирования, весьма удобный инструмент для [[исследование программ|исследования программ]]. |
|||
При работе с исполняемым кодом или байт-кодом, созданным на некоторых языках высокого уровня (например, java) имеется возможность восстановить не только текст на языке ассемблера, но даже и структуру классов программы, а если при компиляции исполняемого файла не была отключена отладочная информация — то и исходный текст программы. Для исключения таких возможностей используется [[обфускация]]. |
|||
Дизассемблеры бывают однопроходные и многопроходные. Основная трудность при работе дизассемблера -- отличить данные от машинного кода, поэтому на первых проходах автоматически или интерактивно собирается информация о границах процедур и функций, а на последнем проходе формируется итоговый листинг. Интерактивность позволяет улучшить этот процесс, так как просматривая дамп диссасемблируемой области памяти программист может сразу выделить строковые константы, дать содержательные имена известным точкам входа, прокомментировать разобранные им фрагменты программы. |
|||
== Примеры программ-дизассемблеров == |
|||
Чаще всего дизассемблер используют для анализа [[компьютерная программа|программы]] (или ее части), [[исходный текст]] которой неизвестен — с целью модификации, копирования или взлома. Реже — для поиска ошибок ([[баг]]ов) в [[компьютерная программа|программах]] и [[компилятор]]ах, а также для анализа оптимизации создаваемых [[компилятор]]ом машинного кода. |
|||
* [[IDA]] |
|||
* [[Sourcer]] |
|||
Обычно однопроходный дисассемблер (как и построчный ассемблер) является составной частью [[отладчик]]а. |
|||
* [[Hiew]] |
|||
* [[Beye]] |
|||
* [[HT editor]] |
|||
* [[Hacker Disassembler Engine]] |
|||
* [[CADt]] |
|||
* [[Objdump]] |
|||
* [[Radare2]] |
|||
* Rizin<ref>{{Cite web|url=https://rizin.re/|title=Rizin|lang=en|last=Rizin|website=Rizin|access-date=2023-12-10|archive-date=2023-11-28|archive-url=https://web.archive.org/web/20231128115203/https://rizin.re/|url-status=live}}</ref> и Cutter<ref>{{Cite web|url=https://cutter.re//|title=Cutter|lang=en|website=Cutter|access-date=2023-12-10|archive-date=2023-12-09|archive-url=https://web.archive.org/web/20231209131025/https://cutter.re//|url-status=live}}</ref> (графический интерфейс для Rizin) |
|||
* {{нп5|Ghidra}} |
|||
== См. также == |
== См. также == |
||
Строка 22: | Строка 29: | ||
* [[Взлом программного обеспечения]] |
* [[Взлом программного обеспечения]] |
||
* [[Отладчик]] |
* [[Отладчик]] |
||
* [[ |
* [[Portable Executable]] |
||
* [[Sourcer]] |
|||
* [[Hiew]] |
|||
* [[Biew]] |
|||
* [[HT editor]] |
|||
* [[Hacker Disassembler Engine]] |
|||
* [[CADt]] |
|||
* [[Vb-decompiler]] |
|||
== |
== Примечания == |
||
{{примечания}} |
|||
*[http://www.wasm.ru/toollist.php?list=13 Популярные дизассемблеры] |
|||
*[http://www.program-transformation.org/Transform/DisAssembly transformation Wiki on disassembly] |
|||
*[http://www.openrce.org/ OpenRCE: Various Disassembler Resources and Plug-ins] |
|||
*[http://www.thefreecountry.com/programming/disassemblers.shtml The free country] |
|||
*[http://www.programmersheaven.com/zone5/cat460/index.htm Programmer's heaven] |
|||
Литература |
== Литература == |
||
* {{книга |
* {{книга |
||
|автор=Владислав Пирогов. |
|автор=Владислав Пирогов. |
||
Строка 50: | Строка 46: | ||
* {{книга |
* {{книга |
||
|автор=Владислав Пирогов. |
|автор=Владислав Пирогов. |
||
|заглавие=Ассемблер и дизассемблирование |
|заглавие=Ассемблер и дизассемблирование |
||
|место={{СПб}} |
|место={{СПб}} |
||
|издательство=[[БХВ-Петербург (издательство)|БХВ-Петербург]] |
|издательство=[[БХВ-Петербург (издательство)|БХВ-Петербург]] |
||
Строка 56: | Строка 52: | ||
|страниц=464 |
|страниц=464 |
||
|isbn=5-94157-677-3 |
|isbn=5-94157-677-3 |
||
}} |
|||
* {{книга |
|||
|автор=Крис Касперски, Ева Рокко. |
|||
|заглавие=Искусство дизассемблирования |
|||
|место={{СПб}} |
|||
|издательство=[[БХВ-Петербург (издательство)|БХВ-Петербург]] |
|||
|год=2008 |
|||
|страниц=896 |
|||
|isbn=978-5-9775-0082-1 |
|||
}} |
}} |
||
== Ссылки == |
|||
{{wiktionary|дизассемблер}} |
|||
* {{cite web |
|||
|url = http://www.wasm.ru/toollist.php?list=13 |
|||
|title = Инструменты > Дизассемблеры |
|||
|publisher = wasm.ru |
|||
|accessdate = 2009-09-01 |
|||
|lang = ru |
|||
|description = Популярные дизассемблеры |
|||
|archiveurl = https://www.webcitation.org/617huqr1j?url=http://www.wasm.ru/toollist.php?list=13 |
|||
|archivedate = 2011-08-22 |
|||
}} |
|||
* {{cite web |
|||
|url = http://www.thefreecountry.com/programming/disassemblers.shtml |
|||
|title = Free Disassemblers, Decompilers, Hex Editors & Hex Viewers |
|||
|publisher = thefreecountry.com |
|||
|accessdate = 2009-09-01 |
|||
|lang = en |
|||
|archiveurl = https://www.webcitation.org/617hvcuUJ?url=http://www.thefreecountry.com/programming/disassemblers.shtml |
|||
|archivedate = 2011-08-22 |
|||
}} |
|||
* {{cite web |
|||
|url = http://www.openrce.org/articles/ |
|||
|title = OpenRCE (Open Reverse Code Engineering) |
|||
|accessdate = 2009-09-01 |
|||
|lang = en |
|||
|description = Various Disassembler Resources and Plug-ins |
|||
|archiveurl = https://www.webcitation.org/617hw5Kga?url=http://www.openrce.org/articles/ |
|||
|archivedate = 2011-08-22 |
|||
}} |
|||
* {{cite web |
|||
|url = http://www.program-transformation.org/Transform/DisAssembly |
|||
|title = Program Transformation Wiki / Dis Assembly |
|||
|accessdate = 2009-09-01 |
|||
|lang = en |
|||
|archiveurl = https://www.webcitation.org/617hwkBUM?url=http://www.program-transformation.org/Transform/DisAssembly |
|||
|archivedate = 2011-08-22 |
|||
}} |
|||
[[Категория:Ассемблер]] |
[[Категория:Ассемблер]] |
||
[[bg:Дизасемблер]] |
|||
[[ca:Desassemblador]] |
|||
[[cs:Disassembler]] |
|||
[[de:Disassembler]] |
|||
[[en:Disassembler]] |
|||
[[es:Desensamblador]] |
|||
[[et:Disassembler]] |
|||
[[fr:Désassembleur]] |
|||
[[hu:Disassembler]] |
|||
[[it:Disassembler]] |
|||
[[ja:逆アセンブラ]] |
|||
[[nl:Disassembler]] |
|||
[[pl:Deasembler]] |
|||
[[pt:Desmontador]] |
|||
[[sv:Disassemblator]] |
|||
[[uk:Дизасемблер]] |
Текущая версия от 13:57, 16 апреля 2024
Дизассе́мблер (от англ. disassembler [ˌdɪsəˈsɛmblə(r)]) — транслятор, преобразующий машинный код, объектный файл или библиотечные модули в текст программы на языке ассемблера.
По режиму работы с пользователем делятся на автоматические и интерактивные. Такие дизассемблеры генерируют готовый листинг, который можно затем править в текстовом редакторе. Пример интерактивного — IDA. Он позволяет изменять правила дизассемблирования и является весьма удобным инструментом для исследования программ.
Дизассемблеры бывают однопроходные и многопроходные. Основная трудность при работе дизассемблера — отличить данные от машинного кода, поэтому на первых проходах автоматически или интерактивно собирается информация о границах процедур и функций, а на последнем проходе формируется итоговый листинг. Интерактивность позволяет улучшить этот процесс, так как просматривая дамп дизассемблируемой области памяти, программист может сразу выделить строковые константы, дать содержательные имена известным точкам входа, прокомментировать разобранные им фрагменты программы. Обычно однопроходный дизассемблер (как и построчный ассемблер) является составной частью отладчика.
Чаще всего дизассемблер используют для анализа программы (или её части), исходный текст которой неизвестен — с целью модификации, копирования или взлома. Реже — для поиска ошибок (багов) в программах и компиляторах, а также для анализа и оптимизации создаваемого компилятором машинного кода.
При работе с исполняемым кодом или байт-кодом, созданным на некоторых языках высокого уровня (например, java) имеется возможность восстановить не только текст на языке ассемблера, но даже и структуру классов программы, а если при компиляции исполняемого файла не была отключена отладочная информация — то и исходный текст программы. Для исключения таких возможностей используется обфускация.
Примеры программ-дизассемблеров
[править | править код]- IDA
- Sourcer
- Hiew
- Beye
- HT editor
- Hacker Disassembler Engine
- CADt
- Objdump
- Radare2
- Rizin[1] и Cutter[2] (графический интерфейс для Rizin)
- Ghidra[англ.]
См. также
[править | править код]- Декомпилятор
- Дизассемблер длин
- Ассемблер
- Обратная инженерия
- Взлом программного обеспечения
- Отладчик
- Portable Executable
Примечания
[править | править код]- ↑ Rizin Rizin (англ.). Rizin. Дата обращения: 10 декабря 2023. Архивировано 28 ноября 2023 года.
- ↑ Cutter (англ.). Cutter. Дата обращения: 10 декабря 2023. Архивировано 9 декабря 2023 года.
Литература
[править | править код]- Владислав Пирогов. Ассемблер для Windows. — СПб.: БХВ-Петербург, 2007. — 896 с. — ISBN 978-5-9775-0084-5.
- Владислав Пирогов. Ассемблер и дизассемблирование. — СПб.: БХВ-Петербург, 2006. — 464 с. — ISBN 5-94157-677-3.
- Крис Касперски, Ева Рокко. Искусство дизассемблирования. — СПб.: БХВ-Петербург, 2008. — 896 с. — ISBN 978-5-9775-0082-1.
Ссылки
[править | править код]- Инструменты > Дизассемблеры . wasm.ru. — Популярные дизассемблеры. Дата обращения: 1 сентября 2009. Архивировано 22 августа 2011 года.
- Free Disassemblers, Decompilers, Hex Editors & Hex Viewers (англ.). thefreecountry.com. Дата обращения: 1 сентября 2009. Архивировано 22 августа 2011 года.
- OpenRCE (Open Reverse Code Engineering) (англ.). — Various Disassembler Resources and Plug-ins. Дата обращения: 1 сентября 2009. Архивировано 22 августа 2011 года.
- Program Transformation Wiki / Dis Assembly (англ.). Дата обращения: 1 сентября 2009. Архивировано 22 августа 2011 года.