检测自己程序执行是否为系统执行,防止自动脱壳或反编译
uses TlHelp32;------------
var
//检查自己的进程的父进程
Pn:TProcesseNtry32;
sHandle:THandle;
Found:Boolean;
Buffer:arrayof Char;
runexe,ExeFile,Path:string;
begin
//反调试
// H:= 0;
// ExplProc:= 0;
//ParentProc:= 0;
//得到Windows的目录
SetString(Path,Buffer, GetWindowsDirectory(Buffer,Sizeof(Buffer)- 1));
ExeFile:= UpperCase(Path)+ '\EXPLORER.EXE';//得到Explorer的路径
//得到所有进程的列表快照
//ShowMessage(ParamStr(0));
sHandle:= CreateToolHelp32SnapShot(TH32CS_SNAPALL,0);
Found:= Process32First(sHandle,Pn);//查找进程
// if found thenShowMessage('1');
while Found do //遍历所有进程
begin
if pos(UpperCase(Pn.szExeFile),UpperCase( ParamStr(0)))>0 then //自己的进程
begin
// ShowMessage(UpperCase(Pn.szExeFile));
ParentProc:= Pn.th32ParentProcessID;//得到父进程的进程ID
// ShowMessage(UpperCase(get_proc_name_nt(ParentProc)));
// ShowMessage(UpperCase(ExeFile));
//父进程不是系统进程
ifUpperCase(get_proc_name_nt(ParentProc))<> UpperCase(ExeFile) then
begin
//父进程的句柄
ParentHandle:= OpenProcess(PROCESS_ALL_ACCESS,True,Pn.th32ParentProcessID);
Application.Terminate;
TerminateProcess(ParentHandle,0);
end;
// ShowMessage(inttostr(ParentHandle));
end;
Found:= Process32Next(sHandle,Pn);//查找下一个
end;
end;
现在很多人喜欢用DEDE或其他软件进行自动反编译delphi的程序,把这子程序加入到程序建窗体里,可以达到目的
以后教大家如何用vmp加壳进行虚拟机加密
页:
[1]