SoftIce – один из самых лучших отладчиков на планете. Этим дебаггером очень часто пользуются как начинающими так и опытными кракерами. От последних вряд ли какая защита поможет, а вот от начинающих мы в силе защититься. Обидно, когда ты написал какую-нибудь утилиту, а деньги на пиво не получил.
В этой статье я приведу код, который будет блокировать SoftIce95.
Во-первых проверь, прописан ли у тебя в разделе uses модуль windows. Прописан? Нет, так прописывай и поехали дальше…
Напишем функцию когда SoftIce загружен и выхода из системы. Затем, в конче кода, в разделе initialization совместим их.
Привожу код с комментариями:
interface
implementation
uses windows;
function isSoftIce95Loaded: boolean; // функция загрузки SoftIce
var hfile:thandle;
begin
result:=false;
hfile:=createfileA('\\.\sice',generic_read or generic_write,
file_share_read or file_share_write,
nil, open_existing, file_attribute_normal,0);
if(hfile <> invalid_handle_value) then begin
closehandle(hfile);
result:=true;
end;
end;
function winexit(flags:integer):boolean; // функция выхода из системы
// эта функция поможет
//нам определить выходить ли из системы или продолжать работу программы
function Setprivilege (privilegename:string; enable:boolean):boolean;
var
tpPrev, tp:TTokenPrivileges;
token: Thandle;
dwRetLen: Dword;
begin
result:= false;
openprocesstoken (GetCurrentProcess, token_adjust_privileges or token_query,token);
tp.privilegecount:=1;
if lookupprivilegeValue(nil, pchar(privilegename),tp.Privileges[0].luid) then begin
if enable then tp.privileges[0].attributes:=se_privilege_enabled
else tp.privileges[0].attributes:=0;
dwRetLen:=0;
result:=AdjustTokenPrivileges(token,false, tp, sizeof(tpprev),tpprev, dwretlen);
end;
closeHandle(token);
end;
begin
if SetPrivilege ('SeShutdownPrivilege', true) then begin // если true то выходим из системы
exitwindowsex(flags,0);
SetPrivilege('SeShutdownPrivilege', false); // иначе работаем дальше
end;
end;
initialization // начинаем сравнивать
if isSoftIce95Loaded then begin // если SoftIce95 загружен то
winexit (ewx_shutdown or ewx_force); // выходим из системы
halt;
end;
Ну вот и все, идем пить пиво :)
Я привел код для 95-ого SoftIce, но не забывай есть еще NT-ный
А от NT-ого тебе придется догадаться самому. Сразу говорю, поменять надо всего пару букв.
Если есть вопросы, задавай! Адрес тот же: crazy_script@mail.ru