Консультация № 84777
30.04.2007, 02:47
0.00 руб.
0 1 1
Добрый день, эксперты.
Вопрос: кто знает, каким образом на Delphi реализовать защиту по типу как в AVELife TestGold Studio и EasyCHM v3.73. Эти программы при своем запуске просто убивают отладчики и дизассемблеры (пробовал DeDe, W32Dasm, OllyDbg с плагином HideDebugger). Внешне это выглядит таким образом: при запуске проги из под дебагера и прога и дебагер закрываются без предупреждений, если просто запущен отладчик (или отладчики, запускал одновременно все перечисленное выше) и запускается прога, то дебагеры вырубаются, а прога спокойно работает дальше. Причем дебагер Delphi они не трогают.

Обсуждение

Неизвестный
01.05.2007, 03:54
общий
это ответ
Здравствуйте, Trevol!

Убиваем процесс по имени его exe‘шника.

KillTask(‘ollydbg.exe‘);

//*-*-*-*-*

uses
Tlhelp32, Windows, SysUtils;

function KillTask(ExeFileName: string): integer;
const
PROCESS_TERMINATE=$0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
result := 0;

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
Result := Integer(TerminateProcess(OpenProcess(
PROCESS_TERMINATE, BOOL(0), FProcessEntry32.th32ProcessID), 0));
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;

CloseHandle(FSnapshotHandle);
end;

Я проверял, работает.

Форма ответа