我这段代码测试是能够通过的,但是就是关于打开进程有点小问题
不知道什么原因
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;
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法