Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Защита от SOFTICE 
:(
    Опции темы
DIMONSOFT
  Дата 22.7.2005, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 19.12.2004
Где: Киев

Репутация: нет
Всего: -3



Какие методы?
--------------------
PM MAIL   Вверх
Albinos_x
Дата 30.7.2005, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: нет
Всего: 108



самы распространёный:

Код

unit Unit1;

interface

type
  FileShareType = (DenyCompatibility, DenyAll, DenyWrite, DenyRead, DenyNone);
  FileAccessType = (ReadOnly, WriteOnly, ReadWrite);
  procedure SetFileAccess(AccessMode: FileAccessType; ShareMode: FileShareType);

implementation

uses Windows, SysUtils;

procedure SetFileAccess(AccessMode: FileAccessType; ShareMode: FileShareType);
begin
FileMode:=ord(AccessMode) or (ord(ShareMode) shl 4);
end;

function Otlad95:boolean;
var HF:THandle;
begin
result:=false;
HF:=CreateFile('\\.\SICE',GENERIC_READ or GENERIC_WRITE,
               FILE_SHARE_READ or FILE_SHARE_WRITE,nil,OPEN_EXISTING,
               FILE_ATTRIBUTE_NORMAL,0);
if (HF<>INVALID_HANDLE_VALUE) then
    begin
    CloseHandle(HF);
    result:=true;
    end;
end;

function OtladNT:boolean;
var HF:THandle;
begin
result:=false;
HF:=CreateFile('\\.\NTICE',GENERIC_READ or GENERIC_WRITE,
               FILE_SHARE_READ or FILE_SHARE_WRITE,nil,OPEN_EXISTING,
               FILE_ATTRIBUTE_NORMAL,0);
if (HF<>INVALID_HANDLE_VALUE) then
    begin
    CloseHandle(HF);
    result:=true;
    end;
end;

initialization
  if Otlad95 or OtladNT then
     begin
    {здесь необходимые действия}
     halt;
     end;

end.



--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Snowy
Дата 1.8.2005, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: нет
Всего: 484



На 100% не выйдет.
Этот способ легко обходится при помощи банального патча софтайса.
Кому нужно, все равно выломает либо защиту, либо просто имена подкорректирует.
Защита от софтайса может только маленького неграмотного крякера отпугнуть.
Хотя, если этот код чуть подправить... Убрать функции (чтобы по трэйсу не обойти), закодить имена файлов (чтоб не так явно светиться), повторить в нескольких местах кода в разных вариациях (надежней будет), то это может доставить до часа головной боль непропатченому софтайсеру.
В текущем виде код способен только насмешить. Он рабочий, но банальный и давно известный.
Гарантировано защититься нельзя. Но можно усложнить процедуру взлома. Чем больше времени будет затрачено на взлом, тем больше вероятность того, что крякер бросит эту затею...
PM MAIL   Вверх
Ch0bits
  Дата 1.8.2005, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Python Dev.
****


Профиль
Группа: Завсегдатай
Сообщений: 2124
Регистрация: 21.2.2005
Где: Казань

Репутация: нет
Всего: 62



Для определения SoftIce'а существует куча freeware dll-библиотек(anti-SoftIce) которые можно легко найти на хакерских сайтах, но существует так и куча патчей, заплаток, плюгинов направленных на скрытие и расширение возможностей отладчика. Как говорится: против лома нет приёма, если нет другого лома.
Народные способы защиты:
1. Поиск файлов SoftIce'а.
2. Проверка времени выполнения кода.
3. Тест отладоных регистров проца.
4. Реал-тайм крипторы-запаковщики портящие жизнь хакеру.
5. Выполнение защитного кода в стеке.
В остальном полностью согласен со Snowy.

Это сообщение отредактировал(а) Vadim999 - 1.8.2005, 20:25
PM WWW   Вверх
rsm
Дата 2.8.2005, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: нет
Всего: 62



Цитата(Snowy @ 1.8.2005, 17:09)
Убрать функции (чтобы по трэйсу не обойти)

SI - отладчик уровня ядра, функцию открытия файла от него никак не спрятать.

Цитата(Snowy @ 1.8.2005, 17:09)
повторить в нескольких местах кода в разных вариациях

Нет гарантии, что компилятор не проведет оптимизацию, сделав код одинаковым.

Цитата(Vadim999 @ 1.8.2005, 22:23)
2. Проверка времени выполнения кода.

rdtsc? Хм, в принципе неплохо, особенно если малость (хотя бы xor'ом) пошифровать ее...

Цитата(Vadim999 @ 1.8.2005, 22:23)
3. Тест отладоных регистров проца.

Доступно только на уровне ядра.

Цитата(Vadim999 @ 1.8.2005, 22:23)
4. Реал-тайм крипторы-запаковщики портящие жизнь хакеру.

Большинство наиболее известных крипторов уже изучены.

Цитата(Vadim999 @ 1.8.2005, 22:23)
5. Выполнение защитного кода в стеке.

Тоже неплохая идея, особенно если при отладке не следить за содержимым стека.

Кстати, вы не подумали о том, что SI может быть установлен совершенно легально, для работы?

Цитата(Snowy @ 1.8.2005, 17:09)
можно усложнить процедуру взлома. Чем больше времени будет затрачено на взлом, тем больше вероятность того, что крякер бросит эту затею...

Золотое правило баланса мощности защиты, трудоемкости ее взлома и стоимости программы.

Что предлагаю я: используйте неявный контроль. При грамотной реализации это один из наиболее эффективных методов защиты.
PM MAIL   Вверх
oleg1973
Дата 3.8.2005, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: нет
Всего: 34



Цитата
SI - отладчик уровня ядра, функцию открытия файла от него никак не спрятать.

но можно проверить на ее перехват
Цитата
rdtsc? Хм, в принципе неплохо, особенно если малость (хотя бы xor'ом) пошифровать ее...

ниче хорошего так как на разных процах инструкции выполняются за разное кол-во тиков
Цитата
Доступно только на уровне ядра.
напишем драйвер
Цитата
Большинство наиболее известных крипторов уже изучены.

не верно на 90 процентов
Цитата
5. Выполнение защитного кода в стеке.

сп2 вроде как запретил такое делать


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
rsm
Дата 3.8.2005, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: нет
Всего: 62



Цитата(oleg1973 @ 3.8.2005, 02:27)
но можно проверить на ее перехват

Можно, однако это не поможет - API слишком многослойный, просто залезем "поглубже".

Цитата(oleg1973 @ 3.8.2005, 02:27)
ниче хорошего так как на разных процах инструкции выполняются за разное кол-во тиков

В принципе это можно скорректировать. Но тогда не будет 100% уверенности в отладке.

Цитата(oleg1973 @ 3.8.2005, 02:27)
напишем драйвер

Среди программеров-прикладников есть много тех, кто сможет написать драйвер?

Цитата(oleg1973 @ 3.8.2005, 02:27)
не верно на 90 процентов

И тем не менее программы распаковывают и юзают.

Цитата(oleg1973 @ 3.8.2005, 02:27)
сп2 вроде как запретил такое делать

ОК, отметаем этот способ.
PM MAIL   Вверх
oleg1973
Дата 3.8.2005, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: нет
Всего: 34



Цитата
Можно, однако это не поможет - API слишком многослойный, просто залезем "поглубже".

ну почему не поможет?
мы знаем что почти все (не все но почти) функции винды начинаются стандартно
Код

push ebp
mov ebp,esp

при установке бряка софтайс заменяет это на jmp xxxx кудато
тоесть после загрузке прога должна проверить на остутствие джампов в начале функций , канешно тоже не панацея как способ, но все же )))


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
rsm
Дата 3.8.2005, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: нет
Всего: 62



