Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.19;
Скачать: CL | DM;

Вниз

Защита от копирования...   Найти похожие ветки 

 
NKiril ©   (2003-03-18 01:18) [0]

Как определить запущен ли процес (в частности virtualCd, SoftIce) через Делфи?


 
Алексей Валерьевич   (2003-03-18 02:12) [1]

Удалено модератором


 
Poirot ©   (2003-03-18 07:26) [2]

Что-то мне кажется, что SoftIce вам будет сложновато найти, но уж если наюдёте, то просветите при закрытие проги все болезненные места места...


 
Мыш ©   (2003-03-18 07:40) [3]

НУ че заработал 30 баксов, придурок? Здесь по дельфи форум, вали нафиг.


 
Sash!   (2003-03-18 09:11) [4]

Проверка на запущенный SoftIce:

//------------------------------------------------------------------------------
{ SoftIce in W9x OS }
function SFI95Loaded: Boolean;
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;

//------------------------------------------------------------------------------
{ SoftIce in NT/2000 OS }
function SFINTLoaded: Boolean;
var
hFile: THandle;
begin
Result := False;
hFile := CreateFileA("\.NTICE", 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;


 
NKiril ©   (2003-03-18 17:48) [5]

Sash! Спасибо за код, но я хотел бы с ним разобраться... Документации по CreateFileA у меня нет потому, хотелось бы уточнить. В коде ты создаешь с помощью CreateFileA ищешь SoftIce, а потом если нашло (if ...) то закрываешь.. наверное SoftIce. Правильно?
Ну а если мне нужно проверять на наличие другого процеса то где я смогу достать "\.NICE" для другого процеса, (как я понимаю все следующие параметры в процедуре можно оставлять без изменения)?
Что это вообще такое "\.NICE"?
Огромное спасибо.


 
Sash!   (2003-03-20 09:22) [6]

Честно говоря, я сам не разбирался с этим кодом, просто где-то нашел :)


 
Александр Спелицин ©   (2003-03-20 12:03) [7]

Ну во-первых не "\.NTICE", а "\\.\NTICE"

> Документации по CreateFileA у меня нет

Т.е Вам трудно набрать CreateFile и нажать F1???
А также трудно сделать тоже самое с CloseHandle?


 
NKiril ©   (2003-03-21 16:59) [8]

По F1 в хелпе ничего нет по CreateFileA, это процедура Windows.


 
Umar   (2003-03-21 18:18) [9]

В коде функция возвращает дескриптор файла если он не равен
INVALID значит файл загружен в память.


 
NightAngel   (2003-03-21 23:54) [10]

Сами оценивайте недостатки и преимущества.

Метод первый: Файловый.
а) FindFirst и FindNext-ом ищется loader32 или sivwid.386; Устраняется перехватом этих функций.
б) Через VWIN32.vxd читаются напрямую сектора с диска или кластеры и ищется строка "tIce" или "SIWVID" или "WINICE" или "NTICE". Разновидность этого способа - использование библиотек, реализующих прямой доступ к файлам через FAT. Устраняется так же, брейк на DeviceIOControl.
в) Поиск в реестре "подозрительных" записей, в частности:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\SoftICE
HKEY_LOCAL_MACHINE\Software\NuMega\SoftICE
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\Loader32.Exe. Устраняется ловушкой на операции с реестром.
г) Разновидность в). Работа с реестром через файловые операции или через сектора. Устраняется теми же способами.

Метод второй: Device-ный.
а) Только для Ring0:
//-------------------------------------------------------------
VMMCall Test_Debug_Installed
je not_installed
//-------------------------------------------------------------
или
//-------------------------------------------------------------
mov eax, Device_ID ;VxD ID->202h для SICE или 7a5Fh для SIWVID
mov edi, Device_Name ; можно указать символьное имя устройства,
;если же задан ID, то можно пустую строку.
VMMCall Get_DDB
mov [DDB], ecx ; ecx=DDB или 0 если VxD нет.
//-------------------------------------------------------------
VMMCall это макрос, а не "вызов" библиотечной функции. Он транслируется в INT 20H + маска адреса вызова. (См. DDK).
Устраняется так - bpx Get_DDB if ax==0202 || ax==7a5fh
б) MeltICE - это официальное название сл. Он и был приведён Sash!
CreateFileA("\\.\SICE",...) //для win32
или
_lopen("\\.\SICE",0) //для win16
Имя может быть либо SICE, либо SIVW, либо NTICE. Если открыть VXD удалось, то значит он в памяти. Фактически, после вызова CreateFileA мы попадаем в Kernel32!ORD_0001, эта "затычка" эмулирует VxDCall, она нас приводит к функции vxd-шки VWIN32 под названием _VWIN32_ReleaseWin32Mutex и затем мы получаем список DDB и ищем что задано. Она не грузит vxd, а просто посылает им DIOC_OPEN и DIOC_CLOSEHANDLE сообщения и находит как динамически так и не динамически загруженные VXD.
Устраняется так - bpx CreateFileA if *(esp->4+4)=="SICE" || *(esp->4+4)=="SIWV" || *(esp->4+4)=="NTIC" или bpx VMM_GetDDBList if eax->3=="SICE" || eax->3=="SIWV"

Метод третий: INT
а) Если вызвать INT 41H с функцией AX=4Fh, то в АХ запишется 0F386h в случае присутсвтия какого-нибудь системного отладчика.
б) аналогично а) INT 68H и тоже число в АХ=0F386h.
Работает только в Win9x. В NT/Win2k/XP - бесполезен.

Ну вот вроде и все известные методы "защит". SoftIce их легко обнаруживает и нейтрализует.


 
Snap ©   (2003-03-22 00:42) [11]

Небольшое дополнение: чтобы найти менее развитые отладчики, просто достаточно проверить результат IsDebuggerPresent. Также эту информацию можно прочесть из заголовков программы в памяти, но эффект будет тот же, так что я думаю не зачем мучаться, а использовать IsDebuggerPresent.



Страницы: 1 вся ветка

Текущий архив: 2003.05.19;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
9-59529
Джастер
2002-12-05 20:55
2003.05.19
Advanced OpenGl for Delphi by Krasnov


14-59907
Fenik
2003-04-28 00:18
2003.05.19
Прошу у всех прощения!


14-59852
Agent[007]
2003-05-01 10:48
2003.05.19
SHIT !!!


1-59685
lightix
2003-05-07 16:31
2003.05.19
Вопрос по QReport


3-59556
Zhenka
2003-04-26 00:54
2003.05.19
Помогите конкретным примером. Как в IB работать с BLOB