![]() |
eXeL@B —› Вопросы новичков —› Как создать loader для dll |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 06 августа 2011 14:15 · Поправил: AKAB · Личное сообщение · #1 |
|
Создано: 06 августа 2011 15:18 · Личное сообщение · #2 по хорошему в dup нет механизма для сабжа, писать свой миниотладчик, ловить момент загрузки dll и патчить что нужно... ![]() |
|
Создано: 06 августа 2011 17:56 · Личное сообщение · #3 |
|
Создано: 06 августа 2011 19:06 · Личное сообщение · #4 |
|
Создано: 06 августа 2011 20:17 · Личное сообщение · #5 |
|
Создано: 06 августа 2011 20:34 · Личное сообщение · #6 Av0id пишет: писать свой миниотладчик не понял, а это почему так обязательно? Av0id пишет: ловить момент загрузки dll Загрузки какой dll, если нет лоадера? Любой из импорта? Почитал про dup - похоже там почти всё, что надо, только ничего связанного с загрузкой dll. Мне такие утилиты никогда не нужны были. Но если уж пользоваться отладчиком, то подгрузить dll можно перехватив любой вызов KiUserCallbackDispatcher, изменить апи-нумер на ___ClientLoadLibrary и добавить свой стек с аргументами для неё - буфером с путём до dll. ----- IZ.RU ![]() |
|
Создано: 06 августа 2011 21:14 · Личное сообщение · #7 не обязательно, никто и не писал что обязательно ![]() если есть dll и надо ее пропатчить, значит есть и процесс который ее загружает, т.е. лоадер, я имел в виду что-то вроде ![]() |
|
Создано: 06 августа 2011 21:27 · Поправил: DenCoder · Личное сообщение · #8 ага 06.08.2011 21:04:26 Фильтр HTTP файл http://www.accessroot.com/arteam/site/request.php?179 вероятно модифицированный Win32/Agent.MNBQLUH троянская программа соединение прервано - изолирован Зараза сидит в Архив\Sources\Proxy_Dll_Protected_7\bin\Client.exe ![]() Av0id пишет: правда код там жуткий Да к тому же dll валится со STACK_OVERFLOW на загрузке. А вообще еле собрал... ----- IZ.RU ![]() |
|
Создано: 07 августа 2011 01:42 · Личное сообщение · #9 |
|
Создано: 07 августа 2011 01:46 · Личное сообщение · #10 |
|
Создано: 07 августа 2011 11:48 · Личное сообщение · #11 |
|
Создано: 07 августа 2011 12:23 · Личное сообщение · #12 |
|
Создано: 07 августа 2011 12:25 · Поправил: Kindly · Личное сообщение · #13 SReg пишет: как он его получит то? распакует лишь бы как хотя бы чтоб в отладчик загрузить можно было и по имеджу вставит нужные оффсеты вот тебе живой пример: прога - http://cloudfront.systweak.com/sysrc_trial.exe лоадер, патчущий армовую dll в памяти http://rghost.ru/17100181 я думаю, ТС нужно было примерно это. другое дело инлайн патч прописать в exe или dll, но это уже другой вопрос. ----- Array[Login..Logout] of Life ![]() |
|
Создано: 09 августа 2011 12:28 · Личное сообщение · #14 DenCoder > подгрузить dll можно перехватив любой вызов KiUserCallbackDispatcher, изменить апи-нумер на ___ClientLoadLibrary и добавить свой стек с аргументами для неё - буфером с путём до dll. Не нужно ничего перехватывать. Это apfn-колбек из ядра, используемый для подгрузки в процесс фильтров. Он дёргается как вектор напрямую или через регистрацию фильтра. > через Appinit Dll Локально трудно реализуется. Нужно искать описатель директории. ![]() |
|
Создано: 09 августа 2011 12:39 · Личное сообщение · #15 |
|
Создано: 09 августа 2011 13:00 · Личное сообщение · #16 Загрузчик открывает директорию(\KnownDlls), описатель которой в LdrpKnownDllObjectDirectory. Создание обьекта в этой директории палится проактивкой. Необходимо создать свою директорию и поместить её описатель в эту переменную(закрыть/создать не желательно, так как в старших версиях системы может быть рандомизация). Поиск переменной в принципе прост, но возможно придётся обойти некоторые проверки(точно не помню уже). ![]() |
|
Создано: 09 августа 2011 15:57 · Личное сообщение · #17 bowrouco пишет: Не нужно ничего перехватывать. Это apfn-колбек из ядра, используемый для подгрузки в процесс фильтров. Он дёргается как вектор напрямую или через регистрацию фильтра. Ну и что? Хотите сказать, что даже после наступления определённого события я не смогу таким способом dll подгрузить? ) ----- IZ.RU ![]() |
|
Создано: 09 августа 2011 17:29 · Личное сообщение · #18 |
|
Создано: 09 августа 2011 18:27 · Поправил: DenCoder · Личное сообщение · #19 |
|
Создано: 09 августа 2011 18:37 · Поправил: bowrouco · Личное сообщение · #20 |
|
Создано: 09 августа 2011 18:47 · Личное сообщение · #21 1) перехватываем KiUserCallbackDispatcher, подменяем нумер апи 2) добавляем в стек параметры для ___ClientLoadLibrary - путь до dll 3) перехватываем конец KiUserCallbackDispatcher перед int 2B 4) даём выполнить нужный колбек 5) убираем хуки Два условия 1) Процесс GUI 2) Образ без специфических TLS-колбеков под отладичком можно без труда проверить, чем завтра и займусь... Если окажусь не прав, должен to bowrouco ящик пива ![]() ----- IZ.RU ![]() |
|
Создано: 09 августа 2011 19:04 · Личное сообщение · #22 |
|
Создано: 09 августа 2011 19:54 · Личное сообщение · #23 |
|
Создано: 09 августа 2011 21:49 · Поправил: DenCoder · Личное сообщение · #24 Ладно, вариантов много. Но самый простой, если под отладчиком, - перехватываем LoadLibraryA/W. Надёжнее - из-под некривого загрузчика. Кстати, bowrouco, о TLS callback: запатчу я раздел TLS и всё ))) - тривиально. Тот, кто запускает - тот и делает первый ход. vptrlx, такую dll называют прокладкой. Проще там, где инструмент готов ;) ----- IZ.RU ![]() |
|
Создано: 10 августа 2011 11:01 · Личное сообщение · #25 |
|
Создано: 10 августа 2011 11:20 · Личное сообщение · #26 |
|
Создано: 10 августа 2011 11:30 · Личное сообщение · #27 |
|
Создано: 10 августа 2011 13:02 · Личное сообщение · #28 |
|
Создано: 10 августа 2011 13:25 · Личное сообщение · #29 |
|
Создано: 10 августа 2011 16:39 · Личное сообщение · #30 |
. 1 . 2 . >> |
![]() |
eXeL@B —› Вопросы новичков —› Как создать loader для dll |