Форум: "WinAPI";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];
ВнизКак подгрузить свою 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 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.041 c