ты только догадываться можешь что что-то сломал, что автор те не отформатит винт на всякий случай.
опен-сорс тоже заткни себе. я его читаю, а ты @#$ че с меня поимеешь. траф ты с меня поимеешь исходящий гы-гы.
Нужна прога шифрования EXE-шника! Присоветуйте plz!
Откровенно говоря написал я небольшую программу Wizual FoxPre
хочется НЕМНОГО защитить от ReFoxa
пусть люди помучаются :)
Нужна прога шифрования EXE-шника! Присоветуйте plz!
Откровенно говоря написал я небольшую программу Wizual FoxPre
хочется НЕМНОГО защитить от ReFoxa
пусть люди помучаются :)
Большая просьба ответить на mail edward@newmail.ru
Спасибо
Их валом...04.10.01 09:44 Автор: ZaDNiCa <indeed ZaDNiCa> Статус: Elderman
Итак, у человека есть .exe файл, необходимо его зашифровать.
Вспоминаем как работают вирусы, дописываем дешифратор в конец файла, так, что бы на него передовалось управление при запуске. Сам дешифратор знает некий хеш (например MD5). При запуске проги запрашивается пароль. Делается хеш и сравнивается с извесным.
Если не совпадает, то выход, если совпадает... Создаются по введеному пользователем паролю другой хеш (в нашем примере отличный от MD5), который используется как ключ для декрипта самой программы.
По моему, такую защиту можно сломать только перебором. Ведь даже если в дебагере ввести уже нужный хеш (на авторизацию), то ключ на декрипт будет все равно не известен...
Есть идея, оцените02.10.01 13:27 Автор: paganoid Статус: Member Отредактировано 02.10.01 13:56 Количество правок: 3
вот мне больше нравится другое применение этого алгоритма.
допустим, есть скрипт для перевода транслита в русские буквы.
Это не простая замена s -> с , f->ф, sh->ш и т.п., как это может показаться.
Пример: слово "схематичный" -> "shematisсhnij" -> "шематичний". Т.е. существуют некоторые наборы символов, коие надо обрабатывать специфически (а их очень много, поверьте...)
Допустим, что скрипт должен поставляться с открытыми исходниками, но не должен открывать нюансов своей работы.
Как "спрятать" все такие "патентованные" замены " shem" -> " схем" и им подобные?
Наверное, именно так, как ты говорил.
зашиваем в прогу
val1 = hash(" shem")
также зашиваем
val2 = hash2(" shem") XOR " схем"
ищем в обрабатываемом тексте последовательность символов, хеш от которой совпадает с хешем от " shem" . Если нашли, берем от них hash2 и ксорим с val2 . Заменяем.
Чтобы "вскрыть" такую защиту, надо либо
1) отбрутфорсить для начала первую hash ф-ю.
или
2) в принципе, в скрипте можно узнать исходные строки, только если хеш строки встречается в тексте. Т.е. чтобы узнать все исходные строки, надо прогнать функцию на очень многих вариантах текста. Легче самому скрипт написать, наверное..
Другой вопрос, что в данной задаче перебрать все последовательности относительно легко :((
Может кто-нибудь подскажет решение?
зы. может хоть ктойнить понял, что я тут понаписал :)
другая идея03.10.01 02:56 Автор: Бяша <Biasha> Статус: Member
> зы. может хоть ктойнить понял, что я тут понаписал :) Нечто такое, только более продвинутое я читал года полтора назад на dore.on.ru
Основная идея: код зашифрован и разбит на много кусков, среди которых много к делу не относящихся. Когда происходит некое событие, то прога этим событием пытается расшифровать все куски, выходит - запускает.
да фигня это всё..03.10.01 12:49 Автор: zelych Статус: Member
> Основная идея: код зашифрован и разбит на много кусков, > среди которых много к делу не относящихся. Когда происходит > некое событие, то прога этим событием пытается расшифровать > все куски, выходит - запускает.
по-моему, всё это всего-лишь запутывает код..
и никакой защиты проги от взлома, основанной на стойкости используемых в ней криптоалгоритмов нету, потому как все ключи в самой же проге и написаны..
да фигня это всё..04.10.01 03:11 Автор: Бяша <Biasha> Статус: Member
> > > Основная идея: код зашифрован и разбит на много > кусков, > > среди которых много к делу не относящихся. Когда > происходит > > некое событие, то прога этим событием пытается > расшифровать > > все куски, выходит - запускает. > > по-моему, всё это всего-лишь запутывает код.. Представь себе, что каждый кусочек - сервер. Выходит проэктирование в стиле клиент-сервер запутывает код :)
> и никакой защиты проги от взлома, основанной на стойкости > используемых в ней криптоалгоритмов нету, потому как все > ключи в самой же проге и написаны.. Во-первых не обязательно они все должны быть там прописаны - может быть внешнее событие.
А во-вторых, ну прописаны - так все ж перебрать нужно, а среди них много левых.
да фигня это всё..04.10.01 13:48 Автор: zelych Статус: Member
> > по-моему, всё это всего-лишь запутывает код.. > Представь себе, что каждый кусочек - сервер. Выходит > проэктирование в стиле клиент-сервер запутывает код :)
к клиент-серверной архитектуре я отношусь нормально, однако имхо это здесь немного не к месту..
> > и никакой защиты проги от взлома, основанной на > стойкости > > используемых в ней криптоалгоритмов нету, потому как > все > > ключи в самой же проге и написаны.. > Во-первых не обязательно они все должны быть там прописаны > - может быть внешнее событие.
ну и что?? ты отлавливаешь ключ в момент его использования..
> А во-вторых, ну прописаны - так все ж перебрать нужно, а > среди них много левых.
ну сама-то прога как-то отличает левые от правых, а мы чем хуже..
да фигня это всё..07.10.01 03:24 Автор: Бяша <Biasha> Статус: Member
> > > по-моему, всё это всего-лишь запутывает код.. > > Представь себе, что каждый кусочек - сервер. Выходит > > проэктирование в стиле клиент-сервер запутывает код :) > к клиент-серверной архитектуре я отношусь нормально, однако > имхо это здесь немного не к месту.. Чего ж это? - все сервера зашифрованы, вызываются при наступлении неизвестного крекеру, но известного программе события.
> ну и что?? ты отлавливаешь ключ в момент его > использования.. Да, это так. Но это придётся делать для каждого зашифрованного куска.
Что для очень большой программы будет очень сложно.
> ну сама-то прога как-то отличает левые от правых, а мы чем > хуже.. Да, можем, хоть и придётся перебрать все возможные ключи, по всем возможным блокам.
Но: мы при этом теряем связь между разными блоками - её отдельно отслеживать нужно.
Короче всё конечно можно сломать, но это просто очередной способ усложнить жизнь крекеру.
И даже не крекеру, а скорее антивирусописателю. И даже не ему, а тому, кто захочет вирус поизучать.
что-то я тебя маленько недопонимаю..08.10.01 12:55 Автор: zelych Статус: Member
> Чего ж это? - все сервера зашифрованы, вызываются при > наступлении неизвестного крекеру, но известного программе > события. как это "сервера зашифрованы"?? а кто ж их потом расшифровывать будет??
лично я думал что всё немного наоборот:
прога разделена на кусочки, некоторые из которых зашифрованы (возможно каждый со своим ключом)..
существует некий менеджер шифрования (он же "сервер")..
при обращении к зашифрованному блоку (или просто по какому-то событию) управление передаётся этому самому "серверу", а он всё расшифровывает..
> > ну и что?? ты отлавливаешь ключ в момент его > > использования.. > Да, это так. Но это придётся делать для каждого > зашифрованного куска. это если каждый кусок шифруется своим "сервером"..
а так достаточно поставить bp в самом сервере и ловить пароли..
> > ну сама-то прога как-то отличает левые от правых, а мы > чем > > хуже.. > Да, можем, хоть и придётся перебрать все возможные ключи, > по всем возможным блокам. что-то опять непонятка какая-то, зачем ВСЕ - мы же уже отловили один конкретный ключ..
> Но: мы при этом теряем связь между разными блоками - её > отдельно отслеживать нужно. согласен, связь теряется, придётся всё по кусочкам собирать (однако если надо просто крякнуть прогу, что бы всякие cd-key не вводить, например, то достаточно в том самом "сервере" статически прописать ключи)..
> Короче всё конечно можно сломать, но это просто очередной > способ усложнить жизнь крекеру. естественно, и прменять шифрование при этом вовсе не обязательно..
да фигня это всё..09.10.01 01:50 Автор: Biasha <Бяша> Статус: Member
> > Чего ж это? - все сервера зашифрованы, вызываются при > > наступлении неизвестного крекеру, но известного программе > > события. > как это "сервера зашифрованы"?? а кто ж их потом расшифровывать > будет?? > лично я думал что всё немного наоборот: > прога разделена на кусочки, Ну не кусочки, скорее всё же серверы, или об'єкты, а то складывается
ощущение, что как граница страницы проходила, так и разрезали, а ведь
они выполняют некоторую, предопределённую автором, цельную задачу.
> некоторые из которых зашифрованы (возможно каждый со своим ключом).. так и есть - каждый своим ключом.
> существует некий менеджер шифрования (он же "сервер").. Лучше "менеджер", чтоб не путать, ведь серверов - их может быть много.
> при обращении к зашифрованному блоку (или просто по какому-то > событию) по событию, которое сгенерировал другой блок (сервер)
> управление передаётся этому самому "серверу", а он всё > расшифровывает..
Правильно ты всё думал.
Причём, ключ берётся из события - это основное.
> > > ну и что?? ты отлавливаешь ключ в момент его > > > использования.. Да, отлавливаю. Но это нужно сделать для всех блоков программы.
А способа узнать их число нет.
> > Да, это так. Но это придётся делать для каждого > > зашифрованного куска. > это если каждый кусок шифруется своим "сервером".. > а так достаточно поставить bp в самом сервере и ловить пароли.. Да ты прав, достаточно поставить bp. Вот только когда остановиться?
> > > ну сама-то прога как-то отличает левые от правых, а мы > > > чем > > > хуже.. > > Да, можем, хоть и придётся перебрать все возможные ключи, > > по всем возможным блокам. > что-то опять непонятка какая-то, зачем ВСЕ - мы же уже > отловили один конкретный ключ.. Тут я тебя не совсем понял: "а мы чем хуже" - мы это кто? Если мы
пассивный злоумышленник, то придётся перебирать все события по
всем блокам. А если мы отладчиком отлавливаем - то нужно его
(событие) проверить по всем блокам (или посмотреть что программа
по этому поводу решила).
А перебирать, как я тт для усложнения анализа. А как грамотно к нему
cd-key подвязать - ещё подумать нужно. А с учётом того, что метод для
усложнения анализа, весь смысл прописывания статических ключей
теряется.
> > Короче всё конечно можно сломать, но это просто очередной > > способ усложнить жизнь крекеру. > естественно, и прменять шифрование при этом вовсе не обязательно.. Ну нет: за счёт шифрования достигается тот эфект, что во-первых мы не можем
посмотреть код иначе как отладчиком (причём посмотреть вперёд мы не можем),
во-вторых (что самое важное) мы не знаем на что ещё способна программа, пока
не убедимся, что других событий не бывает (а если бывают "случайные проверки",
вызванные до некоторой степени случайными событиями, то вообще
никогда не узнаем).
Итак о чём это я:
Описанный метод придуман для усложнения анализа работы программы.
Его использование позволяет делать "случайные проверки", которые
невозможно обнаружить до их первого возникновения.
что-то я нефига не понял, может растолкуешь поподробее..09.10.01 10:45 Автор: zelych Статус: Member
если прогу можно запустить в отладчике, то все проблемы почти сразу решаются..
[здесь сначала написал как всё это дело в отладчике сломать и получить нечто вроде исходников (если каждому обработчику присвоить осмысленное имя), но потом прочитал дальше и передумал..]
вот цитата из этой же статьи:
;Анализ невозможно математически предотвратить. Все, что можно так это
;только затруднить сам анализ путем использования различных оригинальных
;приемов программирования (само-модифицирующийся код, анти-отладочниые
;приемы и т.д.)
все эти защиты только от простого дизассемблирования..
более того, если значения ключей (ну или ещё чего-нибудь) не зависят от каких-то внешних по отношению к проге событий, то можно всё сделать и в ida..
в рассуждения по поводу нейро сетей, я что-то не въехал, осталось только впечатление об абсолютном непонимании автором принципов функционирования этих самых сетей..
>Итак о чём это я:
>Описанный метод придуман для усложнения анализа работы программы.
>Его использование позволяет делать "случайные проверки", которые
>невозможно обнаружить до их первого возникновения.
это точно.. в этом я с тобой согласен.
короче мой вывод: криптография здесь ни при чём.. есть куча других способов обеспечивающих подобный эффект..
что-то я тебя маленько недопонимаю..08.10.01 13:51 Автор: z0 <z0> Статус: Member
> лично я думал что всё немного наоборот: > прога разделена на кусочки, некоторые из которых > зашифрованы (возможно каждый со своим ключом).. > существует некий менеджер шифрования (он же "сервер").. > при обращении к зашифрованному блоку (или просто по > какому-то событию) управление передаётся этому самому > "серверу", а он всё расшифровывает..
нечто подобное было в некоторых хасповских енвелопах
код а-ля FFFF расшифровывался через exception 6 handler
проблем особых впрочем не вызывало
Вот и ты попал на "первый раз"02.10.01 15:17 Автор: PS <PS> Статус: Elderman
Есть текст Т1, прогоняем его через обычную замену, получаем Т2.
После прогоняем Т1 через твой скрипт (не сломаный), получаем Т3.
Сравниваем Т2 и Т3, выковыриваем все то что ты пытался скрыть и пишем такой же скрипт :)