关于进程隐藏问题:远程线程注入方式 Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiAPI/html/delphi_20061205213557120.html
网上搜索了好多关于 关于进程隐藏问题,实现的方式几乎都是以远程线程注入方式
我依葫芦画瓢的做了一个,但是在目标进程里面请求内存空间的时候老是失败,不知道为什么,请高人指点.
代码如下:
Type
TParam = packed record
fLoadLibrary: DWORD;
fGetProcAddress: DWORD;
sUser: array[0..10] of Char;
sMessage: array[0..11] of Char;
end;
Const
IntoProName='SvcHost.exe';
var
ExeFileName: String;
ContinueLoop: Boolean;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
hprocess: DWORD;
param: TParam;
pparam, pfunc: Pointer;
begin
Application.Initialize;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle,FProcessEntry32);
while integer(ContinueLoop) <> 0 do
begin
if UpperCase(FProcessEntry32.szExeFile)=UpperCase(IntoProName) then
Begin
hprocess:= FProcessEntry32.th32ProcessID;
Break;
End;
ContinueLoop := Process32Next(FSnapshotHandle,FProcessEntry32);
end;
//找到目標進程
if hprocess = 0 then begin
MessageBox(0, '無法開啟行程', '訊息', MB_OK or MB_ICONWARNING);
Exit;
end;
// 在目標行程內要求參數記憶體
pparam := VirtualAllocEx(hprocess, nil, SizeOf(param), MEM_COMMIT, PAGE_EXECUTE_READWRITE);
if pparam = nil then begin
MessageBox(0, '要求參數記憶體失敗', '訊息', MB_OK or MB_ICONWARNING);
CloseHandle(hprocess);
Exit;
end;
Application.Run;
end.
========================================================
运行到 if pparam = nil then begin 这里时 pparam 总是 Nil
沒人回答,UP一下。
沒人回答,再一下。
沒人回答,還UP一下。
你的问题是需要隐藏进程还是需要远程线程注入?
有什麼區別麼?
按我的理解這樣也能實現我的需求吧?
我是想在一個系統進程裡面注入我的線程然後運行一個函數。這樣有什麼區別麼?
我的目的只是不讓別人結束掉我的進程而已。
不知道我理解的對不對
你的process没有足够的权限。先用AdjustTokenPrivileges,如果成功了然后再来。
而且先要OpenProcess(PROCESS_ALL_ACCESS,...),然后才是你的VirtualAlloc。
如果你不明白自己为什么做这些,就不要费劲了,想CreateRemoteThread()?如果又失败了呢?
如何调试?
多看看操作系统和windows系统编程的书,搞清楚一些概念再做。
防止別人結束掉我的進程,和隐藏进程,以及远程线程注入,是3个不同的概念。
謝謝指點。
馬上翻書 :)。
本人初學還望各位以後多多指教。
UP xuexi
强烈鄙视问题解决后不结贴的人!
强烈鄙视技术问题解决后把贴子转移到非技术区的人!
鄙视你们!
http://community.csdn.net/Expert/topic/5216/5216675.xml?temp=.9262659