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

Вниз

anti-cracking   Найти похожие ветки 

 
Kerk ©   (2004-05-23 15:48) [0]

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

;-------------------------------------
 push enc_part_size
 push GMEM_FIXED
 call GlobalAlloc
 xchg eax,edx

 push offset @@free_buf

@@:
; ... тут процедура расшифровки ...
; расшифровщик RDA, т.е. ключ не хранится.
; Расшифровываем перебором до тех пор,
; пока CRC32 не совпадут. Расшифровываем в буфер.

 lea eax,[edx+entry_point]
 cmp ebx,TRUE_CRC32 ; в ebx CRC32 расшифрованного тела

 jz eax             ; враг не знает куда будет передано управление
                    ; после рассшифровки и не может поставить туда bpx
 jmp @b

@@free_buf:
 push edx
 call GlobalFree
 ret

;-------------------------------------
; Зашифрованное тело
enc_start:
entry_point dd offset @@start_proc - offset @@enc_start

; Тут всякие строки с текстом

@@start_proc:
; процедура обнаружения SoftIce
; если он есть, сваливаем (jmp @@return)

; проверяем серийник
;

@@return:  
 mov edi,edx           ;
 mov ecx,enc_part_size ; Затираем буфер, чтоб выжившие враги
 xor eax,eax           ; bpx на GlobalFree не поставили.
 rep stosb             ;
 ret ; возврат на метку @@exit
enc_part_size equ $-enc_start
;-------------------------------------


Что скажет уважаемая общественность?


 
VMcL ©   (2004-05-23 15:56) [1]

http://wasm.ru/
в частности:
http://www.wasm.ru/publist.php?list=23
http://www.wasm.ru/publist.php?list=17


 
Kerk ©   (2004-05-23 16:01) [2]

Я не просил кидать в меня ссылками (на wasm бывал не раз и гуглом пользоваться умею).
Я просил оценить данный конкретный алгоритм.


 
VMcL ©   (2004-05-23 16:06) [3]

Насколько я понял, ты шифруешь процедуру генерации/проверки серийного номера. Тогда скажи, что помешает хакеру "подождать" с помощью брейкпойнта, пока эта процедура расшифруется, и сделать своё грязное дело?


 
Kerk ©   (2004-05-23 16:09) [4]


> VMcL ©   (23.05.04 16:06) [3]

Ткни пальзем в место, куда ставить брейкпоинт.


 
VMcL ©   (2004-05-23 16:10) [5]

>>VMcL ©  (23.05.04 16:06) [3]

P.S. Расшифровка наверняка будет крутиться в цикле. Хакер, увидев, что код прокручивается в цикле, найдет первый оператор, выполняемый после завершения цикла, и поставит там BPX. Так что тут многое зависит от самой процедуры расшифровки.


 
Kerk ©   (2004-05-23 16:12) [6]

Я думал об этом и попытался организовать расшифровку так, чтоб х.з. куда брейкпоинт ставить. Да посмотри ты на код наконец!! :)


 
VMcL ©   (2004-05-23 16:13) [7]

>>Ткни пальзем в место, куда ставить брейкпоинт.

jz eax

BPX с условием, что ZF = 1


 
Kerk ©   (2004-05-23 16:17) [8]

мдя... вот оно и узкое место...


 
Kerk ©   (2004-05-23 16:23) [9]

ПРИДУМАЛ!!!!
jz eax заменяем на jmp eax
и устанавливаем SEH, чтоб при ошибке переходило на следующую попытку расшифровки.


 
VMcL ©   (2004-05-23 16:30) [10]

>>Kerk ©  (23.05.04 16:23) [9]

1. А если случайно "прыгнешь" на адрес с правами PAGE_EXECUTE? Тогда exception"а не будет ведь...

2. AFAIK, для SoftIce и это не проблема.


 
VMcL ©   (2004-05-23 16:32) [11]

3. А восстанавливать SEH frame как будешь? Попытка ведь не одна будет.


 
Kerk ©   (2004-05-23 16:39) [12]


> 1. А если случайно "прыгнешь" на адрес с правами PAGE_EXECUTE?
> Тогда exception"а не будет ведь...

Ну, тут можно по-аккуратнее действовать...
Например, буфер сделать 64k и при переходе использовать только младшее слово смещения внутри буфера. Тогда управление точно попадет внутрь буфера, а при выполнении криво расшифрованного кода exception будет.

> 2. AFAIK, для SoftIce и это не проблема.

???


 
Kerk ©   (2004-05-23 16:43) [13]


> 3. А восстанавливать SEH frame как будешь? Попытка ведь
> не одна будет.

Насколько я представляю себе SEH, это вполне выполнимо.


 
Undert_3days_left_ne_tak_li?   (2004-05-23 23:55) [14]

Удалено модератором


 
SPeller ©   (2004-05-24 06:37) [15]


> типа незапакованный экзешник - вылетать

Распаковали, крякнули, обратно запаковали. Какие проблемы? :)


 
SammIk ©   (2004-05-24 07:57) [16]

Все что создано человеком, может быть сломано его собратом.
Вольное прочтение слов Шерлока Холмса.


 
Undert_   (2004-05-24 10:30) [17]

Удалено модератором
Примечание: Режим RO восстановлен с нуля, не надо пытаться нарушать


 
Kerk ©   (2004-05-24 14:17) [18]

Значит по существу алгоритма ни у кого возражений нет?


 
BiN ©   (2004-05-24 14:31) [19]

>>Kerk ©

