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

Вниз

Антиотладочные приемы   Найти похожие ветки 

 
Frozzen   (2004-12-03 11:25) [0]

Здравствуйте
Изобретаю защиту. Думаю необходимо использовать антиотладочную защиту. Додскажите приемы?


 
ssk ©   (2004-12-03 11:28) [1]

а твоя программа этого стОит?


 
Алхимик ©   (2004-12-03 11:28) [2]

Написать программу работающую по принципу "Неуловимый Джо". :)


 
Frozzen   (2004-12-03 11:50) [3]

да прога с самоизменяющимся кодом это круто
Да в принцепе дипломом я балуюсь заканчивая защиту информации, как токавой программы нет, хочу написать чего- то вроди библиотеки классов для защиты


 
Frozzen   (2004-12-03 11:52) [4]

программ которые не взломать нет, но хочется навтыкать по больше палок в колеса


 
Gloomer ©   (2004-12-03 12:07) [5]

Лучшим отладчиком большенство хакеров считает SoftIce. Алгоритм - прекращай выполнение программы, если запущен SoftIce.
Перед последней компиляцией добавляй директиву {$D-} - она уберет отладочную информацию из ехе-шника, но не будет работать встроенный в Delphi debugger.


 
Amoeba ©   (2004-12-03 12:10) [6]

Вроде как где-то в сети была информация в роде того, как сделать, чтобы программа обнаруживалf запущенный SoftIce.


 
Gloomer ©   (2004-12-03 12:17) [7]

кое-что нашел в моем любимом журнале (не сочтите за рекламу)
http://www.xakep.ru/magazine/xa/050/054/5.asp


 
VMcL ©   (2004-12-03 12:18) [8]

>>Frozzen  (03.12.04 11:25)

http://www.wasm.ru/

>>Gloomer ©  (03.12.04 12:07) [5]

>Перед последней компиляцией добавляй директиву {$D-}

За отладочную информацию именно в EXE эта директива не отвечает.


 
Anatoly Podgoretsky ©   (2004-12-03 12:20) [9]

Gloomer ©   (03.12.04 12:07) [5]
Никакой отладочной информации там нет.


 
Gloomer ©   (2004-12-03 12:28) [10]

Виноват, проверил, действительно ехе-шник от этого не меняется. Директива просто отключает встроенный дебаггер :-(

Еще недавно бы я порекоменовал ASProtect, но прочитав статью
http://podgoretsky.com/ftp/Docs/Misc/ExePack/ExePack.html
я уже не уверен, что это лучший способ.


 
dream   (2004-12-03 13:13) [11]

Один из лучших способов защиты заключаеться в том чтобы запоковать программу упоковщиком у которого нет отдельного распоковщика .. т.е программа распоковываеться только в момент запуска , а отдельно её не распокуешь ... таким образом можно отследить что и где но нельзя поменять байты


 
Frozzen   (2004-12-03 13:44) [12]

такую программу взламывают таким способом
Запускают ее
она распоковывается
берую дамп из памяти
и уже все это дело можно теражировать в незапакованном виде


 
GuAV ©   (2004-12-03 15:31) [13]

function IsDebuggerPresent: BOOL; stdcall; external kernel32;

:-)


 
TUser ©   (2004-12-03 15:35) [14]


> GuAV ©   (03.12.04 15:31) [13]

NT-only, кажется


 
Anatoly Podgoretsky ©   (2004-12-03 16:07) [15]

Frozzen   (03.12.04 13:44) [12]
Ты наверно в ДОСе работаешь.


 
GuAV ©   (2004-12-03 16:26) [16]

2 TUser ©   (03.12.04 15:35) [14]

 Windows NT/2000/XP: Included in Windows NT 4.0 and later.
 Windows 95/98/Me: Included in Windows 98 and later.


 
Clipper Chip   (2004-12-03 16:36) [17]

то что добавишь IsDebuggerPresent и потом выход, или
не запускаться при запущенным отладчике, имхо, таким образом
не остановишь практически ни одного взломщика,
поверь это обойти очень просто, не сможешь ведь ты отслеживать,
присутствие всех сушествующих в мире отладчиков, а для отладки
сейчас пользуются далеко не одним SoftIce"ом можно в .NET студии поотлаживать, получается такая программа будет не функциональна, на каждом компутере, где стоит хоть какой-то отладчик.
Вот что может помочь, это крутая криптография кода, и т.п.


 
GuAV ©   (2004-12-03 16:40) [18]

Clipper Chip   (03.12.04 16:36) [17]

Я же смайлик поставил

:-)


 
Clipper Chip   (2004-12-03 16:47) [19]

я впринципе, про то что антиотладочную защиту, не построить
на проверке присутствия отладчика. это просто 0, а не защита!
;)


 
Frozzen   (2004-12-03 17:28) [20]

Вот и я думаю написать длл с функцией проверки привязки к машине. Ее зашифровать ключем, допустим, ид-винта. и при каждом вызове ее код расшифровывать.


 
Frozzen   (2004-12-03 17:28) [21]

Вот и я думаю написать длл с функцией проверки привязки к машине. Ее зашифровать ключем, допустим, ид-винта. и при каждом вызове ее код расшифровывать.


 
Frozzen   (2004-12-03 17:29) [22]

Диалаб глючит


 
Frozzen   (2004-12-03 17:33) [23]

