Автор вопроса
Codeby Academy
Практика и мастерство
От основ до продвинутого — программы для практиков Codeby.
К курсу →
Автор вопроса
x64dbg? Я не понимаю, как в нем цепляться к процессу на виртуалке. Файлик-то зловредный. В IDA как-то удобнее с этим.koekaker
Может нормальный отладчик использовать ?
Этот, я так понимаю?В x64dbg для запуска DLL есть собственный загрузчик
В эту же строчку мне надо дописать полный путь к моему dll и вызываемую функцию?
Вложения
И все же запускать процесс на виртуалке, а отлаживать на основной машине, в x64dbg нельзя?
Это не ядерный виндебаг, где две машины нужны. Это юзер отладчики, обычное приложение, которое управляет дочерним. И там непонятный ассемблер
Ничего не надо дописывать. Просто File+Open и выбираете DLL. Отладчик остановится на её EP, а дальше уже решайте, как продолжать.В эту же строчку мне надо дописать полный путь к моему dll и вызываемую функцию
Зачем такие сложности? Что мешает скопировать отладчик на виртуалку и всё делать там?И все же запускать процесс на виртуалке, а отлаживать на основной машине, в x64dbg нельзя?
Собственно, и не знаю, как. В зловредной dll есть некая функция, которая принимает несколько параметров. Как в нее провалиться и выяснить, что она делает?а дальше уже решайте, как продолжать.
Распространение зловредных файлов как бы не приветствуется, я полагаю. Подобных зловредов полно. Просто антивирус выловил и мне любопытно, интересует методика исследования.Кинь бинарь
ну тогда разбирайся сам т к без бинаря помочь не могуРаспространение зловредных файлов как бы не приветствуется, я полагаю. Подобных зловредов полно. Просто антивирус выловил и мне любопытно, интересует методика исследования.
Ты если что можешь кинуть под паролем infected
Кинул в личку.ну тогда разбирайся сам т к без бинаря помочь не могу
Ты если что можешь кинуть под паролем infected
Собственно, провалиться в функцию dll получается нормально, проверил на обычном файле. Здесь же, судя по экспортируемым функциям (которые вроде легальны?), зловред прячется где-то глубже?
Вложения
Любая DLL содержит в себе N-функций (процедур), которые являются статическими, т.е. не исполняются сами по себе, пока родитель EXE не вызовет их явно. Динам.частью можно считать лишь необязательную процедуру на точке-входа DllEntryPoint(), в которую системный загрузчик в нёдрах Ntdll.dll передаёт три параметра - это база dll в памяти (hinstDll), причина вызова (fdwReason=Attach/Detach), и третий в резерве. Мы можем игнорировать все эти параметры лоадера, но обязательно должны вернуть ему EAX=1. Собственно поэтому DllEntryPoint() (DllMain) и считается необязательной, кроме EAX=1.но в эту функцию никогда не попадаю. Проваливается куда-то в ntdll.dll и в конце концов вылетает с ошибкой.
Теперь если вы загрузите просто либу в любой отладчик, то попадёте в её точку-входа, где как правило будет mov eax,1 --> ret, что отфутболит обратно в загрузчик Ntdll.dll (инит либы ещё не окончен). Таким образом чистую DLL вы не сможете отладить, хотя можно стат.анализом в том-же дебагере просто просмотреть содержимое функций. Для этого загрузите DLL в x64dbg как обычно через Open, и не делая ни шага перейдите на вкладку "Отладочные символы". Далее находите свою dll в списке, и получаете все её эксп.функции (двойной клик = окно кода). При этом в стеке (после адреса-возврата) найдёте три параметра системного лоадера: hinsDll, fdwReason, Reserved (если х64 то в rcx,rdx,r8).
То-есть дебагер здесь вам ничем не поможет, а только IDA в статике. Если хотите динамически трассировать, то или через родное приложение, или писать свой EXE, который будет по очереди вызывать все функи из этой dll. Иначе никак.
Спасибо за подробный ответ!
Я взял простенькую dll, где в статике видны все ее функции. В IDA в поле "Application" заменил на "c:\windows\syswow64\rundll32.exe". В "Parametres" написал путь к dll, имя функции и через пробел параметры функции. Успешно проваливается.
Но, судя по всему, в большинстве случаев так легко не получится. В этой зловредной dll вообще не пойму, какие функции, там указатели на лету строятся. Да, заходит в DLLMain c Reason Attach, какие-то непонятные действия, Reason меняется на Detach и до свидания.
Я взял простенькую dll, где в статике видны все ее функции. В IDA в поле "Application" заменил на "c:\windows\syswow64\rundll32.exe". В "Parametres" написал путь к dll, имя функции и через пробел параметры функции. Успешно проваливается.
Но, судя по всему, в большинстве случаев так легко не получится. В этой зловредной dll вообще не пойму, какие функции, там указатели на лету строятся. Да, заходит в DLLMain c Reason Attach, какие-то непонятные действия, Reason меняется на Detach и до свидания.
Ещё по теме
4
Поделиться: