Форум: "Основная";
Текущий архив: 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.052 c