![]() |
eXeL@B —› Вопросы новичков —› Cтатья MozgC "Распаковка..." |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 18 января 2007 01:57 · Личное сообщение · #1 У кого-нибудь есть файлы к статье "Распаковка: от самого простого к чуть более сложному", которую MozgC написал. А именно: 1) Калькулятор упакованный UPX'ом (30 Кб) 2) Блокнот упакованный ASPack'ом (33 Кб) 3) PCMedik упакованный PECompact'ом (839 Кб) 4) CrackMe зашифрованный ExeStealth'ом (369 Кб) Если есть, выложите пожалуйста... ![]() |
|
Создано: 18 января 2007 02:30 · Личное сообщение · #2 |
|
Создано: 18 января 2007 04:22 · Личное сообщение · #3 |
|
Создано: 19 января 2007 09:58 · Личное сообщение · #4 |
|
Создано: 21 января 2007 09:48 · Поправил: alfa-x team · Личное сообщение · #5 |
|
Создано: 21 января 2007 09:59 · Личное сообщение · #6 alfa-x team пишет: Распакованный вручную файл гораздо больше незапакованного оригинала Ну да. В распакованном остается секция распаковщика, его данные и всякий мусор. Для уменьшения размера секцию пакера-прота его отрезают от РЕшника. alfa-x team пишет: И можно теоретически сделать файл 1 в 1 с оригиналом? Теоретически - у некоторых пакеров можно, практически - смысла делать один в один нет. ![]() |
|
Создано: 21 января 2007 11:00 · Личное сообщение · #7 |
|
Создано: 21 января 2007 12:10 · Личное сообщение · #8 Спасибо а вот в процессе распаковки возник еще вопрос В статье "Распаковка: от самого простого к чуть более сложному", MozgC'а автор показывает пример с ручным восстановлением таблицы импорта. Показывает он на пример софт-айса и для "того, чтобы узнать адрес функции GetModuleHandleA в софтайсе наберем команду "exp GetModuleHandleA" и в ответ увидим " 001B:77E79F93 GetModuleHandleA Как подобное провернуть в OllyDbg ? Я попробывал найти блок данных, начинающихся на 7Схххххх, 77хххххх перед которыми стоят нули. Один раз сработало, в другой раз нет. Как все же правильно восстанавливать таблицу импорта? ![]() |
|
Создано: 21 января 2007 13:15 · Поправил: Executioner · Личное сообщение · #9 alfa-x team вот тебе тулза, которая показывает адреса экспорта ) написано на вб, так что требует рантайм библиотеки) если хошь то могу на асме переписать) но вряд ли такая прога нужна вообще) ![]() ----- Уважайте других и пишите грамотно. ![]() |
|
Создано: 21 января 2007 14:17 · Личное сообщение · #10 Executioner Спасибо за прогу, только когда указываю процесс и либ - пишет, что не может найти процесс, хотя процесс точно висит в памяти и запущен перед прогой. Другая проблемка вылезла, при попытке запуска дамповоной программы и прикрученном импортом выскакивает "Ошибка приложения" с текстом: "Ошибка при инициализации приложения (0xc0000005). для выхода из приложения нажмите кнопку ОК" Где я мог ошибиться? ![]() |
|
Создано: 21 января 2007 14:30 · Личное сообщение · #11 |
|
Создано: 21 января 2007 16:21 · Личное сообщение · #12 |
|
Создано: 21 января 2007 22:16 · Личное сообщение · #13 |
|
Создано: 22 января 2007 07:40 · Личное сообщение · #14 |
|
Создано: 22 января 2007 09:39 · Личное сообщение · #15 |
|
Создано: 22 января 2007 10:03 · Личное сообщение · #16 PE_Kill пишет: ептить, в командной строке пишешь "? GetModuleHandleA" и смотришь адрес.... ептить, оказывается все гениальное - просто ![]() Спасибо, буду знать, значит нашел правильные адреса ![]() Сразу посыпались вопросы: - Возможно в распакованном ручками ехе не будут работать какие то функции, которые работали до распаковки, вследствии неправильного дампа и/или коррекции таблицы импорта (но программа при этом запускается) ? Или если сдампованная программа запускается - то она уже 100 % рабочая? - может таблица импорта хранить в нескольких частях? в нескольких местах файла? или она всегда храниться единым целым? - всегда ли адреса функций начинаются на 7С, 77 или они могут начинаться на любые адреса? Или на какие то определенные? ![]() |
|
Создано: 22 января 2007 10:12 · Личное сообщение · #17 alfa-x team пишет: - может таблица импорта хранить в нескольких частях? в нескольких местах файла? или она всегда храниться единым целым? в основном да, иногда разделена кусками мусора... alfa-x team пишет: - то она уже 100 % рабочая? 99% т.к. могут остаться проверки на распакованность alfa-x team пишет: - всегда ли адреса функций начинаются на 7С, 77 или они могут начинаться на любые адреса? Или на какие то определенные? адресса функций зависят от адреса загрузки dll, это если я понял вопрос... ----- [nice coder and reverser] ![]() |
|
Создано: 22 января 2007 10:17 · Личное сообщение · #18 alfa-x team пишет: Или если сдампованная программа запускается - то она уже 100 % рабочая? Надо проверять - иногда она сглючивает при просмотре эбаута, иногда при выходе из проги, иногда при выполнении специфичных функций... надо смотреть самому... alfa-x team пишет: - может таблица импорта хранить в нескольких частях? в нескольких местах файла? или она всегда храниться единым целым? Читай доки по теме. Отвечать не буду, так как появятся такие же вопросы в большем количестве. alfa-x team пишет: - всегда ли адреса функций начинаются на 7С, 77 или они могут начинаться на любые адреса? Или на какие то определенные? Это просто адреса функций в библиотеке в контексте данного процесса, в другом аналогичном процессе адреса могу быть другими. А начала на 7с и 77 - просто системные библиотеки kernel, ntdll грузятся по статичным адресам (точнее они тоже могу грузиться по другим, но т.к. они подгружаются сразу после создания процесса, им никто не запретит грузиться по своим "родным" адресам), а остальные - куда бог пошлет. ![]() |
|
Создано: 22 января 2007 12:26 · Личное сообщение · #19 |
|
Создано: 22 января 2007 13:05 · Личное сообщение · #20 |
|
Создано: 23 января 2007 08:31 · Личное сообщение · #21 |
|
Создано: 23 января 2007 10:27 · Личное сообщение · #22 Я запаковал PE Compact'oм 1.84 прогу, нашёл переход на ОЕР, перед переходом на ОЕР меняю команду на jmp на самого себя (зацикливаю), нажимаю ПКМ -> Copy to executable -> selection чтобы сохранить изменения, а Оля мне выдаёт Error: "Unable to locate data in executable file" ![]() ![]() |
|
Создано: 23 января 2007 10:38 · Личное сообщение · #23 [poly] glot пишет: Unable to locate data in executable file Глюк сохранялки Оли. Выделять нужно секцию кода - от самого начала до конца ненулевых байт. А вообще тебе такое сохранение для пакованных прог не поможет - оля сама изменит только секцию кода, оставив все остальное нетронутым (+ не восстановит импорт). Надо дампить с пом. PeTools либо с пом. соответствующих плагинов для оли, а потом воосстанавливать импорт. Патч хорош, когда нужно изменить что-то в секции кода в непакованной программе - тогда олька позволяет это действительно легко сделать. ![]() |
|
Создано: 23 января 2007 10:46 · Личное сообщение · #24 |
|
Создано: 23 января 2007 11:45 · Личное сообщение · #25 HoBleen пишет: Выделять нужно секцию кода Я во вложенном файле запаковал сапёра, изменяю байты по адресу 0105854F на jmp 0105854F. Чтобы сохранить это изменение, что именно надо выделить (с какого по какой адрес)? HoBleen пишет: оля сама изменит только секцию кода, оставив все остальное нетронутым (+ не восстановит импорт). А зачем мне восстанавливать импорт во время зацикливания? Я ведь только зацикливаю в Оле, а дамп снимаю с помощью LordPE как в статье у MozgC'a... Executioner пишет: Можно просто остановиться на ОЕР и снимать дамп Останавливаться надо строго на ОЕР или перед переходом на ОЕР? А то, что отладчик перед каждой следующей командой ставит int 3, это не затрёт ничего в проге, если остановиться на ОЕР? Или Оля по какому-то другому принципу работает, а не через int 3? ![]() |
|
Создано: 23 января 2007 12:10 · Личное сообщение · #26 Блин, чё-то вложенный файл (сапёр, запакованый PE Compact'oм 1.76) с которым у меня и возникла загвоздка по поводу сохранения в Оле не отправляется (Не, я пробовал разные проги запаковывать PE Compact'oм 1.76 и со всеми такая проблема, просто "сапёр" - ну для конкретного примера ). Завтра приложу... ![]() |
|
Создано: 23 января 2007 20:58 · Личное сообщение · #27 Вот Сапёр из винды ХР, я его упаковал PE Compact 1.76 для тренировки ручной распаковки. Подскажите пожалуйста, как в Оле после изменения нескольких байт по адресу 0105854F на jmp 0105854F их сохранить. Я жму ПКМ -> Copy to executable -> selection чтобы сохранить изменения, а Оля мне выдаёт Error: "Unable to locate data in executable file" ![]() ![]() ![]() |
|
Создано: 24 января 2007 02:43 · Личное сообщение · #28 |
|
Создано: 24 января 2007 07:00 · Личное сообщение · #29 |
|
Создано: 24 января 2007 07:55 · Личное сообщение · #30 [poly] glot пишет: Я во вложенном файле запаковал сапёра, изменяю байты по адресу 0105854F на jmp 0105854F. Чтобы сохранить это изменение, что именно надо выделить (с какого по какой адрес)? С начала секции кода до начала нулей. [poly] glot пишет: А зачем мне восстанавливать импорт во время зацикливания? Я имел ввиду, что сохраненный ехе будет рабочим, если перед этим он не был запакован. А в противном случае у тебя получится каша из байт - этот патчинг не подходит при распаковке. ![]() |
. 1 . 2 . >> |
![]() |
eXeL@B —› Вопросы новичков —› Cтатья MozgC "Распаковка..." |