网上搜索了好多关于 关于进程隐藏问题,实现的方式几乎都是以远程线程注入方式
我依葫芦画瓢的做了一个,但是在目标进程里面请求内存空间的时候老是失败,不知道为什么,请高人指点.
代码如下: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
我依葫芦画瓢的做了一个,但是在目标进程里面请求内存空间的时候老是失败,不知道为什么,请高人指点.
代码如下: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
解决方案 »
- 不明白,求解!请入内看代码。
- 有个声音保存在SQL2000中以images中,我用什么方法可以把它调出保存到文件(wav)在线
- degrid颜色问题
- 有关游戏杆编程的问题(100分)在线等候
- Metadata update statement is not allowed by the current database SQL dia???
- 如何编写“金山快译通”等翻译软件那样的工具栏式的窗口(Form)?如何移动它?
- 请问如何实现双击控件使控件中的文本全部被选择?
- ExpressSpreadSheet 如何冻结列
- 股票代码映射
- 百思不得其解,我的TDBchart,去了那里?十万火急(up 有分
- 怎样翻译这段C代码
- 请问下delphi中如何将指目录下的图片化成二进制流输出?
如何调试?多看看操作系统和windows系统编程的书,搞清楚一些概念再做。防止別人結束掉我的進程,和隐藏进程,以及远程线程注入,是3个不同的概念。
强烈鄙视技术问题解决后把贴子转移到非技术区的人!
鄙视你们!http://community.csdn.net/Expert/topic/5216/5216675.xml?temp=.9262659