首页
社区
课程
招聘
非常简单的小问题 ,关于打开进程失败的问题 ,
发表于: 2009-1-2 11:40 5409

非常简单的小问题 ,关于打开进程失败的问题 ,

2009-1-2 11:40
5409
我这段代码测试是能够通过的,但是就是关于打开进程有点小问题  
不知道什么原因  

procedure TForm1.Button3Click(Sender: TObject);
var
  hfile,hprocess,dwprocessid,hsnap:dword;
  lppe: TProcessEntry32;
  found : boolean;
begin
  lppe.dwSize :=sizeof(PROCESSENTRY32);
  hsnap:=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
  found := Process32First(hsnap,lppe);
  while found do begin
    if strpas(lppe.szExeFile)='explorer.exe' then begin
      dwprocessid:=lppe.th32ProcessID ;
    end;
    found := Process32Next(hsnap,lppe);
  end;
  //获取待保护的文件的句柄
  hfile:=CreateFile('d:\notepad.exe',GENERIC_READ,FILE_SHARE_READ,nil,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,0);
  //打开占坑进程的句柄
  hprocess:=OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, dwprocessid);
  //以 PROCESS_DUP_HANDLE 权限 打开  网上的代码是没有上面这一句代码的,都是直接使用了
  //下面这一句  但是我测试中 如果没有上面一句代码  会失败的  不知道为什么  
  hprocess:=OpenProcess(PROCESS_DUP_HANDLE, FALSE, dwprocessid);
  if DuplicateHandle(GetCurrentProcess(),hfile,hprocess,nil,0,false,DUPLICATE_SAME_ACCESS) then showmessage('文件保护OK ');
end;

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
还有  一个问题  
我如何用代码 把这个被保护的文件删除呢
2009-1-2 11:51
0
雪    币: 178
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
mj说的xcb大法删除之~
2009-1-2 12:14
0
雪    币: 399
活跃值: (38)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4
mj还说这是不能说的秘密,所以说了也白说



如果只是针对你这个例子的话,把explorer.exe结束掉不就可以删除了吗
debugman上有个代码,用系统进程来占的
2009-1-2 12:20
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
procedure TForm1.Button4Click(Sender: TObject);
var
  hntdll:dword;
  hfile,hprocess,dwprocessid,hsnap:dword;
  lppe: TProcessEntry32;
  found : boolean;
begin
  lppe.dwSize :=sizeof(PROCESSENTRY32);
  hsnap:=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
  found := Process32First(hsnap,lppe);
  dwprocessid:=0;
  while found do begin
    if strpas(lppe.szExeFile)='nod32krn.exe' then begin
      dwprocessid:=lppe.th32ProcessID ;
    end;
    found := Process32Next(hsnap,lppe);
  end;
  hprocess:=OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, dwprocessid);
  hprocess:=OpenProcess(PROCESS_DUP_HANDLE, FALSE, dwprocessid);
  ZwDuplicateObject(-1, hprocess, -1, Integer(@hprocess), $1F0FFF, 0, 1);
  TerminateProcess(hprocess,0);

end;

这个结束普通进程还可以  结束NOD弄不了  还有 谁知道这个是什么原理呀
2009-1-2 12:25
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
当然  假设不知道呢  不知道挂在哪个进程中了
或者挂的是系统进程  根本无法结束
2009-1-2 12:27
0
雪    币: 399
活跃值: (38)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
7
恩,我也没办法,等大牛爆猛料吧
2009-1-2 12:29
0
雪    币: 371
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hyp
8
你说那打开进程的问题 我没加那句都可以成功(很早的时候我用VC做过)
如何解除的话,可以参考这篇文章:在Ring3上实现文件碎甲(解锁)功能
2009-1-2 23:09
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
9
直接DISK操作就可以了

什么RING3碎甲,太垃圾了,用HARDLINK你就碎不了了
2009-1-5 21:14
0
游客
登录 | 注册 方可回帖
返回
//