如何在搜索某个特定软件的进程?(100分)

  • 主题发起人 主题发起人 bfox
  • 开始时间 开始时间
B

bfox

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在在做一个防作弊的软件,需要搜索一些特定的作弊软件,我从网上看到很多代码都是搜索EXE的名称来实现的,但是这种方法有个弊端,如果用户把EXE的名字修改了,就找不到了,有没有哪位有什么好办法? 那些杀毒软件是通过什么原理来搜索的啊?哪位有经验,指点一下?
 
可以用查询指定程序窗口标题,然后强行关闭。
procedure TForm1.Timer1Timer(Sender: TObject);
var
HWndCalculator : HWnd;
begin
HWndCalculator := FindWindow(nil,'扫雷');
if HWndCalculator <> 0 then
SendMessage(HWndCalculator, WM_CLOSE, 0, 0);
end;
 
给你段代码:我一直在用
ExeFileName := s;//你要结束的程序名称!
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle,FProcessEntry32);
while integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName))
or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
TerminateProcess(OpenProcess(PROCESS_TERMINATE, BOOL(0),
FProcessEntry32.th32ProcessID), 0);
ContinueLoop := Process32Next(FSnapshotHandle,FProcessEntry32);
end;
 
OldSnake,谢谢你的例子,这样查询窗口名称有可能会重名吧?这样就会误关一些程序.
Revenant ,谢谢你的代码,我看你的代码里面是搜索EXE名称的,可是这样如果客户修改了EXE的名称,就逃过了软件的搜索了
  我看现在市面上的杀毒软件都是搜索的特征码,这个是怎么做的啊?
 
特征码是指软件中特定的一段程序经编译后产生的二进制代码,杀毒软件就是扫描文件和病毒库进行比对,比对成功则报病毒。所以它也有误报问题,我的例子是获取标题栏名称,重名的概率不会高过杀毒软件。至少我还没碰到过。
 
OldSnake, 谢谢你,我试一下先
 
Revenant 请问 FProcessEntry需要引用哪个单元啊,搜索了一下帮助,没找到,谢谢.
 
还有一个问题,如何获得某个程序的窗口的名称啊,有那位知道,麻烦告诉一下,谢谢!
 
后退
顶部