или чего нить подобное изобрести, пока точно еще мысль не оформилась, до всех тонкостей


 
Clipper Chip   (2004-12-03 17:44) [24]

>Frozen
:) ну такой вариант, тож не обеспечит сложной защиты.
>зашифровать ключем, допустим, ид-винта.
ну не совсем будет хорошо.
для улучшения можно применить ассиметричное с шифрование,
открытых и  закрытых ключах. В таком случае ключ, конечно не найдут, но такую прогу можно пропачить и все.
могу посоветовать еще поспрашивать крекеров, что им сложнее ломать. на форуме cracklab.ru  :)


 
Frozzen   (2004-12-03 18:09) [25]

у меня одногруппничек-друг таковой
беседую с ним
вроди ему вариант с шифрованием понравился


 
Gloomer ©   (2004-12-04 10:51) [26]

2 Frozzen
Я так понимаю, тебе главное получить не антиотладочные приемы, а защитить свою прогу от несанкционированного копирования.
Есть давно опробованный метод:
Наиболее важный код выводищь в отдельную dll-ку.
Причем делаешь две dll-ки с одинаковыми именами и одинаковым описанием прорцедур: одну с полным кодом, вторая же содержит только демо.
На распространение выставляешь демо-dll. Когда юзер зарегестрировал - высылаешь ему полную dll.
С демо-dll - нет кода, нечего взломать :-)
Правда нерадивые юзеры могут выставить твою полную dll на всеобщее обозрение. Поэтому каждая dll должна содержать какие-нибудь уникальные данные, чтобы можно было выявить юзера и попытаться его наказать. Через суд за нарушение авторской собственности :-)))


 
Piter ©   (2004-12-04 20:53) [27]

Gloomer ©   (03.12.04 12:07) [5]
Алгоритм - прекращай выполнение программы, если запущен SoftIce


детская защита. Саоея примитивное - определять запущенного дебагера. Легко обходится умеющими людьми. Очень легко.

Причем, что касается и определения официальными методами, что и неофициальными...

Gloomer ©   (03.12.04 12:17) [7]
кое-что нашел в моем любимом журнале


сочувствую


 
programania ©   (2004-12-04 22:06) [28]

Наверно сложность кода и многократность его выполнения единственное средство для защиты программы от анализа.
Запутать исходный текст можно другой программой.
Вот исходный бессмысленный код для запутывания:

procedure test;
var
rrr:integer;
i:integer;
s:string;
begin
{Коментарий}
for i:=1 to 2 do begin //Другой коментарий
inc(rrr);
end;
form1.timer1.enabled:=false;
rrr:=2;
if rrr>0 then begin
assignFile(tf,"test.pas");
end;
reset(tf);
closeFile(tf)
end;

А вот что после запутывания:

procedure test; var rrr:integer; i:integer;
s:string;
label l1,l2,l3,l4,l5,l6,l7,l8,l9,l10,l11,l12,l13,
l14,l15,l16,l17,l18,l19,l20,l21,l22,l23,l24,
l25,l26,l27,l28,l29,l30,l31,l32,l33,l34,l35,
l36,l37,l38,l39,l40,l41,l42,l43,l44,l45,l46,
l47,l48,l49,l50,l51,l52;
begin goto l39;l40:  goto l34;l35:  l1:if i<=2 then begin goto l44;
l45:;goto l52;l48:goto l19;l20:;goto l32;
l28:goto l24;l25:;goto l31;l32:;goto l51;
l52:  goto l18;l19:closefile(tf);goto l20;
l21:;goto l37;l33:goto l14;l15:;goto l36;
l37:  goto l23;l24:goto l1;goto l17;l13:inc(rrr);
goto l16;l17:;goto l25;l26:  goto l28;l29:assignfile(tf, "test.pas" );
goto l12;l8:i:=1;goto l11;l12:;goto l30;l31:;
goto l42;l38:goto l29;l30:;goto l41;l42:;
goto l47;l43:reset(tf);goto l46;l47:  goto l33;
l34:goto l8;l9:end  else goto l2;goto l10;
l11:;goto l35;l36:  if rrr>0 then begin goto l38;
l39:goto l3;l4:inc(i);goto l5;l6:;goto l22;
l18:goto l9;l10:;goto l21;l22:;goto l40;l41:  end;
goto l49;l50: goto l48;l49:goto l43;l44:goto l13;
l14:l2: form1.timer1.enabled:=false;goto l7;
l3:rrr:=0;goto l6;l7:;goto l15;l16:;goto l27;
l23:goto l4;l5:;goto l26;l27:;goto l45;l46:;
goto l50;l51:  end;

Можно ли понять что делает
эта программа даже имея такой исходный текст?
Ведь программу с goto невозможно
понять даже если ее специально не запутывать.
Для понимания придется выполнять по шагам
и все записывать чтобы выделить одинаковые
куски, а это миллионы команд.
Или есть другой способ?



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

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

Наверх




Память: 0.54 MB
Время: 0.024 c
14-1101455719
Pentium133
2004-11-26 10:55
2004.12.19
Телевидение


1-1102259020
PURGEN
2004-12-05 18:03
2004.12.19
Компиляция


14-1102017055
AYU
2004-12-02 22:50
2004.12.19
Дайте ссылки на что-нить интересное


1-1102096504
APXi
2004-12-03 20:55
2004.12.19
Проверка возможности создания объекта в конструкторе


3-1100778681
ds
2004-11-18 14:51
2004.12.19
Отображение в DBGrid