Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.036 c
3-1100696705
Moiseev-KN
2004-11-17 16:05
2004.12.19
Не получается сохранить в базе значение типа Currency


4-1099838642
SPeller
2004-11-07 17:44
2004.12.19
Combobox и манифест ХР


14-1101745236
Empleado
2004-11-29 19:20
2004.12.19
C editor


1-1102032607
Garfunkel
2004-12-03 03:10
2004.12.19
Сворачивание в трей при загрузке Windows


1-1102341505
Unknown user
2004-12-06 16:58
2004.12.19
Как автоматически распознать тип файла?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский