![]() |
eXeL@B —› Вопросы новичков —› Нахождение EP с HEX'ом или WinDbg |
Посл.ответ | Сообщение |
|
Создано: 08 июня 2007 20:07 · Поправил: SeaMan · Личное сообщение · #1 Сущесивует очень много разных утилит, с помощью которых можно EP и так "подглянуть" ![]() ![]() ![]() Для этого нам понадобится информация о заголовке PE файлов (PE Header). Во - первых PE сокращение от Portable Executable что означает типа "Переносное исполняемое". Т.е программы с таким заголовком можно теоретически запускать не только на машине, где они были написанны, но и везде там, где есть по крайней мере похожая система. Но это только теория. Вернёмся к нашему заголовку. Offset: 0000003C - Cдесь записывается адрес с которого начинается PE - заголовок. Т.е их больше чем 1. Сам файл начинается с MS-DOS заголовка. Адрес по которому находится начало PE-заголовка должен иметь длинну в 4 байта и если вы пользуютесь HEX-Редактором то нужно читать значения с зада на перед. Например: 0000003С: Е0 00 00 00 читается как 000000E0. Затем идём на этот адрес и прибавляем к нему значение 28h. В нашем примере получается E0+28h=108h. Идём на этот адрес (в нашем примере 00000108) и считываем там наш EP. Кстати адрес EP тоже написанн наоборот ![]() Этот пример был для тех, кто ищет EP через HEX. Теперь для тех, кто пользуетсяWinDbg (если есть такие). Запускаем WinDbg. Идём на File -> Open Executable... Ctrl+E и открываем нашу Exeсutable. Затем пишем в командной строке: d notepad+3C где notepad есть наша Executable для примера. Т.е. notepad.exe это наш файл в котором мы ищем EP. О синтаксисе: Команда d выдаёт нам дамп фрагмента памяти. Затем следует информация о фрагменте. В данном случае notepad+3C. WinDbg берёт адрес памяти по которому загружен notepad.exe, затем прибавляет к этому адресу значение 3Ch и показывает нам дамп памяти по вычесленному им адресу. Дальше читаем по этому адресу начало PE заголовка (допустим там адрес 000000E0) и пишем в командной стппоке: d notepad+E0+28 где 28 это смещение относительно началу PE заголовка (а он в нашем случае начинается по смешению 000000E0 относительно начала файла) по которому находится адрес EP. Вот и всё, спасибо за внимание. ![]() ![]() |
|
Создано: 09 июня 2007 05:13 · Личное сообщение · #2 SeaMan пишет: Но как быть с образованием? Это не образование. Это слепое тыканье. Очень интересно, но бессмысленно когда есть документация и вопрос изучен. Вот если бы ты ковырял загадки природы, про которые мало что известно, вот это была бы наука и образование... И то только если СИСТЕМНО, изучив большинство научных работ по теме. А вообще я и сам такой. SeaMan, брат самоучка. =) Пускай даже это бредовое описание, но это не главное. Важно, что ты сам ковыряешься. Помню сам через несколько дней запутался во всех этих форматах и потом понял, что начинать лучше было не с того. Лучше (быстрее) было бы освоить основные понятия в программировании и разобрать системные особенности PC: - простые типы данных; - структуры данных; - адресация и т.д. Покопаться немного с каким-нибудь языком программирования (какой нравится). Потом с лёгкостью использовать Айсилоновские примеры по PE-формату (или что-то подобное). Но с другой стороны, начинать-то лучше с чего-то "ощутимого". Так что и такой путь подойдёт. Здесь ещё раз (уже, наверное, десятый) отсылаю начинающих к документам по PE-формату: - PE.TXT. Написал Bernd Luevelsmeyer (лучшая дока) - Здесь в разделе статей (или на wasm.ru) две части "Об упаковщиках в последний раз" - На openRCE.org есть графическое представление внутренностей PE-файла (кажись "PE Format graph.pdf" называется) - Исходники загрузчика PE-файлов на С++ (линуксовщикам респект): stanson.chat.ru/yaw_ru.html - Статья на RSDN, название: "Загрузчик PE-файлов". www.rsdn.ru/?article/baseserv/peloader.xml - И на (для тех у кого) худой конец от MS дебильная дока PECOFF.pdf ----- Всем привет, я вернулся ![]() |
|
Создано: 09 июня 2007 16:41 · Поправил: SeaMan · Личное сообщение · #3 Bitfry пишет: Это не образование. Это слепое тыканье. Очень интересно, но бессмысленно когда есть документация и вопрос изучен. Вопрос: Чему может научить документация на английском языке человека который не знает английского? Только не надо говарить "она тебя заставит выучить английский". Я и так понял что рано или поздно английский учить надо. Но года 2 назад мне бы такая информация очень многому научила бы и продвинула меня гораздо дальше чем я сейчас. Ты прав, вопрос исчерпан. Но посмотри на это с другой стороны. Документаций по теме "заголовки" у меня море. Но ни в одной из них я не нашёл наглядных примеров или экспериментов, которые бы многое не понятное просветили. Простой пример: где то было написанно в таблице по какому то смещению "размер заголовка в 512байтовых параграфах". Я например тогда ничё не понял пока не поэкспериментировал. Хотя ассемблер и как работает весь Хард уже давольно так и не плохо знал. А что в документациях написанно? Табличка без примеров и куча текста не по теме. Да и устарели они все уже. Например информацию о Процессоре для выполнения программ мне пришлось искать у Microsoft, т.к на Windows Vista x64 программки скомпилированны для AMD64 (это я узнал уже потом). А в документах про PE формат такое не упоминается. А вообще это для кого как. Меня например такие стоки как "чтобы найти EP включаем что то типа PE Utilities" ни чему полезному не учат. Разве что набор инструментов. Ну включил я его, ну показал он мне EP. А где суть то? можно тогда его вообще не искать. Включил отладчик в котором эта функция и так уже есть и всё, работай! Или ещё проще скачал кряк для игры из сети и потом ходишь и всем рассказываешь какой ты крэкер крутой ![]() Если бы то, что я выше написал было бы что то новое, я бы его не стал бы писать в раздел для начинающих. Я просто подумал, что может кто нибудь тоже как я тогда мучается и ищет именно это. Вобщем можно это видеть как подход к проблеме с "другой стороны" ;) ![]() |
|
Создано: 09 июня 2007 17:51 · Личное сообщение · #4 SeaMan пишет: А что в документациях написанно? Табличка без примеров и куча текста не по теме. В документации (в хорошей) должны быть именованные константы и члены структур, а не конкретные циферки и смещения. А всё что ты описал, укладывается в выражение:
----- Всем привет, я вернулся ![]() |
|
Создано: 09 июня 2007 21:09 · Личное сообщение · #5 SeaMan напиши статейку. Хотя не уверен, что её везде разместят, так как вопрос действительно исчерпан.. Да и OEP сейчас найти - это проблема пожалуй возникает, когда прога протом каким-нибудь пожата. Вот по этой теме ручное нахождение OEP было бы интересно многим новичкам.. ----- radio uno in ibisa ... ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Нахождение EP с HEX'ом или WinDbg |