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
|
Программирование для чайников.
|