Программа: Nokitel
Программа написанна на: Borland C++
На предмет: Ручная распаковка UPX
Инструменты: Ollydbg, Pe Tools, Import REC, PEID, ResRebuild, LordPE.
Автор: OutLaw
Привет сегодня мы будет распаковывать в ручную программу которая запакована UPX, в моем случае это мой крякмис "Nokitel", но ты можешь взять любую программу которая запакована UPX и проделать все операции которые мы рассмотрим в этой статье. Как ты уже знаешь из статьи "Ручная распаковка Neo-Lite 2.0"
Нам надо найти оригинальную точку входа "OEP", что собвствено и делаем запускаем Ollydbg если перед вами выскачело диологовое окно нажмите "нет" и так мы в отладчике и видим:
004DBB20 > $ 60 PUSHAD <- Мы тут, PUSHAD - данная команда /// сохраняет все регистры в стеке 004DBB21 . BE 00604700 MOV ESI,Nokitel.00476000 004DBB26 . 8DBE 00B0F8FF LEA EDI,DWORD PTR DS:[ESI+FFF8B000] 004DBB2C . 57 PUSH EDI 004DBB2D . 83CD FF OR EBP,FFFFFFFF 004DBB30 . EB 10 JMP SHORT Nokitel.004DBB42
Приступаем к поиску оригинальной точки входа "OEP", как ты помнишь мы должны найти команду "POPAD" и после нее должен быть прыжок "JMP" нажмем три раза "Page Down" или можно в дизассемблере в поиск вбить "POPAD", и потом записать адрес и перейти по нему в отладчике, что тебе будет подуше выбирать тебе, но тем немение я делаю по первому способу и так мы нашли такой код:
004DBC71 > FF96 E0301000 CALL DWORD PTR DS:[ESI+1030E0] 004DBC77 > 61 POPAD <- Перейдем сюда и поставим бряку "F2" 004DBC78 .-E9 7F56F2FF JMP Nokitel.004012FC <- Прыжок к оригинальной /// точки входа
Поставили бряку на адрес 004DBC77 теперь зупускаем программу и сразу же остановились на нашем брэкпоинте ( Опять же повторюсь для тех кто в танке брэкпоинт это точка останова, наличие брэкпоинта на каком либо адрессе говорит о том где программа остановиться, будь то вызов диалогово окна или вызов о старте программы), посмотрим на прыжок после, 004012FC это адрес как ты уже понял перехода на оригинальную точку входа, записываем его в блокнот, и сворачиваем(не закрываем) ольгу(ollydbg). Теперь нам надо снять дамп, для этого открываем программу PE Tools, в процесах ищем нашу программу, как только мы ее нашли нажимаеи правой кнопкой по программе и в меню нажимет "Dump Full", выбираем куда сохранить дамп я его сохранил на рабочий стол, потом видим диологовое окна, нажимаем "ОК", теперь можем закрыть PE Tools.
Дальше нам придется восстанавливать импорт таблицы для этого запускаем Import REC, находим в процесах нашу программу, теперь как ты помнишь мы найдем настоящий "OEP" в прошлой статье мы занимались математикой и тут мы то же этим занимаемся, 004012FC - 00400000 =12FC, как ты знаешь из курса информатики первые нули мы не считаем а просто отбрасываем, и так у нас настоящия точка входа "12FC" вписываем его в программу в поле OEP, рядом кнопка "IAT AutoSearch" нажимаем ее, появится диологовое окно с надписью "Found Something!" окно просит нас нажать на кнопку "Get Imports", потом в окне мы увидим "YES" если у тебя "NO" то значит ты что то не так сделал. И так потом нажимам "Fix Dump" и выбираем дамп который мы сохранили на рабочем столе(или где ты его сохранили) и после этого увидим сообщение "Dumped_exe saved successfully", у программы востоновлен импорт у меня на рабочем столе появился Dumped_exe, не закрываем "Import REC" и открываем программу PEID, в нем нам надо открыть дамп с исправленой таблицей импорта что мы и делаем нажмем на кнопку"..." и выбираем Dumped_exe, в PEID нажимем на кнопку "->" потом выбираем "Plugins" и выбираем "Rebuild PE" в появившемся окне нажимем "Rebuild" потом "Exit", потом закрываем сам PEID.
Далее востонавливаем ресурсы с помощью программы ResRebuild, она консольная так что для удобства юзать ее лучше через "Far", переносим наш Dumped_.exe в папку с ResRebuild, и в Far`е прописываем "resrebld.exe Dumped_.exe .rsrc" в папке появится файл .rsrc, он нам понадобится когда будем когда мы будем удалять и востонавливать ресурсы.
И так дальше загружаем Lord PE, нажимаем в не на PE Editor, в появившемся окошке выбираем наш дамп, после чего появится еще окно в нем мы делаем следующие, а имено нажимаем на "Sections". Далее, нам надо удалить две последнии секции это "rsrc" и "mackt", для этого нажимаем по секции "mackt" правой кнопкой и в появившемся окне выбираем "wipe selection header", то же самое и с секции "rsrc", потом вставляем новую секцию ресурсов для этого тыкаем по любой строке правой кнопкой и выбираем "load section from disk" выбираем наш файл "rsrc", после появится табличка "Section loaded successfully", потом закрываем наше маленькое окошко, и в другом окне нажмем "Save" что бы сохранить наши действия, ну и потом exit.
Ну и наконец последниц шаг, это опять повторное востоновление импорта, вот теперь ты понял почему мы не закрывали Import REC, если ты все таки закрыл, я тебе скажу одно: делай все заново и не спиши. И так делаем следующие нажимаем "Fix Dump" выбираем Dumped_.exe, увидим опять "Dumped_exe saved successfully" ну вот и все, программа распакована. Если не хочешь заморачиваться то скачай просто сам пакер UPX и пропиши "upx.exe -d программа.exe".
© outlaw 10.12.2007
У меня все получилось, MedVetoff делай точно так же как в статье, может ты где то Import REC, закрыл.
Еще какая версия UPX то? если новая то качай тогда новый UPX и upx.exe -d программа.exe
Как альтернатива анпакнуть можно самим пакером.
В статье и написано цитирую "Если не хочешь заморачиваться то скачай просто сам пакер
UPX и пропиши "upx.exe -d программа.exe"
И все! ;)
Ну да,для ленивых конечно можно и не заморачиваться,но уж если не поймёшь как вручную анпакнуть такие пакеры,то уж никогда не мечтай что сможешь справиться с такими как StarForce.:D
в раздел для детей!
Все когда-то с этого начинали,а крэкерами сразу не рождаются,новичкам сойдёт.)
подскажите где скачать ResRebuild
Cracklab.ruподскажите где скачать ResRebuild



Я все сделал как указано в статье, но у меня ничего не вышло.Выдает ошибку - что не является приложением win32.У меня программа-русификатор.Для autoPlay Mediastudio 7.1
Пробовал распаковать через upx, но там пишет что стоит защита.Как мне ее снять?