![]() |
eXeL@B —› Основной форум —› Ручная распаковка (глупый вопрос наверно) |
Посл.ответ | Сообщение |
|
Создано: 22 ноября 2005 16:39 · Поправил: Destruction · Личное сообщение · #1 Прочитал пару статеек, поставил SoftICE, прочитал еще пару статеек, софтайс не понравился (знаю, это плохо), поставил OllyDbg. Собственно пытаюсь вручную распаковать программу. Имеется: Windows XP SP2, OllyDbg v1.10, PEditor 1.7 by yoda & M.o.D., PeID 0.93 с плагинами, UPX X-Shell (сам upx к нему видимо прилагался). Действия: 1. Взять какую-нить прогу, беру калькулятор http://ultimasoft.ru/temp/calc.exe . 2. Проверяю через PeID не упакован ли он, результат удовлетворительный. 3. Запускаю UPX X-Shell, пакую. 4. Проверяю через PeID как запаковалось - результат положительный, пишет UPX 0.89.6.... 5. Запускаю OllyDbg, F3 -> calc.exe, оказываюсь ессно на строке PUSHAD - листаю вниз, нахожу POPAD: 01020DCE > 61 POPAD 01020DCF .-E9 A116FFFF JMP calc.0102475 6. Записываю на листок OEP (01012475), перехожу на строку с JMP, вешаю бряк (F2), запускаю (F9), жмякаю F8 (хз зачем, так было написано). 7. Запускаю PEditor -> tasks -> нахожу свой калькулятор -> dump(full) -> сохраняю как DUMPED.exe 8. browse -> нахожу дамп, открываю в ImageBase написано 01000000, следовательно точка входа будет 00012475 - вписываю, жму apply changes - выскакивает веселое окошко, которое я тут же закрываю. 9. Жмякаю checksum и жму "correct it !", опять окошко которое я закрываю. Далее в описании было написано, что у меня выдет работающая распакованная программулька, но вместо того, чтобы быть работающей программулькой у меня вылазает ошибка: "Ошибка при инициализации приложения (0xc0000005). Для выхода из приложения нажмите кнопку ОК." Мне ничего не остается делать - жму ок и сижу расстроенный. Что я не так делаю? Вот нерабочая распаковка (ссылка). http://ultimasoft.ru/temp/DUMPED.exe ![]() |
|
Создано: 22 ноября 2005 16:44 · Личное сообщение · #2 |
|
Создано: 22 ноября 2005 16:54 · Поправил: Destruction · Личное сообщение · #3 Спасибо, помогло, пойду ASProtect'ы распаковывать учится ![]() Блин, ведь знал что вопрос глупый, кстате почему так получается, что распакованный файл получается больше изначально пакованного? Остаётся что-то от пакера? А, вот глянул в PE Explorer - лежит две секции: UPX0 и UPX1, место понимаешь не лишнее занимают.. Чем бы их побить? Пробовал через PETools - файл перестал быть файлов Win32, через LordPE тоже не вышло. Попробую поискать статейку про ручное убийство. PS: Читал вот эту статью http://www.exelab.ru/art/olly_un.php - хоть повесьте, нету там ничего про восстановление таблиц импорта. А еще где-то читал, что впринципе оно должно запускаться, но только у меня (что навело меня на мысль защитить свои программы от "умельцев" копирующих их copy+paste). ![]() |
|
Создано: 22 ноября 2005 17:20 · Личное сообщение · #4 Destruction пишет: кстате почему так получается, что распакованный файл получается больше изначально пакованного? ЛОЛ ты чо ниразу rar'ом не пользовался чтоль? упх (и другие пакеры) сжимает исполняемый файл и дописывает распаковщик када ты дампиш прогу то получаеш разжатый файл он ессесно будет больше чем сжатый ![]() |
|
Создано: 22 ноября 2005 17:26 · Поправил: Jupiter · Личное сообщение · #5 размер сдампленного файла может быть больше исходного (не пакованного) по нескольким причинам: из-за файлового выравнивания и выравнивания в памяти (сделай сдамленному файлу RebuildPE в PE Tools/LordPE); из-за преобразования секций из нескольких в одну и неэффективного распихивания их в памяти; из-за дублирования части файла (новый импорт в кач-ве новой секции и т.п.) что до секций UPX0/1 - тебе их не убить ;) т.к. они то и есть программа попробуй свой файл открыть в PE Explorer - и пересохранить, он автоматически распакует upx ;) и вообще upx лучше распаковывть им самим ;) даже для обучения запакуй upx, примени scrambler, попытайся восстановить файл (см. также об упаковщиках http://wasm.ru/article.php?article=packers2#8 ) ----- EnJoy! ![]() |
|
Создано: 22 ноября 2005 17:43 · Личное сообщение · #6 WarrioR пишет: ЛОЛ ты чо ниразу rar'ом не пользовался чтоль? упх (и другие пакеры) сжимает исполняемый файл и дописывает распаковщик када ты дампиш прогу то получаеш разжатый файл он ессесно будет больше чем сжатый Очень смешно. Я пользовался пакерами, я опытный программист, пытался даже писать свой архиватор. Просто не надо лезть в гущу не ознакомившись с ссутью дела, твой пост меня даже не обидел кстате. Если перечитаешь и не поймешь, то сделай следущее: Возьми не пакованный файл, запомни размер, запакуй, распакую вручную, сверь с иходным размером. PS: Вдумался, кажется понял про, что Вы говорите, перечитайте мой пост еще раз - в нём написано, что я обнаружил, что в программе появился лишний код, я хочу от него избавится. Jupiter пишет: что до секций UPX0/1 - тебе их не убить ;) т.к. они то и есть программа попробуй свой файл открыть в PE Explorer - и пересохранить, он автоматически распакует upx ;) и вообще upx лучше распаковывть им самим ;) Вы меня тоже не поняли, видимо общаться разучился, жаль (ну или я Вас не понял) -( Эти секции есть в распакованной программе, т.е. они уже не должны быть частью кода и вообще не нужны, т.к. программа теперь распакована и секции отвечающие за распаковку программы соответсвенно не требуются. За остальную информацию спасибо - буду смотреть. Ребилдить пи-структуру пробывал - не помогло ни на байт ![]() ![]() |
|
Создано: 22 ноября 2005 17:58 · Личное сообщение · #7 |
|
Создано: 22 ноября 2005 18:07 · Личное сообщение · #8 |
|
Создано: 22 ноября 2005 18:41 · Личное сообщение · #9 Destruction пишет: Насчет того, что PE Explorer распаковывает UPX сам - оказалось правда, интересно, как он умудряется сделать так, что файл выходит один в один? (по размеру, байты не сверял, лень).. Даже сам упх када распакует ранее пакованное имже там уже много изменений а чо тада говорить про других.. ![]() |
|
Создано: 22 ноября 2005 18:46 · Поправил: Destruction · Личное сообщение · #10 WarrioR пишет: Даже сам упх када распакует ранее пакованное имже там уже много изменений а чо тада говорить про других.. Хмм, проверил - и правда... Интересненько... FC нашел измнений аж на половину веса исходной программы (150/300)kb. Блин, собственно я полез в паковку, чтобы создать нормальный патч (русификатор) для пакованной программы, а оказывается - обломь.. PS: Интересная статейка. ![]() |
|
Создано: 22 ноября 2005 19:04 · Личное сообщение · #11 |
|
Создано: 22 ноября 2005 19:46 · Личное сообщение · #12 плагин PE Explorer'a для распаковки upx - статический распаковщик, основанный на коде самого upx и написан на delphi, его функционал аналогичен "upx -d" Destruction пишет: Эти секции есть в распакованной программе, т.е. они уже не должны быть частью кода и вообще не нужны, т.к. программа теперь распакована и секции отвечающие за распаковку программы соответсвенно не требуются. эти секции и есть программа, я об этом написал, так что не поняли меня Вы stub распаковщика занимает не так много места, что занимать две секции одновременно ;) то, что секции называются UPX0/1, а не .text|.data, ещё не говорит о том, что они не нужны ведь при дампинге секции автоматом не переименовываются ;) ----- EnJoy! ![]() |
|
Создано: 22 ноября 2005 19:50 · Личное сообщение · #13 |
![]() |
eXeL@B —› Основной форум —› Ручная распаковка (глупый вопрос наверно) |
Эта тема закрыта. Ответы больше не принимаются. |