Показать сообщение отдельно

  #7  
Старый 10.11.2011, 19:11
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами: 10097606

Репутация: 3349


По умолчанию

От себя хочу сделать важное дополнение.

Нафига извращаться с шелкодом? Под Win XP kernel32.dll подгружена во все процессы по одинаковому адресу. по этому ход такой

1) открыли процесс

2) записали туда имя DLL с полным путём

3) в своей проге через GetProcAddress получили адрес LoadLibraryA

4) CreateRemoteThread на адрес LoadLibrary а в параметре - адрес памяти где хранится строка имени dll

4) Далее WaitForSingleObject чтобы дождаться заверщения потока

5) GetExitThreadCode (или както так) чтобы получить код возврата поток. Если ноль, значит DLL не грузанулась. Иначе её Адрес в памяти.

6) Освобождаем память занятую под строчку с именем DLL

И еще важно знать что под Win 7 такое не прокатит. потому что там запрещено создавать удаленные потоки в чужом адресном пространстве. (хотя контекст перебивать можно вроде)
 
Ответить с цитированием