Распаковка UPX, Windows Washer v5.0 АВТОР : Merlin (Merlin@accessroot.com) ПЕРЕВОД : NightCat^53 (nightcat@bsuir.com) ИНСТРУМЕНТЫ: OllyDbg v1.09d, OllyDump v2.21b, Import REConstructor v1.6final Мозги ============================================================================== Распакуйт плагин Ollydump в папку плагинов Ollydbg. Загурзите wwDisp.exe в Олю, тут же получаем сообдщение о том, что программа возможно запакована и т.д. Кликаем ОК и приземляемся тут:: 004A4230 > $ 60 PUSHAD Правый клик и выбираем 'Appearance->Highlighting->Jumps'n'calls' дабы чуть- чуть прояснить и сделать код более читабельным. Теперь жмём Alt+M (Mem Map). Мы ищем заголовок PE, который будет в колонке 'Contains'. Под первым PE за- головком: Memory map, item 15 Address=00400000 Size=00001000 (4096.) Owner=wwDisp 00400000 (itself) Section= Contains=PE header Type=Imag 01001002 Access=R Initial access=RWE Вы увидите, что пакер то UPX, вы должны увидеть вот это, если вы в правильном месте: Memory map, item 16 Address=00401000 Size=0006E000 (450560.) Owner=wwDisp 00400000 Section=UPX0 Type=Imag 01001002 Access=R Initial access=RWE Теперь мы ищем UPX1 (конец защиты обычно), и оно оказывается прямо под UPX0 и выглядит вот так: Memory map, item 17 Address=0046F000 Size=00036000 (221184.) Owner=wwDisp 00400000 Section=UPX1 Contains=code Type=Imag 01001002 Access=R Initial access=RWE Итак, теперь у нас есть начальный и конечный адрес UPX "защиты". Начальный - 00401000 и конечный - 0046F000. Ну и что теперь? Ну, нам нужно найти jmp, ко- торый бы находился между 00401000 и 0046F000. Теперь мы скроллим вниз до тех пор пока не найдём его. Вы должны приземлиться тут: 004A439C .-E9 D3EEFBFF JMP wwDisp.00463274 Ставим сюда брейкпоинт (F2), жмём F9, там где вы приземлитесь жмите F8 и вы должны по идее быть на OEP, узнать OEP можно так: PUSH EBP MOV EBP,ESP Теперь, когда мы приземлились тут нам нужно сдампить процес. Так что зайдите в меню плагинов и выберите 'OllyDump->Dumpdebuggedprocess'. Теперь измените 'Entry Point:' c(должно таким быть) A4230 на 63274. Снимите галочку с пункта 'Rebuild Import', мы перестроим импорт с помощью Import Reconstructor'a. Жмём "dump" и сохраняем файл как wwDisp_manually_unpacked.exe Теперь мы перестроим импорт. Загружаем Imprec, выбираем wwDisp.exe из списка активных процессов. Затем в графе OEP меняем 000A4230 на 00063274 и потом жмём 'IAT AutoSearch', ну а затем 'Get Imports'. Нажимаем 'Fix Dump' и выбираем наш сдампленый екзешник. Если всё прошло успешно, то вы получите распакованую версию wwDisp.exe. Ну и теперь, чтобы завершить все дела, нам нужно пофиксить базу нашего нового екзешника. Чтобы сделать это вам нужна программа LordPE. Загрузите и выберите 'Rebuild PE'. Voila! 8-D ============================================================================== SHOUTZ AND GREETZ: Kyrstie, у нас скоро будет год, 12-го. 8-D Hoof Arted за вдохновление меня на написание туторов для OllyDbg Отдельное спасибо R@dier, IWarez, и lownoise Авторам Web Washer'a, Import Reconstructor'a, OllyDump и OllyDbg. ============================================================================== ============================================================================== TEAM-53 TUTORiALs \\ www.BSUiR.com \\ #team-53, IRC.BY, IRC.BYNETS.ORG ==============================================================================