| Хэлп, ми! 
 Вопрос к тем, кто когда-нибудь занимался внедрением dll в чужой процесс. Пытаюсь внедрить dll в приложение Project1 методом создания удаленного потока. Вот код внедрения dll на PB.
 
 
#COMPILE DLL "potok.dll"
 #DIM ALL
 #INCLUDE "Win32API.inc"
 
 
 FUNCTION LIBMAIN (BYVAL hInstance AS LONG, BYVAL fwdReason AS LONG, BYVAL lpvReserved AS LONG) AS LONG
 
 SELECT CASE fwdReason
 CASE %DLL_PROCESS_ATTACH: hInstDLL = hInstance: LIBMAIN = 1
 CASE %DLL_PROCESS_DETACH: LIBMAIN = 1
 END SELECT
 
 END FUNCTION
 
 
 '=======================================================
 
 FUNCTION hPotok ALIAS "hPotok"() EXPORT AS STRING
 LOCAL si AS STARTUPINFO
 LOCAL pi AS PROCESS_INFORMATION
 LOCAL sa AS SECURITY_ATTRIBUTES
 LOCAL hProc AS LONG
 LOCAL hProcID AS LONG
 LOCAL lpAddres AS DWORD
 LOCAL sWrite AS LONG
 
 LOCAL nWritten AS LONG
 LOCAL hLoadLib AS LONG
 LOCAL hThread AS LONG
 
 LOCAL dllFile AS STRING
 LOCAL lenght AS LONG
 dllFile="drova.dll"
 lenght=LEN(dllFile)
 
 
 '-------Запускаем процесс------------------------
 CreateProcess "Project1.exe","",sa,sa,0,%NORMAL_PRIORITY_CLASS,BYVAL 0,"",si,pi
 ------------------------------------------
 '----Вытаскиваем из структуры уникальный эдентификатор процесса
 hProcID = pi.dwProcessId
 ----------------------------------------------
 '----Открываем процесс с полными правами доступа
 hProc = OpenProcess (%PROCESS_ALL_ACCESS,%False,hProcID)
 '---------------------------------------------
 '-----Выделение памяти в адр. пространстве чужого процесса
 lpAddres=VirtualAllocEx(hProc,BYVAL 0&,200, %MEM_COMMIT, %PAGE_READWRITE)
 -----------------------------------------------
 '------Записываем в память уд-го процесса имя нашей ф-ции
 sWrite = WriteProcessMemory(hProc,lpAddres,BYVAL STRPTR(dllFile),lenght,nWritten)
 -----------------------------------------------
 '-------Определяем адрес функции LoadLibrary
 hLoadLib = GetProcAddress(GetModuleHandle("Kernel32.dll"), "LoadLibraryA")
 ------------------------------------------------
 'Создает поток и внедряем "drova.dll"
 hThread=CreateRemoteThread (hProc,BYVAL 0&, 0, hLoadLib,lpAddres, 0, 0)
 
 В результате выполнения hThread возвращает не 0, но dll drova не запускается. Ошибок при этом ни каких не выводится. Что не так? Кстати, пробовал и привелегии процессу давать, бесполезно.
 Ответить
       |