Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2007, 12:43   #1
Simply-Art
Программист и
Участник клуба
 
Аватар для Simply-Art
 
Регистрация: 29.10.2006
Сообщений: 1,265
Вопрос Универсальная защита

Мне кажется, что именно на языке низкого уровня можно пресечь попытки декоипиляторов. Подскажите, есть ли такой универсальный код на ассемблере, который можно вставить в Delphi.
Simply-Art вне форума Ответить с цитированием
Старый 27.02.2007, 15:17   #2
Noor
Участник клуба
 
Аватар для Noor
 
Регистрация: 01.11.2006
Сообщений: 1,051
По умолчанию

Я когда то встречал описание, если что дома посмотрю у себя в архивах... если что то завтра выложу, а опка
Вот несколько советов, которые, надеюсь, позволят вам хоть немного обезопасить свою программу от взлома (по меньшей мере, начинающими и/или не слишком квалифицированными хакерами).
1.Пишите защиту на ассемблере.
2.Никогда не давайте осмысленные имена важным функциям, типа IsValidSerialNum.
3.Не предупреждайте (сразу) пользователя о том, что защита нарушена. 4.Лучше сделайте это через два-три дня - хакеры это ненавидят… Пустячок, а приятно.
5.Используйте "перекрестные" проверки CRC-кодов ваших EXE- и DLL-файлов.
6.Делайте паузу (одной-двух секунд будет вполне достаточно) после ввода пароля (серийного номере) перед возвратом результата. При этом подобрать правильный пароль путем прямого перебора (с помощью специально написанной программы) будет совершенно невозможно.
7.Сохраняйте пароли в каком-нибудь "необычном" месте, например, в свойствах поля базы данных.
8.Не привязывайтесь к системной дате. Вычисляйте текущую дату из времени создания каких-нибудь системных файлов, например SYSTEM.DAT или USER.DAT (Windows Registry).
9.Сохраняйте пароль в нескольких местах одновременно.
10.Не используйте "статические" (то есть жестко прошитые в вашу программу) строчки текста для уведомления пользователя о том, что пароль правильный (или неправильный). Это первое, на что смотрит хакер. Генерируйте эти строчки динамически, или используйте шифрование, хотя бы самое простенькое.
11.Используйте "мелкие хитрости" для защиты от дизассемблирования и отладки.
12.Наконец, никому никогда не рассказывайте о том, как построена ваша защита

Посмотри тут http://www.wasm.ru/article.php?article=1017001

Последний раз редактировалось Noor; 27.02.2007 в 15:22.
Noor вне форума Ответить с цитированием
Старый 27.02.2007, 20:19   #3
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Simply-Art
декомпилятор пресечь очень трудно (если это вообще возможно)


а насчёт второго правила
всё равно в экзешнике имён функций нет (если они не экспортируются и не импортируются), там просто смещения в памяти
rpy3uH вне форума Ответить с цитированием
Старый 28.02.2007, 00:16   #4
-=DeS=-
Форумчанин
 
Аватар для -=DeS=-
 
Регистрация: 20.12.2006
Сообщений: 135
По умолчанию

декомпилятор нельзя пресечь !!! делай привязку к железу и всё...
writeln('Hello Dude!!!');
-=DeS=- вне форума Ответить с цитированием
Старый 28.02.2007, 05:46   #5
Simply-Art
Программист и
Участник клуба
 
Аватар для Simply-Art
 
Регистрация: 29.10.2006
Сообщений: 1,265
По умолчанию

Я же не говорю о 100% пресечении, а о том, чтоб какой ни будь чел прочитав инструкцию в net'е не мог спокойно взломать мою программу.
Simply-Art вне форума Ответить с цитированием
Старый 28.02.2007, 12:51   #6
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Я уже советовал... Тут для всех: использовать упаковщик, НО переделанный. Если тот же UPX чуть подправить (как это сделал execom) то распаковать просто так уже не получится.
zetrix вне форума Ответить с цитированием
Старый 28.02.2007, 14:11   #7
Noor
Участник клуба
 
Аватар для Noor
 
Регистрация: 01.11.2006
Сообщений: 1,051
По умолчанию

Igor Nikolaev aKa The Sprite пишет:
Hаткнулся в инете на некий модуль StopIce, и любопытство сделало своё дело. Как долго я смеялся... )))
Для тех, кто не в курсе: посмотрите export NmSymIsSoftIceLoaded (или что-то подобное) в nmtrans.dll.

