// вы читаете...

Новости

Обход SoftIce’а



Также можно следить и за своими функциями и процедурами – передавать в качестве параметра адрес функции и количество байт от offset’а:

function cooltest:string; // просто для примера
begin
result:=’cool’;
end;

function IsThereDebuggingMyProc(offset:integer; Range:integer):integer; // проверяем свою ( хотя можно и любую другую из библиотеки!) функцию на наличие 0CCh
var i:integer;
begin
result:=0;
for i:=offset to offset+Range do
if byte(Pointer(i)^) = $0CC then
inc(result);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
if IsThereDebuggingMyProc(integer(@cooltest),20)<>0 then
Caption:=’Debugging proc present’
else
Caption:=’There»s not debugging proc’;
end;

Но может возникнуть вопрос, а что если бряк поставили на LoadLibraryA или GetProcAddress? Или даже на обе эти функции :) и вызов

mh:=LoadLibrary(Pchar(libname));
ProcAddr:=GetProcAddress(mh, Pchar(procname));

приведет к раскрытию “защиты”. Для этого мы можем сначала проверить эти две функции, а потом уже использовать IsThereDebuggingProc. Вот пример функции, ищущией и проверяющей функции из kernel32.dll:

function IsThereDebuggingProcHeader(procname:string; Range:integer):integer;
{Данная функция ищет ImageBase kernel32.dll (этот метод подробно описан здесь — http://sbvc.host.sk/articles/9.html), затем через таблицу экспорта находи нужную нам функцию и проверяем её на наличие дебаггинга.}
label l;
var
h:integer; // здесь будет длительное время лежать ImageBase кернела. Также будет использоваться при поиске кернела.
f:boolean; // используется как флаг при поиске ImageBase и показывает нашли ли мы искомую функцию.
i,j:dword;
ied: PImageExportDirectory; // указатель на секцию описателей экспортируемых функций. (хотя этот pointer будет использоваться для целого таза объектов :))
begin // самый последний Seh будет указывать на процедуру в сердце kernel32.dll, поэтому найти территорию кернела не составит труда :)
asm
push ebx
mov ebx, fs:[0]
@l:
cmp [ebx], -1
jz @l2
mov ebx, [ebx]
jmp @l
@l2:
mov eax, [ebx+4]
mov h, eax
pop ebx
end;

Страницы: 1 2 3 4 5 6 7

Обсуждене

Отзывов нет на «Обход SoftIce’а»

Ваш отзыв

Рубрики


Error: Can't open cache file!
Error: Can't write cache!
2020-01-23 13:38:22 - : /var/www/it-freelance.ru/3492ujnfmcdnfbvhgyr87w9i/cache_it-freelance_ru_6f.txt
2020-01-23 13:38:22 - : /var/www/it-freelance.ru/3492ujnfmcdnfbvhgyr87w9i/cache_it-freelance_ru_6f.txt