Текущий архив: 2004.06.13;
Скачать: CL | DM;
Вниз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;
Скачать: CL | DM;
Память: 0.53 MB
Время: 0.037 c