Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.04;
Скачать: CL | DM;

Вниз

Как подгрузить свою dll в чужой процесс(ы)?   Найти похожие ветки 

 
hawkins ©   (2006-03-10 06:51) [0]

Как подгрузить свою dll в чужой процесс(ы)? Как это сделать
через реестр(вроде бы есть ключ через который можно ко всем процессам подгружаться, нашел что HKLM\Software\Microsoft\Windows\CurrentVersion\AppInit_dlls, но не получилось) и из своего процесса...


 
TUser ©   (2006-03-10 06:54) [1]

Подозреваю, что речь идет о SetWindowHookEx. Объясни, зачем тебе "это" надо.


 
Новичоккк   (2006-03-10 11:42) [2]

Модули (с примерами)
http://www.wasm.ru/pub/21/files/advapihook.rar
Статья:
http://www.wasm.ru/article.php?article=apihook_2


 
kaZaNoVa ©   (2006-03-10 19:12) [3]

В нужный процесс лучше всего CreateRemoteThread

пример:

program loader;
uses
 Windows,SysUtils,Tlhelp32;

function SetDebugPriv: Boolean;
var
Token: THandle;
tkp: TTokenPrivileges;
begin
Result := false;
if OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, Token) then
begin
 if LookupPrivilegeValue(nil, PChar("SeDebugPrivilege"), tkp.Privileges[0].Luid) then
 begin
   tkp.PrivilegeCount := 1;
   tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
   Result := AdjustTokenPrivileges(Token, false, tkp, 0, PTokenPrivileges(nil)^, PDWord(nil)^);
 end;
end;
end;

function Start(ProcessID: Cardinal; DllFileName: string): Boolean;
var
hProcess, hTh: THandle;
BytesWritten, ThreadID, DllNameLen: Cardinal;
LoadLibraryProc, MemPtr: Pointer;
ExitCode: DWord;
begin
Result := false;

SetDebugPriv();

hProcess := OpenProcess(PROCESS_CREATE_THREAD or PROCESS_VM_OPERATION or PROCESS_VM_WRITE,true, ProcessID);

if hProcess <> 0 then
begin
 DllNameLen := Length(DllFileName) + 1;
 
 MemPtr := VirtualAllocEx(hProcess, nil, DllNameLen, MEM_COMMIT, PAGE_READWRITE);

 if MemPtr <> nil then
 begin
   if WriteProcessMemory(hProcess, MemPtr, PChar(DllFileName), DllNameLen, BytesWritten) then
   begin
     LoadLibraryProc := GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA");

     hTh := CreateRemoteThread(hProcess, nil, 0, LoadLibraryProc, MemPtr, 0, ThreadID);

     if hTh <> 0 then
     begin
       if (WaitForSingleObject(hTh, INFINITE) = WAIT_OBJECT_0) and
         GetExitCodeThread(hTh, ExitCode) then
         Result := ExitCode <> 0;

       CloseHandle(hTh);
     end;
   end;

   VirtualFreeEx(hProcess, MemPtr, 0, MEM_RELEASE);
 end;

 CloseHandle(hProcess);
end;

end;

var
ProcessID: Cardinal;
DllName,ppp: string;
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
ProcessID:=0;
FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);

ContinueLoop := Process32First(FSnapshotHandle,FProcessEntry32);
while integer(ContinueLoop) <> 0 do
 begin
ppp:=FProcessEntry32.szExeFile;
if (pos("CSRSS",UpperCase(ppp))>0) then  ProcessID:=FProcessEntry32.th32ProcessID;
ContinueLoop := Process32Next(FSnapshotHandle,  FProcessEntry32);
 end;
CloseHandle(FSnapshotHandle);

DllName:="A:\test.dll";  //полный путь!!

if ProcessID <> 0 then Start(ProcessID, DllName);

end.


 
Игорь Шевченко ©   (2006-03-10 20:41) [4]

kaZaNoVa ©   (10.03.06 19:12) [3]

Все твои поделки ничего не стоят, если нет привилегий.

И еще: не стоит уподобляться студенту, выучившему билет про блох.


 
kaZaNoVa ©   (2006-03-10 21:12) [5]

Игорь Шевченко ©   (10.03.06 20:41) [4]
Все твои поделки ничего не стоят, если нет привилегий.


там есть: function SetDebugPriv: Boolean; :)


> И еще: не стоит уподобляться студенту, выучившему
> билет про блох.

аха))


 
Игорь Шевченко ©   (2006-03-10 21:21) [6]

kaZaNoVa ©   (10.03.06 21:12) [5]


> там есть: function SetDebugPriv: Boolean;


Эта функция будет работать только если у тебя есть привилегии. Если их у тебя нет, функция бесполезна.

Все эти хитрые внедрения и прочая деятельность пакостной направленности не стоит выеденного гроша, если у запускающего нет прав. У себя на компьютере ты можешь хоть обвнедряться, но в системе с нормальной политикой ты будешь ограничен рамками тех прав, которые тебе выдадут. Так что можешь дальше в песочнице совочком играть.



Страницы: 1 вся ветка

Текущий архив: 2006.06.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.044 c
15-1146400020
SergP
2006-04-30 16:27
2006.06.04
USB Flash Drive. Количество циклов перезаписи.


1-1146048770
Leonardo
2006-04-26 14:52
2006.06.04
ListBox с рамкой


15-1147325915
Ega23
2006-05-11 09:38
2006.06.04
С Днём рождения! 11 мая


15-1147080257
Барабан
2006-05-08 13:24
2006.06.04
С какой целью интересуются?


2-1148013655
Мурзилка
2006-05-19 08:40
2006.06.04
Спец. символы