Цитата(oleg1973 @ 3.8.2005, 12:36)
при установке бряка софтайс заменяет это на jmp xxxx кудато

Не совсем так. SI заменяет первый байт начала функции на команду отладочного прерывания INT3 (0ССh) и при срабатывании прерывания вставляет обратно извлеченный ранее байт. Обнаружить это достаточно просто - нужно прочитать первый байт пролога функции и если он равен 0CCh, значит вызов функции отслеживается отладчиком.
Данный способ контроля обходится путем установки точек прерываний на недоступные из пользовательского уровня функции уровня ядра. Например, для CreateFile это будет NtCreateFile (или, как вариант, IoCreateFile).
PM MAIL   Вверх
oleg1973
Дата 3.8.2005, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: нет
Всего: 34



я проверял на MessageBoxA
гдето на форуме была тема уже там я файлик выкладывал он при наличии бряка на месадж бокс выдавал аларм )
и там именно джамп был
хотя инт3 логичней


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
rsm
Дата 3.8.2005, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: нет
Всего: 62



Цитата(oleg1973 @ 3.8.2005, 14:43)
там я файлик выкладывал

Хороший, помнится, был файл - в половине систем не работал вообще, в другой половине глючил, показывая угрожающее сообщение без всякого дубагера smile
PM MAIL   Вверх
Skiminok
Дата 12.4.2006, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 5.4.2006
Где: Киев

Репутация: нет
Всего: нет



А каким образом данный выше код можно адаптировать под другие взломщики?
PM MAIL   Вверх
Dian
Дата 15.5.2006, 06:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 2.1.2006

Репутация: нет
Всего: 1



Цитата(rsm @  3.8.2005,  04:41 Найти цитируемый пост)
SI - отладчик уровня ядра, функцию открытия файла от него никак не спрятать.

Это делается элементарно

Цитата(rsm @  3.8.2005,  16:47 Найти цитируемый пост)
Среди программеров-прикладников есть много тех, кто сможет написать драйвер?

Защита - это задача не для прикладника


В сайсе можно и dr-регистры юзать 
PM MAIL WWW   Вверх
Dimannn
Дата 16.5.2006, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 318
Регистрация: 14.4.2005
Где: Владимир

Репутация: нет
Всего: 1



А что, если попробовать отловить отсутствие ошибки при вызове INT3?
Или воспользваться kernel32.IsDebuggerPresent 


--------------------
Хотите быстро и без проблем опубликовать вашу программу в сети за 5 минут?
Тогда потратьте пару минут чтобы посмотреть, что предлагает OpenProject.org.ru
PM MAIL ICQ   Вверх
Dian
Дата 17.5.2006, 06:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 2.1.2006

Репутация: нет
Всего: 1



Цитата(Dimannn @  16.5.2006,  22:12 Найти цитируемый пост)
А что, если попробовать отловить отсутствие ошибки при вызове INT3?

Обычно сайсу запрещают ставить int3, а ещё можно запретить его обрабатывать. Вобщем, здравый смысл есть, сработает примерно в 15% случаев 

Цитата(Dimannn @  16.5.2006,  22:12 Найти цитируемый пост)
Или воспользваться kernel32.IsDebuggerPresent  

Дохлый номер
 
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Технологии защиты программного обеспечения | Следующая тема »


 




[ Время генерации скрипта: 0.0956 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.