|
|||||||
Cracking в Linux
Время создания: 02.01.2009 12:24
Текстовые метки: Ассемблер, assembler, машинный код
Раздел: Компьютер - Linux - Ассемблер
Запись: xintrea/mytetra_syncro/master/base/0000000685/text.html на raw.github.com
|
|||||||
|
|||||||
В последнее время наблюдается рост коммерческих приложений в Linux. Таким образом, возникает потребность в реинженеринге защитных механизмов в новых условиях. Крекеры, пришедшие с Windows не находят удобных инструментов, да и «родные» не знают о многих из них. В данном обзоре я постараюсь восполнить информацию об инструментах крекера в Linux. Статья не претендует на полноту, эксклюзивность и ориентирована на новичков. (поиск юзал, такой темы не нашел) Анализаторы файлов Прежде чем ломать программу, необходимо проанализировать ее. Для этих целей служат следующие программы: file - Показывает информацию о файле: тип, архитектуру, факт использования разделяемых библиотек, была ли удалена символьная информация командой strip. nm - Выводит таблицу внешних символов. Показывает имена переменных, функций, метки. (Это справедливо только для файлов, не обработанных командой strip) size - Выводит размеры всех секций программы (при указании флага -А). strings - Выводит все текстовые строки, содержащиеся в файле. Бывает очень полезна при поиске регистрационных кодов, хранящихся в открытом виде. (на практике все еще попадается такая слабая защита). ldd - Показывает зависимости программы от динамических библиотек. Программистам пользы больше, чем крекерам. readelf - Исследует файл. Выводит намного больше информации, чем команда file. Показывает тип файла, архитектуру, точку входа и другие не менее важные для крекера данные. Просматривает содержимое секций ELF-файла. Дизассемблеры Objdump - Больше, чем просто дизассемблер. Показывает заголовки программы, секции файла (флаг -х), дизассемблирует файл (флаг -D), показывает содержимое секций в шестнадцатеричном виде (флаг -s), и т.д. Замечание. При дизассемблировании файла, лучше скидывать листинг в файл: objdump -D > ./file, чтобы хоть как-то уменьшить вероятность вывиха обеих глаз. Dissy - «Обертка» для утилит nm, readelf и objdump. (из-за этого файлы без символьной информации не анализируются) Имеет графический интерфейс, работать намного приятнее, чем с objdump. Главное окно разделено на две части, в верхней – имена функций, в нижней – их дизассемблерный листинг. Программа показывает переходы, осуществляет навигацию по ним и по вызовам процедур. Lida (Linux Interactive DisAssembler) - Довольно интересный дизассемблер, включающий в себя модули поиска по строкам, криптоанализ, возможность ставить закладки и пр. LDasm (Linux Disassembler) - Еще одна оболочка для objdump/binutils, написанная на Perl/Tk. По словам автора, "to imitate the look'n'feel of W32Dasm" Так что не мешает ознакомиться. К сожалению, не обновлялся с декабря 2002 года. Bastard - Дизассемблер под Linux&FreeBSD, понимаетELF/PE/bin-форматы. Шестнадцатеричные редакторы Отобразить в шестнадцатеричном виде файлы могут утилиты objdump, hexdump, od. KHexEdit - Входит в среду KDE. Имеет графический интерфейс. Bless - Написанный на моно шестнадцатеричный редактор. Поддерживает вкладки. Biew - Консольный редактор. Позволяет просматривать и редактировать файлы в текстовом, шестнадцатеричном, ассемблерном виде. HTE - Также консольный редактор, но функционально на голову выше прочих. Дизассемблирует файлы, поддерживает перекрестные ссылки, указывает имена функций и пр. В Linux достаточно много шестнадцатеричных редакторов, я указал лишь самые интересные (на мой взгляд). Дамперы В случае, когда программа запакована, необходимо снять дамп памяти с запущенного процесса. Я нашел только два достойных дампера. PD (by ilo) - Опубликованный в журнале Phrack. Мне так и не удалось получить запускаемый дамп с помощью этой программы. Process Dumper (pd) - Программа довольно неплохо снимает дамп с запущенных процессов. Запуск: pd -p pid > dump Далее нужно обработать файл напильником. Например, в KHexEdit. Удаляем символьный мусор до заголовка. Таким образом мне получилось сделать запускающийся дамп с программой, запакованной UPX. Отладчики gdb и все, все, все (графические оболочки) - Довольно мощный отладчик, но при работе можно вывихнуть руки (А без рук и без глаз какой же вы крекер?). Работать с ним довольно сложно, но можно. Вердикт: для гуру. EDB - Сравнительно недавно появился отладчик, напоминающий OllyDbg, только для Linux. Причем он написан с нуля, а не является оберткой для других утилит. Окно разделено на 4 части: дизассемблер, стек, дамп памяти со вкладками, содержание регистров. В работе этот отладчик очень удобен и интуитивно понятен. Программа позволяет ставить точки прерывания, искать строки, переходы к регистрам, и имеет очень много других полезных функций. Linice - Неофициальный порт Softice под Linux. При установке требует древнее ядро и квалифицированного шамана с бубном. (Даже не стал париться) Также не помешает исследовать виртуальную файловую систему /proc для взлома программ. LINKS: PD by ilo: http://www.reversing.org Process Dumper: http://www.trapkit.de/research/forensic/pd/ Dissy: http://www.ipd.bth.se/ska/sim_home/dissy.html EDB: http://www.codef00.com Linice: www.linice.com HTE: www.hte.sourceforge.net LDasm: http://www.feedface.com/projects/ldasm.html Lida: http://lida.sourceforge.net/ Bastard: http://bastard.sourceforge.net/ Другие утилиты входят в поставку стандартного дистрибутива. |
|||||||
|
|||||||
|