Текущий архив: 2006.10.15;
Скачать: CL | DM;
ВнизЗащита от вмешательства Найти похожие ветки
← →
DiX © (2006-09-17 18:27) [0]Подскажите как реализовать, чтобы при наличии отладчика (SoftICE, OllyDBG и др.) прога не стартовала, а так же не стартовала под виртуальной ОС.
← →
Yegorchic © (2006-09-17 18:55) [1]
////////////////////////////////////////////////////////////////////////////////
//
// Simple VMware check on i386
//
// Note: There are plenty ways to detect VMware. This short version bases
// on the fact that VMware intercepts IN instructions to port 0x5658 with
// an magic value of 0x564D5868 in EAX. However, this is *NOT* officially
// documented (used by VMware tools to communicate with the host via VM).
//
// Because this might change in future versions - you should look out for
// additional checks (e.g. hardware device IDs, BIOS informations, etc.).
// Newer VMware BIOS has valid SMBIOS informations (you might use my BIOS
// Helper unit to dump the ROM-BIOS (http://www.bendlins.de/nico/delphi).
//
function IsVMwarePresent(): LongBool; stdcall; // platform;
begin
Result := False;
{$IFDEF CPU386}
try
asm
mov eax, 564D5868h
mov ebx, 00000000h
mov ecx, 0000000Ah
mov edx, 00005658h
in eax, dx
cmp ebx, 564D5868h
jne @@exit
mov Result, True
@@exit:
end;
except
Result := False;
end;
{$ENDIF}
end;
Из DelphiWorld
← →
DiX © (2006-09-17 21:16) [2]Спасибо, хотелось-бы еще увидеть защиту от отладчиков.
← →
Dmitrij_K (2006-09-17 21:25) [3]
> хотелось-бы еще увидеть защиту от отладчико
Самый простой способ это FindWindow
← →
oxffff © (2006-09-17 21:48) [4]http://www.wasm.ru/article.php?article=1017001
← →
SPACE!! (2006-09-17 21:49) [5]http://www.cracklab.ru/download.php посмотри "упаковщики и протекторы",
также глянь "распаковщики" но лучше наверное использовать малоизвестные
разработки каких небудь энтузиастов . А вопще я бегло взглянул на проблему защиты и ужаснулся ... Слова что мол взломать можно все что
угодно похоже являются правдой весь вопрос только во времени. А чтоб
сделать устойчивую защиту нужно быть хорошим точнее даже очень хорошим
кракером , но это конешно мое субъективное мнения. Кстате на сайте есть книга Криса Касперски посмотри. Правда чтоб все понять нужно убить млин столько времени . Вобщем я так бегло просмотрел ничего толком не понял кроме того что помимо кракеров хорошую защиту могут написать и вирусологи :)
На http://www.delphikingdom.com/ я как-то скачал chm там помимо всякой беребурды есть цикл статей о защите там можно много подчерпнуть.Если не найдешь где этот chm качается попробуй через поиск ("Защита") у них на сайте.
Предлогаю развить тему защиты в общем, если конешно автор ветки не
против.
← →
YurikGL © (2006-09-17 21:50) [6]На каждый pack есть свой unPack
Так что усилия по защите должны быть сопоставимы с ценой программы
← →
oxffff © (2006-09-17 21:51) [7]Посмотри также для кругозора
http://www.wasm.ru/article.php?article=debugreg
← →
oxffff © (2006-09-17 21:55) [8]Да и вообще все на http://www.wasm.ru/publist.php
← →
Юрий Зотов © (2006-09-17 22:07) [9]Вообще, чтобы программу стали всерьез взламывать, надо для начала написать такую программу, чтобы хоть один серьезный хакер взялся за ее взлом.
Такая программа уже написана?
← →
oxffff © (2006-09-17 22:32) [10]Сделай crackme и выложи.
То что сломают можно не сомневаться.
← →
oxffff © (2006-09-17 22:35) [11]По себе знаю,
что неудобства взлома представляют программы
основанные на байт коде.
← →
SPACE!! (2006-09-18 00:51) [12]
> основанные на байт коде
Можно чуть теории ... ?
← →
DiX © (2006-09-18 18:20) [13]
> чтобы хоть один серьезный хакер взялся за ее взлом
Я не претендую на такую защиту, чтобы ее не взломал хороший хакер/крекер, мне нужно, чтобы люди (типа установил SoftICE, прочитал Help, а сейчас посмотрю как эта программа работает) не смогли отследить действия программы.
P.S. А взломать и правда можно все
← →
dreamse (2006-09-18 18:21) [14]> DiX © (17.09.06 18:27)
Пойми что защиты не существует :) Если програма стоит того чтоб её взломали то её взломают ! Если не стоит то и никто не будет ломать.
Я потратил неделю на встраивание всякого рода защиты в программу ( софт для ведения клубного бизнеса ) Шифрование , проверка на отладчики и пр.
В итоге взломали дня за 2 чтоли , даже написали генератор SN :)
Лучший способ от взлома это не давать программу, просто продавать , показывать скрины и может быть ОЧЕНЬ урезанные демки показывать , вообще без кода
← →
oxffff © (2006-09-18 19:18) [15]
> > чтобы хоть один серьезный хакер взялся за ее взлом
>
> Я не претендую на такую защиту, чтобы ее не взломал хороший
> хакер/крекер, мне нужно, чтобы люди (типа установил SoftICE,
> прочитал Help, а сейчас посмотрю как эта программа работает)
> не смогли отследить действия программы.
> P.S. А взломать и правда можно все
Так если ты даже поставишь проверку на отладчик.
То обойти это тоже просто. jz на jmp.
← →
oxffff © (2006-09-18 19:21) [16]Ты можешь даже проверять контрольную сумму кода.
Но тоже это все обходится. В самом простом случае аналогично
jz на jmp.
← →
Eraser © (2006-09-18 19:25) [17]в дополнение к [9] и [14] скажу, что заниматься серьезной защитой - бесполезное занятие, взламывают все, в т.ч. аппаратные ключи и защиты, использующие технологии руткита.
кому нужно - купит в любом случае, кому не нужно - будет пользоваться краденым или не будет пользоваться вообще.
+ на первых парАх, наличие кряка серьезно увеличивает популярность продукта.
PS единственный совет по созданию зщиты - делать весьма сложный механизм шифрования ключа, желательно не самописный, чтобы было проблематично сделать кей-ген, а кряки и серийники это уже не так страшно.
Первое лечится подменой дистрибутива, второе черным списком серийников.
← →
DiX © (2006-09-18 19:31) [18]Для меня важно, чтобы тот кто ламает программу не понял как она работает (ее работа связана с деньгами), а взломает он код для программы или нет это уже не так важно.
← →
oxffff © (2006-09-18 19:33) [19]
> PS единственный совет по созданию зщиты - делать весьма
> сложный механизм шифрования ключа, желательно не самописный,
> чтобы было проблематично сделать кей-ген, а кряки и серийники
> это уже не так страшно.
Этого не достаточно.
Можно придумать супер алгоритм. Но во многих случаях
call проверка на рег (cупер алгоритм)
test eax,eax
jz Registered
Nonregistered:
Registered:
Ломается элементарно. jz на jmp
← →
oxffff © (2006-09-18 19:35) [20]Или даже XOR EAX,EAX
← →
Eraser © (2006-09-18 19:35) [21]> [18] DiX © (18.09.06 19:31)
тогда нужно использовать какое-нибудь готовое решение типа ASProtect, EXECryptor"a и т.п., только их тоже вскрывают время от веремени, а когда код расшифрован, то через DeDe все можно посмотреть.
← →
Eraser © (2006-09-18 19:36) [22]> [19] oxffff © (18.09.06 19:33)
и пусть ломается, главное чтобы кей-ген не сделали, особенно если в программе есть ограничение на число пользователей в зависимости от лицензии.
← →
Eraser © (2006-09-18 19:37) [23]> [18] DiX © (18.09.06 19:31)
> чтобы тот кто ламает программу не понял как она работает
а что полохово если узнает, думаю никаких "ноу-хау" в бухгалтеркой программе нету, чтобы скрывать реализацию.
← →
DiX © (2006-09-18 19:42) [24]
> сделаем следующее:
>mov ecx,fs:[20h]
jecxz not_being_debugger
[...]
<--- делайте, что хотите, нас отлаживают :)
>
> Потому, если FS:[20h] равен нулю, нас не отлаживают. Наслаждайтесь
> этим маленьким и простым методом для обнаружения отладчиков!
Как из этого кода сделать функцию по аналогии с ответом 1, чтобы возвращала True если есть отладчик и False в противном случае?
← →
DiX © (2006-09-18 19:47) [25]
> И наконец, чудесный трюк, которого вы ждали... Универсальный
> способ найти SoftICE и Win9x и в WinNT! Это очень просто,
> 100% основанно на API и без всяких "грязных" трюков, которые
> не идут на пользу совместимости. И ответ находится не так
> далеко, как вы думаете... ключ заключается в API, который
> вы уже использовали раньше: CreateFile. Да, именно эта функция.
> .. Разве это не прекрасно? Ладно, мы можем попытаться открыть
> следующее:
+ SoftICE для Win9x : "\\.\SICE"
+ SoftICE для WinNT : "\\.\NTICE"
> Если функция возвращает нам что-нибудь, отличное от -1 (INVALID_HANDLE_VALUE),
> SoftICE запущен! Далее следует демонстрационная программа:
>;---[ CUT HERE ]-------------------------------------------------------------
.586p
.model flat
extrn CreateFileA:PROC
extrn CloseHandle:PROC
extrn MessageBoxA:PROC
extrn ExitProcess:PROC
.data
szTitle db "SoftICE detection",0
szMessage db "SoftICE for Win9x : "
answ1 db "not found!",10
db "SoftICE for WinNT : "
answ2 db "not found!",10
db "(c) 1999 Billy Belcebu/iKX",0
nfnd db "found! ",10
SICE9X db "\\.\SICE",0
SICENT db "\\.\NTICE",0
.code
DetectSoftICE:
push 00000000h ; Проверяем наличии
push 00000080h ; SoftICE для среды Win9x
push 00000003h
push 00000000h
push 00000001h
push 0C0000000h
push offset SICE9X
call CreateFileA
inc eax
jz NoSICE9X
dec eax
push eax ; Закрываем открытый файл
call CloseHandle
lea edi,answ1 ; SoftICE найден!
call PutFound
NoSICE9X:
push 00000000h ; А теперь пытаемся открыть
push 00000080h ; SoftICE для WinNT...
push 00000003h
push 00000000h
push 00000001h
push 0C0000000h
push offset SICENT
call CreateFileA
inc eax
jz NoSICENT
dec eax
push eax ; Закрываем хэндл файла
call CloseHandle
lea edi,answ2 ; SoftICE для WinNT найден!
call PutFound
NoSICENT:
push 00h ; Показываем MessageBox с
push offset szTitle ; результатами
push offset szMessage
push 00h
call MessageBoxA
push 00h ; Завершаем программу
call ExitProcess
PutFound:
mov ecx,0Bh ; Меняем "not found" на
lea esi,nfnd ; "found"; адрес, где нужно
rep movsb ; изменить, находится в EDI
ret
end DetectSoftICE
;---[ CUT HERE ]-------------------------------------------------------------
> Это действительно работает, поверьте мне :). Тот же метод
> можно применить к "враждебным" драйверам, просто проведите
> небольшое исследование.
И подскажите с функцией для этого кода, ну не знаю я Assembler.
← →
oxffff © (2006-09-18 20:01) [26]function Check:boolean;
begin
asm
MOV ebx,fs:[20h];
test ebx,ebx;
jnz @OO;
@NONE: mov result,0;
jmp @exit;
@OO: mov result,1;
@EXIT:
end;
← →
oxffff © (2006-09-18 20:09) [27]Function check2:boolean;
begin
a:=CreateFileA("\\.\NTICE",$0C0000000,1,0,3,$80,0);
if a<>INVALID_HANDLE_VALUE then result:=TRUE
else
begin
CloseHandle(a);
result:=FALSE;
end;
end;
← →
oxffff © (2006-09-18 20:11) [28]a:THANDLE;
← →
oxffff © (2006-09-18 20:16) [29]Сорри перепутал
Function check2:boolean;
var a:THANDLE;
begin
a:=CreateFileA("\\.\NTICE",$0C0000000,1,0,3,$80,0);
if a<>INVALID_HANDLE_VALUE then
begin
CloseHandle(a);
result:=TRUE;
end
else
result:=FALSE;
end;
← →
DiX © (2006-09-18 20:20) [30]Че то не работает
function Check:boolean;
begin
asm
MOV ebx,fs:[20h];
test ebx,ebx;
jnz @OO;
@NONE: mov result,0;
jmp @exit;
@OO: mov result,1;
@EXIT:
end;
end;
условие: если Check=true пишет, что отладчик постоянно присутствует (отладчик не запущен)
условие: если Check=false пишет что программа обратилась к недопустимому адресу и будет закрыта
← →
oxffff © (2006-09-18 20:29) [31]Этот код проверяет значение по fs:[20h];
Если 0, то result:=0. Иначе result:=1;
У меня ошибок не вылетает
← →
DiX © (2006-09-18 20:42) [32]странно
← →
oxffff © (2006-09-18 20:45) [33]Нашел
http://www.wasm.ru/comment.php?artcode=1017001
← →
oxffff © (2006-09-18 20:47) [34]fs:[20h] рулит только в Win9x.
← →
DiX © (2006-09-18 20:49) [35]
function Check:boolean;
begin
asm
MOV ebx,fs:[20h];
test ebx,ebx;
jnz @OO;
@NONE: mov result,0;
jmp @exit;
@OO: mov result,1;
@EXIT:
end;
end;
Надо сюда вставить проверку винты если 9x то все ок, иначе False;
← →
oxffff © (2006-09-18 21:32) [36]VerifyVersionInfo
← →
oxffff © (2006-09-18 21:46) [37]fs:[0] - структура TEB
← →
DiX © (2006-09-19 08:30) [38]а способа определения отладчиков для winNT никто не знает?
← →
Сергей М. © (2006-09-19 09:08) [39]
> DiX © (19.09.06 08:30) [38]
The IsDebuggerPresent function indicates whether the calling process is running under the context of a debugger.
This function is exported from KERNEL32.DLL.
BOOL IsDebuggerPresent(VOID)
Parameters
This function has no parameters.
Return Value
If the current process is running in the context of a debugger, the return value is nonzero.
If the current process is not running in the context of a debugger, the return value is zero.
← →
Barloggg (2006-09-19 09:30) [40]а как насчет многоуровневой обороны?
с некоторых старый игрушках серийник запрашивался несколько раз по мере прохождения игры.
крякер ломал первый слой, потом запускал - все работает. и расслаблялся.
а я как игрок дошел до второго слоя защиты (через неделю игры) и расстроился...
интересно... хоть кто-нибудь из здесь присутствующих пользовался приемом "безумного кода"?
Страницы: 1 2 вся ветка
Текущий архив: 2006.10.15;
Скачать: CL | DM;
Память: 0.57 MB
Время: 0.046 c