Вот полный юнит против SOFTICE, при обнаружений отладчика перезагружает компьютер:
----------------------------------------------------------------------
Код:
unit StopIce;

interface

implementation

uses Windows;

Function IsSoftIce95Loaded: boolean;
Var hFile: Thandle;
Begin

result := false;
hFile := CreateFileA('\\.\SICE', GENERIC_READ or GENERIC_WRITE,
FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0);
if( hFile <> INVALID_HANDLE_VALUE ) then begin
CloseHandle(hFile);
result := TRUE;
end;
End;

Function IsSoftIceNTLoaded: boolean;
Var hFile: Thandle;
Begin

result := false;
hFile := CreateFileA('\\.\NTICE', GENERIC_READ or GENERIC_WRITE,
FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0);
if( hFile <> INVALID_HANDLE_VALUE ) then begin
CloseHandle(hFile);
result := TRUE;
end;
End;

function WinExit(flags: integer): boolean;

function SetPrivilege(privilegeName: string; enable: boolean): boolean;
var tpPrev,
tp         : TTokenPrivileges;
token      : THandle;
dwRetLen   : DWord;
begin
result := False;
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
token);

tp.PrivilegeCount := 1;
if LookupPrivilegeValue(nil, pchar(privilegeName), tp.Privileges[0].LUID)
then

begin
if enable then
tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
else
tp.Privileges[0].Attributes := 0;
dwRetLen := 0;
result := AdjustTokenPrivileges(token, False, tp, SizeOf(tpPrev), tpPrev,
dwRetLen);

end;
CloseHandle(token);
end;
begin

if SetPrivilege('SeShutdownPrivilege', true) then begin
ExitWindowsEx(flags, 0);
SetPrivilege('SeShutdownPrivilege', False)
end;
end;

initialization

if IsSoftIce95Loaded or IsSoftIceNTLoaded then begin
WinExit(EWX_SHUTDOWN or EWX_FORCE);
Halt;
end;
end.
Noor вне форума Ответить с цитированием
Старый 28.02.2007, 20:14   #8
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от -=DeS=- Посмотреть сообщение
декомпилятор нельзя пресечь !!! делай привязку к железу и всё...
ну сделаешь ты привязку к железу, я декомпилирую всё равно я смогу увидеть исходный код

ПРО тему декомпиляторов: из декомпиляторов нормальных языков (delphi и c++), есть только один - DeDe и то он не показывает делфийского кода, он показывает только процедуры обработчики и их смещения в памяти, и разумеется сами формы и их свойства, поэтому с помощью декомпилятора ты никогда не сможещь получить полноценного исходного кода, разве что ассемблерный код (а для получения ассемблерного кода можно использовать любой дизассмеблер или отладчик)
rpy3uH вне форума Ответить с цитированием
Старый 10.03.2007, 04:57   #9
Simply-Art
Программист и
Участник клуба
 
Аватар для Simply-Art
 
Регистрация: 29.10.2006
Сообщений: 1,265
По умолчанию

Из этого всего я понял одно что если у тебя хороший запаковщик то прогу можно прочитать только когда она загрузилась. Отсюда вопрос есть ли такой способ чтоб сделать память не читабельной для того же DeDe, может есть какая нибудь последовательность символов которая приводит к вылету отладчиков?
Simply-Art вне форума Ответить с цитированием
Старый 10.03.2007, 07:44   #10
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

память всегда можно сделать читабельной и всегда можно сделать доступной к изменению!!!!!!!
для этого есть функция VirtualProtect

сейчас уже все декомпиляторы и отладчики настолько навороченные что никакие последовательности символов уже не срабатывают, например эмулятор антивируса NOD32 уже ни на что не реагирует
rpy3uH вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Универсальная программа, с универсальным описанием объектов. Strannik-BKS Свободное общение 38 25.04.2009 23:51
Защита видео dragon76 Мультимедиа в Delphi 6 26.11.2008 19:27
Защита boostman Общие вопросы Delphi 4 21.06.2008 17:45
Защита astorik Софт 12 20.12.2007 04:43
ICQ Bot - защита от флуда snakesoft Работа с сетью в Delphi 4 13.12.2007 04:35