Хм, а что мешает крякеру, зная твой crc-шник, сделать расшифровку?


 
Kerk ©   (2004-05-24 14:34) [20]


> BiN ©   (24.05.04 14:31) [19]

В новой версии CRC не хранится... Все завязано на SEH. Прочитай ветку целиком.


 
dmk ©   (2004-05-24 14:37) [21]

Все это только увеличивает время взлома.


 
BiN ©   (2004-05-24 14:40) [22]

>>dmk ©   (24.05.04 14:37) [21]

В этом и состоит идея защиты от крякеров - максимально увеличить время и затраты на взлом


 
Kerk ©   (2004-05-24 14:41) [23]


> Все это только увеличивает время взлома.

Ну так я этого и хочу. Я ж не WinXP защищаю.
Если на взлом понадобится куча времени, может и ломать не станут... :)


 
BiN ©   (2004-05-24 14:47) [24]

>>Kerk ©   (24.05.04 14:34) [20]

Знаешь, все методы обнаружения SoftIce-а AFIK основаны на нахождении созданных им файлов (имен. каналов, MMF - не важно).
В любой момент софтайс может сказать: "Кина не будет", - и задействует какие-нибудь свои стелс-механизмы. Что тогда делать будешь? SEH-то уже не спасет


 
Mystic ©   (2004-05-24 14:53) [25]

Уйди ты от этого x86-го ассембера. Придумай свой виртуальный процессор (хоть MIX возьми за основу), напиши на нем алгоритм шифровки/расшифровки и вызови в нужном месте. Хакер будет шагать в отладчике по интерпретатору, что ему даст мало ;)


 
Kerk ©   (2004-05-24 14:58) [26]

Вот напечатал пост, отправил и сервак сглючил...
Достало уже, еще чуть-чуть и я перестану сюда ходить.
Теперб по делу:

> SEH-то уже не спасет

Суппостат по-прежнему не знает, куда ставить брейкпоинт, т.е. у нас есть "запас по времени". Надо только придумать как его использовать.

> Mystic ©   (24.05.04 14:53) [25]

Интересная идея... надо обмозговать... :)


 
Mystic ©   (2004-05-24 15:18) [27]

> Интересная идея... надо обмозговать... :)

Эту идею подсказал M$ --- одно время походил отладчиков по программе на VB и понял, что без декомпилятора это убитое время


 
wicked ©   (2004-05-24 16:10) [28]

добавлю к [25]

а еще можно заменить многие операции (арифметические, логические, побитовые) на эквивалентные, но гораздо менее очевидные аналоги....


 
NeyroSpace ©   (2004-05-24 16:11) [29]

>Суппостат по-прежнему не знает, куда ставить брейкпоинт, т.е. у
>нас есть "запас по времени". Надо только придумать как его
>использовать.
Т.к. софтайс останавливает выполнение проги, нужно обязательно сверятся с тиками.


 
Vit@ly ©   (2004-05-24 16:33) [30]

>Kerk ©   (23.05.04 15:48)  
Вот от нефиг делать придумываю защиту от всяких там крякеров.

Прочитал внимательно. Но тем не менее (не подвожу черту), сколько разработанных проектов Вы продали и за сколько "возможно украденных" опасаетсь?
С уаважением


 
Карелин Артем ©   (2004-05-24 16:38) [31]

Vit@ly ©   (24.05.04 16:33) [30]
Разрабатывать защиту надо задолго до начала продаж, иначе это не будет защитой. ИМХО.


 
Vit@ly ©   (2004-05-24 16:49) [32]

>Карелин Артем ©   (24.05.04 16:38) [31]
Почти убедили
Но не будет ли это Сизифовым трудом?
Может быть стоит продать (или просто выложить) интересный (полезный) продукт (с кучей недоделок или нереализованных возможностей), чтобы заинтересовать потребителя?. Тогда он сам будет Вас искать.


 
VMcL ©   (2004-05-24 16:51) [33]

>>Vit@ly ©  (24.05.04 16:33) [30]

>Прочитал внимательно.

Похоже, что все-таки невнимательно. Автор написал "от нефиг делать". Ну хочется ему написать защиту из чисто спортивного интереса :)


 
Kerk ©   (2004-05-25 07:54) [34]


> VMcL ©   (24.05.04 16:51) [33]

в точку! :)

> NeyroSpace ©   (24.05.04 16:11) [29]
> >Суппостат по-прежнему не знает, куда ставить брейкпоинт,
> т.е. у
> >нас есть "запас по времени". Надо только придумать как
> его
> >использовать.
> Т.к. софтайс останавливает выполнение проги, нужно обязательно
> сверятся с тиками.

Я не это имел ввиду под запасом времени.
Берусь утвержать, что начиная с @@start_proc и до первого вызова какой-нибудь АПИ, брейкпоинтов нет с вероятностью 99,99%

Если брейкпоинт поставлен, то и проверку тиков прибить несложно.



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

Форум: "Потрепаться";
Текущий архив: 2004.06.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.53 MB
Время: 0.046 c
14-1085377332
Иксик
2004-05-24 09:42
2004.06.13
Ветка про Израиль.


8-1080472553
Pa5ha
2004-03-28 15:15
2004.06.13
VertexBuffer в играх.


1-1085766831
Senti
2004-05-28 21:53
2004.06.13
Убрать приложение из Таскбара


1-1086178769
Ivolg
2004-06-02 16:19
2004.06.13
Пиктограмма


1-1085665362
Delph
2004-05-27 17:42
2004.06.13
TOpenDialog





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский