Сейчас на форуме: (+5 невидимых) |
eXeL@B —› Протекторы —› Прошу помощи с "изменённым" UPX |
Посл.ответ | Сообщение |
|
Создано: 27 февраля 2018 08:19 · Поправил: ap0stol · Личное сообщение · #1 Добрый день! Прошу помощи с методикой распаковки кривого UPX http://ge.tt/3lIbFko2 Суть такая: если распаковать UPX-ом, то файл оказывается нерабочим, тем не менее, если далее проюзать на файл из PE Tools v1.5 RC7 плагин Reloc Rebuilder, то получаем работоспособный файл. Если пытаться распаковать x64dbg + scylla используя скрипт https://github.com/x64dbg/Scripts/blob/master/upx391.txt , то получаем oep 000000013FF3A4FC va 000000013FF3B000 size 00000550 и кривой импорт 000000013FF3A9D4 с инструкцией RET 0x0 либо 19 кривых импортов, если не соглашаться с advanced search и естественно нерабочий дамп. Скрипт https://github.com/x64dbg/Scripts/blob/master/3.06_to_3.91.txt не находит OEP вообще. Если пытаться распаковать через бряк на доступ к памяти по rsp на втором шагу модуля zm.exe то получаю аналогичные скрипту oep и va и аналогичный кривой импорт 000000013F5FA9D4 с инструкцией RET 0x0 я понимаю что где-то, видимо, косячю с правильным OEP, но не могу понять где. Прошу помощи. цель не столько именно распаковать (т.к. распакованный вариант есть), а понять что делаю не правильно и делать правильно, ну и распаковать новую версию этого майнера) http://ge.tt/4X1yHko2 (в неё как минимум ssl влинковано) Добавлено спустя 12 минут да, более свежая версия этого файла\майнера распаковывается UPX-ом, но Reloc Rebuilder не берёт распакованный файл Ps это dstm майнер |
|
Создано: 27 февраля 2018 09:06 · Личное сообщение · #2 |
|
Создано: 27 февраля 2018 10:02 · Поправил: ap0stol · Личное сообщение · #3 ей богу, туплю что-ли... если распаковывать через x64dbg, я делаю следующее: из 0000000077BD7981 | EB 00 | jmp ntdll.77BD7983 | выполнить до >>000000013F3CC190 | 53 | push rbx | 000000013F3CC191 | 56 | push rsi | 000000013F3CC192 | 57 | push rdi | 000000013F3CC193 | 55 | push rbp | 000000013F3CC194 | 48 8D 35 65 DE FD FF | lea rsi,qword ptr ds:[13F3AA000] | 000000013F3CC19B | 48 8D BE 00 70 CB FF | lea rdi,qword ptr ds:[rsi-349000] | делаю шаг до второй строки 000000013F3CC191 | 56 | push rsi | далее RSP-перейти к дампу, аппаратный бряк на память\доступ dword попадаем в (даже если шаг сделать до 000000013F3CC194 и там RSP-перейти к дампу - переход всё-равно в этот код происходит) 000000013F3CC3FD | 48 8D 44 24 80 | lea rax,qword ptr ss:[rsp-80] | 000000013F3CC402 | 6A 00 | push 0 | 000000013F3CC404 | 48 39 C4 | cmp rsp,rax | 000000013F3CC407 | 75 F9 | jne zm.13F3CC402 | 000000013F3CC409 | 48 83 EC 80 | sub rsp,FFFFFFFFFFFFFF80 | 000000013F3CC40D | E9 EA E0 CA FF | jmp zm.13F07A4FC | 000000013F3CC412 | 00 00 | add byte ptr ds:[rax],al | 000000013F3CC414 | 00 00 | add byte ptr ds:[rax],al | 000000013F3CC416 | 00 00 | add byte ptr ds:[rax],al | 000000013F3CC418 | 94 | xchg esp,eax | 000000013F3CC419 | 00 00 | add byte ptr ds:[rax],al | 000000013F3CC41B | 00 00 | add byte ptr ds:[rax],al | далее видим цикл, ставим бряк на 000000013F3CC40D | E9 EA E0 CA FF | jmp zm.13F07A4FC | после срабатывания бряка - шаг с заходом, попадаем в 000000013F07A4FC | 48 83 EC 28 | sub rsp,28 | 000000013F07A500 | E8 07 04 00 00 | call zm.13F07A90C | 000000013F07A505 | 48 83 C4 28 | add rsp,28 | 000000013F07A509 | E9 76 FE FF FF | jmp zm.13F07A384 | 000000013F07A50E | CC | int3 | 000000013F07A50F | CC | int3 | 000000013F07A510 | CC | int3 | 000000013F07A511 | CC | int3 | 000000013F07A512 | CC | int3 | 000000013F07A513 | CC | int3 | 000000013F07A514 | CC | int3 | 000000013F07A515 | CC | int3 | 000000013F07A516 | 66 66 0F 1F 84 00 00 00 | nop word ptr ds:[rax+rax] | 000000013F07A520 | 48 3B 0D 11 EE 00 00 | cmp rcx,qword ptr ds:[13F089338] | и далее в scylla видим битые импорты.. Попробовал дефолтный win32app из msvc2015 скомпилить в x64 и запаковть upx 3.94 с ключём -5 http://ge.tt/3NQrOko2 при распаковке upx -d экзешник получается не рабочим. при ручной распаковке, по вот такому методу - также не рабочий... |
|
Создано: 27 февраля 2018 10:48 · Поправил: hypn0 · Личное сообщение · #4 37ca_27.02.2018_EXELAB.rU.tgz - zm_unp.7z Добавлено спустя 2 минуты С методикой не помогу. Прога автоматом распаковала. Вроде запускается. Что за прога - не скажу. Автор тут обитает, но когда зарелизит - не знаю. |
|
Создано: 27 февраля 2018 10:54 · Поправил: ap0stol · Личное сообщение · #5 |
|
Создано: 27 февраля 2018 11:06 · Личное сообщение · #6 http://www52.zippyshare.com/v/IiECjt6D/file.html Вот и свежая распакованная. Распаковщик очень универсальный. Он эмулятор, что угодно распакует. В теории. Ник автора hors. Он автор Detect It Easy (DIE). Напиши, спроси. | Сообщение посчитали полезным: ap0stol |
|
Создано: 27 февраля 2018 12:33 · Поправил: ap0stol · Личное сообщение · #7 Мне кажется, что в для свежих upx-ов или свежих msvc такой типовой алгоритм не работает. Также попробовал win32app собрать в msvc2015 но для x86 и также не смог найти корректный oep/va. Аналогичная проблема с битыми импортами. Может кто-то направит на путь истинный.. Добавлено спустя 2 часа 57 минут #include <stdio.h> int main() { printf("Hello, World\n"); return 0; } спомпилен в msvc2015 x86, запакован upx 3.91 с ключём -5 получаю также битый импорт и нерабочий exe. не понимаю что делаю не так 0f30_27.02.2018_EXELAB.rU.tgz - ConsoleApplication5.zip |
|
Создано: 27 февраля 2018 16:09 · Поправил: Gideon Vi · Личное сообщение · #8 |
|
Создано: 27 февраля 2018 16:36 · Поправил: ap0stol · Личное сообщение · #9 Gideon Vi чуть раньше про 3.94 писал что также Попробовал дефолтный win32app из msvc2015 скомпилить в x64 и запаковть upx 3.94 с ключём -5 http://ge.tt/3NQrOko2 при распаковке upx -d экзешник получается не рабочим. при ручной распаковке, по вот такому методу - также не рабочий... ну и сабж из первого поста, как же всё-таки корректно распаковать то? Дабы знать, уметь это делать Добавлено спустя 51 минуту msvc 2015, upx 3.94 msbuild C:\Users\ap0stol\Downloads\0f30_27.02.2018_EXELAB.rU\ConsoleApplication5.vcxproj /p:configuration=release /p:platform=win32 compiled.exe (переименованный ConsoleApplication5.exe) - рабочий upx -5 compiled.exe -o packed.exe packed.exe - рабочий upx -d packed.exe -o unpacked.exe unpacked.exe - не рабочий и также, если через x32dbg попытать распаковать, то в scylla ошибки в импортах... 7bc9_27.02.2018_EXELAB.rU.tgz - souce_with_exe.zip |
|
Создано: 27 февраля 2018 19:52 · Поправил: difexacaw · Личное сообщение · #10 ap0stol Обьясняю популярно. Нет никакого смысла собирать кучу тулз и пытаться ими как то решить софт(иначе человек искал бы решение не перебором софта, а учил матчасть). Вам это может быть нужно для повышения личного скилла(опыта/знаний), но тогда это всё уг не нужно, либо вам это нужно для заработка $, но вы эти задачи не можите решить из за отсутствия того самого скилла. Так что вы впали в рекурсию. А так как вы из неё выйти не можите и одновременно хотите, то есть спец раздел, где за ваши цели($) решают задачи. ----- vx |
|
Создано: 28 февраля 2018 02:28 · Личное сообщение · #11 |
|
Создано: 28 февраля 2018 06:05 · Поправил: ap0stol · Личное сообщение · #12 Gideon Vi 2 разных компа, на одном win7 x64 + msvc2015, на другом win10 x64 + Visual C++ Build Tools. Ну и zm.exe из первого поста не я компилировал. И на гитхабе в тикетах кто-то другой отписывался что upx -d не работает, думаю и при распаковке вручную также байда с импортами: P.s. Если просто экзешник собранный по моему проекту загрузить в x96dbg, то в scylla я тоже вижу битый импорт, с той лишь разницей, что если удалить битый fthunk то сдампленный exe запустится, а вот после upx уже нет. Добавлено спустя 20 минут частично выяснил, что если exe-шник собран с флагом /DYNAMICBASE то распаковать UPX не получается, если без него (ASRL) - то распаковывается без проблем. Добавлено спустя 32 минуты всем спасибо за участие, разобрался, как распаковывать. с оригинального exe скидываю флаг DynamicBase, гружу в x64dbg, далее OEP, scylla, прибиваю один битый импорт, dump, fix dump |
|
Создано: 28 февраля 2018 08:51 · Поправил: TryAga1n · Личное сообщение · #13 ap0stol пишет: с оригинального exe скидываю флаг DynamicBase, гружу в x64dbg, далее OEP, scylla, прибиваю один битый импорт, dump, fix dump Ну это как бы первое что нужно сделать, при распаковке или реверсе тела с ASLR. Неужели ты сразу не заметил, что у тебя постоянно менялись адреса в отладчике? о_О |
|
Создано: 28 февраля 2018 09:29 · Личное сообщение · #14 |
|
Создано: 28 февраля 2018 10:21 · Поправил: ap0stol · Личное сообщение · #15 |
eXeL@B —› Протекторы —› Прошу помощи с "изменённым" UPX |
Эта тема закрыта. Ответы больше не принимаются. |