Текущий архив: 2009.10.25;
Скачать: CL | DM;
ВнизШутка Найти похожие ветки
← →
Rouse_ © (2009-08-20 23:52) [0]Небольшая шуточная задача.
Необходимо написать приложение, которое гарантированно проверяет свою целостность, посредством рассчета контрольной суммы.
В чем смысл шутки - мне интересно посмотреть подходы к решению данной задачи различными категориями программистов.
← →
antonn © (2009-08-20 23:54) [1]целостность файла? прочитать в стрим, прогнать crc :)
← →
Rouse_ © (2009-08-20 23:56) [2]
> прочитать в стрим, прогнать crc :)
Прочитать можно невалидный файл, т.е. при открытии файла может быть подстановка неверного пути с непатченным файлом.
← →
Суслик_ (2009-08-20 23:57) [3]слушай, не парь мозг )
ты еще скажи, что ты умеешь это делать гарантировано.
← →
Rouse_ © (2009-08-21 00:04) [4]
> Суслик_ (20.08.09 23:57) [3]
>
> слушай, не парь мозг )
> ты еще скажи, что ты умеешь это делать гарантировано.
Умею, загрузчик и ядро то у нас одинаковые, принцип я тебе вроде как обьяснял (или Женьке - не помню). Мне просто не нравится мой подход и я хочу посредством этой ветки сделать некий аналог мозгового штурма :)
← →
Anatoly Podgoretsky © (2009-08-21 00:09) [5]> Rouse_ (20.08.2009 23:52:00) [0]
Контрольную сумму? Без доверенного центра, гарантировано, невозможно.
← →
Суслик_ (2009-08-21 00:10) [6]
> Rouse_ © (21.08.09 00:04) [4]
ну я тебе тут не помошник - я mov с add путаю.
не мое это.
я бы все на самописном лиспе написал.
еще лучше на распараллеленом (функциональные языки неплохо параллеляцо).
пусть ломают и снимают контрольную сумму.
а интерпретатор лиспа на самописной виртуалке бы написал.
а виртуалку на ... ну например еще одной виртуалке.
а вот ее бы покрыл каким-то известным криптором.
пусть ломают.
ну это, если совсем припрет )))
← →
Суслик_ (2009-08-21 00:10) [7]
> Anatoly Podgoretsky © (21.08.09 00:09) [5]
>
> > Rouse_ (20.08.2009 23:52:00) [0]
>
> Контрольную сумму? Без доверенного центра, гарантировано,
> невозможно.
вот и я про то же (хоть и путаю mov с add"ом).
)))
← →
Kostafey © (2009-08-21 00:52) [8]> Необходимо написать приложение, которое гарантированно проверяет
> свою целостность, посредством рассчета контрольной суммы.
Гарантированно апреоре невозможно.
Что вероятность была ровно 1.
Можно лишь довольно близко приближающееся к 1
значение.
А так да, внедрить в приложение код одного из генераторов
хеш-сумм типа md5 (или ей подобной) сгенерить
хеш и сравнивать с ним файл/файлы приложения.
Интереснее ситуация если собственно хеш-сумма должна быть зашита,
например в единственный .exe-файл. Но как ее зашить если ее значение
можеть быть получено только после компиляции и последующей
генерации хеш-суммы?
Да, задачка :)))
← →
Kostafey © (2009-08-21 00:58) [9]По поводу виртуальных машин, самописных компиляторов и прочего...
Ну есть же уже куча готовых средств. Простеййшее - архивация в upx
ну и далее - более хитрые, специализированные средства шифрования.
Неужели задача стоит разработки собственных средств?
← →
Кто б сомневался © (2009-08-21 01:01) [10]Если вам нужно только решение (ведь задача шуточная), без практики то, без проблем. сделать это можно гарантированно на 100%.
Просто побайтово сравнить с оригиналом.
← →
Суслик_ (2009-08-21 01:01) [11]
> Kostafey © (21.08.09 00:58) [9]
> Неужели задача стоит разработки собственных средств?
Ты не представляешь насколько тут все серьезно )
Речь о том, что используются самые продвинутые средства обфускации бинарного кода. Но этого мало - нужно еще запутать и усложнить.
← →
Германн © (2009-08-21 01:04) [12]
> Rouse_ © (20.08.09 23:52)
>
> Небольшая шуточная задача.
> Необходимо написать приложение, которое
С помощью внешнего железа можно?
:)
← →
Kostafey © (2009-08-21 01:11) [13]> Если вам нужно только решение (ведь задача шуточная), без
> практики то, без проблем. сделать это можно гарантированно
> на 100%.
> Просто побайтово сравнить с оригиналом.
Нет, ибо оригинал как правило расположен удаленно,
а существует ненулевая (хотя, возможно, весьма маляая)
вероятность ошибки передачи по сети.
> [11] Суслик_ (21.08.09 01:01)
Прошу прощения прощения за глупый вопрос.
Что такое обфускация?
← →
Кто б сомневался © (2009-08-21 01:14) [14]
> Нет, ибо оригинал как правило расположен удаленно,
> а существует ненулевая (хотя, возможно, весьма маляая)
> вероятность ошибки передачи по сети.
В чем проблема, пакуйте в архив rar или 7z, с длинным паролем и делов то..
← →
Кто б сомневался © (2009-08-21 01:15) [15]
> Нет, ибо оригинал как правило расположен удаленно,
> а существует ненулевая (хотя, возможно, весьма маляая)
> вероятность ошибки передачи по сети.
Кстати, это другая задача уже. На ваш вопрос дан ответ.
← →
Суслик_ (2009-08-21 01:16) [16]
> Kostafey © (21.08.09 01:11) [13]
>
> > [11] Суслик_ (21.08.09 01:01)
>
> Прошу прощения прощения за глупый вопрос.
> Что такое обфускация?
Послать на гугл иногда считается обидным, но я все же рискну ))
Например так http://www.google.ru/#hl=ru&source=hp&q=%D0%BE%D0%B1%D1%84%D1%83%D1%81%D0%BA%D0%B0%D1%86%D0%B8%D1%8F+wiki&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=&aq=f&fp=7c4a300accd1d130
Обычно в вики (либо нашей, либо ихней) есть классные стати.
В данном случае имеется в виду, что есть тулзы, которые потят готовый бинарник до неузнаваемости. Причем это продвинутые тулзы. Это я к тому, что подход серьезный уже. Поэтому Розыч, видимо, ждет чего-то реально неординарного )
← →
Kostafey © (2009-08-21 01:19) [17]> Кстати, это другая задача уже. На ваш вопрос дан ответ.
Почему другая? Если локально существует оригинал приложения -
задача теряет смысл. Она имеет значение только если он расположен
удаленно.
← →
Kostafey © (2009-08-21 01:25) [18]
> [16] Суслик_ (21.08.09 01:16)
> Послать на гугл иногда считается обидным, но я все же рискну
> ))
Не, после часу ночи уже не только не обидно, но и полезно :)))
> есть тулзы, которые потят готовый бинарник до неузнаваемости
Ну вот и я про что говорю, что их есть уже вагон.
Выбрать лучшую и/или их комбинацию для своей задчи
и используемого языка/платформы и всего делов.
Или вы, это, ну, мало ли, в ГРУ работаете?
P.S. ежели нельзя - не отвечайте.
← →
Германн © (2009-08-21 02:01) [19]
> Поэтому Розыч, видимо, ждет чего-то реально неординарного
> )
Ага. Подначка, имхо. :)
И попытался прикрыться словом "шутка".
Хм. А на исходниках он вроде такой вопрос не задал. И на sql.ru тоже. Или я не заметил? :)
← →
antonn © (2009-08-21 02:04) [20]там тайминги на ответы больше :)
← →
Германн © (2009-08-21 02:25) [21]
> antonn © (21.08.09 02:04) [20]
>
> там тайминги на ответы больше :)
>
Это ты мне?
Мне, который живёт(виртуально) в другом часовом поясе. И, посему, слишком часто (наверно чрезмерно часто) задает вопросы, когда все уже спят.
Мне эти тайминги - пофигу. (Да и Розычу, думаю тоже :).
А подначка - она и есть подначка. :)
← →
AlexDan © (2009-08-21 03:28) [22]> Rouse_ © (20.08.09 23:52)
мне почему-то вспомнился Станислав Лэм "солярис", там главный герой так проверял свою психику,
> посредством рассчета контрольной суммы.
).
← →
TUser © (2009-08-21 10:19) [23]Слово "гарантированно" подразумевает описание условий, для которых требуется гарантия. Скажем, при прямом попадании метеорита - вряд ли можно говорить о гарантии. Есть и более приземленный вариант - вирус испортил первую команду в исполняемом файле. Программа запустилась. И не проверилась.
:)
← →
Rouse_ © (2009-08-21 10:35) [24]Ну скажем с гарантированно я наверное вчера погорячился, ибо на каждый гарантированный метод есть гарантированный антиметод :) А от ветки я конечно не жду чего-то неординарного, но надеюсь что я мог что-то пропустить и ктонибудь толкнет интересную мысль.
А так конечно можно и пофлеймить :)
← →
Суслик_ (2009-08-21 10:40) [25]>>А так конечно можно и пофлеймить :)
Пасиб, начальник! ))
Блин, я не пойму, нафига тебе это - пусть правят как хотят. Мое и не имхо, что нужно затруднить по самые помидоры динамический анализ.
← →
Rouse_ © (2009-08-21 10:43) [26]
> Блин, я не пойму, нафига тебе это - пусть правят как хотят
Тут уже чисто спортивный интерес, потому что задачка ни разу не тривиальная :)
← →
TUser © (2009-08-21 10:51) [27]
> А так конечно можно и пофлеймить :)
Ну тогда пиши "нелокальный архив". От архивирования (aspack etc) по задумке отличается тем, что есть каждый байт разархивированного текста зависит не от одного местечка в архиве, а от многих. И наоборот. Скажем, программаProg: array of byte;
кодируется в "архив"Hidden: array of integer;
через систему решаемых линейных уравнений типаHidden[i] := sum (j:=0..length (Prog)-1;Prog[j]*C[i,j])
, где С - матрица. Фокус в том, что при порче даже небольшой части скрытого текста мы получаем совершенно неработоспособную программу.
Примечания:
1. За скорость не пинать. За размер тоже. Если скрывать только небольшую секретную часть алгоритма, то это даже не очень важно.
2. В лицензионное соглашение вписать пункт об ответственности пользователя за любые последствия случайных или преднамеренных изменений бинарника.
:)
← →
oxffff © (2009-08-21 11:33) [28]Вопрос интересный. И что то гарантированно решения на ум не приходит.
Здесь естественно стоит смотреть в сторону связности(зацепленности одних участков кода от других). Например.
Построить таблицу.
Где элемент - указатель на функцию обработки.
Каждая функция вычисляет некую величину, которая в дальнейшем используется индекс для вызов следующей функции.
Задать несколько элементов как бажные приводящие к выходу с ошибкой.
Сделать эту таблицу достаточно большой. Какие то функции сделать расшифровыващие части кода (возможно каскадно).
Сделать единственную функцию выхода. Передать управление на этот код.
← →
Rouse_ © (2009-08-21 11:35) [29]
> TUser © (21.08.09 10:51) [27]
Идея интересная - но такое уже было :) Обходится зацикливанием на OEP и дампированием образа на диск в случае полной распаковки, либо (в случае посекцонной распаковки) дампированием каждого участка и ручной сборки распакованного образа :)
← →
Rouse_ © (2009-08-21 11:40) [30]
> oxffff © (21.08.09 11:33) [28]
Вот это уже интереснее, есть над чем подумать. Надо только понять как сделать невозможным отрыв данного навесняка от защищаемого кода...
← →
oxffff © (2009-08-21 11:55) [31]
> Rouse_ © (21.08.09 11:40) [30]
Проследить единственно правильный возможно. Однако я в задумался над еще одним способом. Например пусть есть код А, который вызывает код Б.
Соответственно если есть цепочка вызовов А->B->-C->D возможно каскадно обернуть D описанным в [28] cпособом.
Например если есть вызов А->E->D.
Но код D в этом случае дублируется поскльку зависит от пути А-E-D, а не А-B-C-D.
Поскольку программа это в общем дерево. То следует программировать так чтобы оно было как можно глубже. Я в этом направлении думаю.
Можно отследить все пути, но это очень очень сложно в таком случае. IMHO.
Идея пока зрееет.
← →
oxffff © (2009-08-21 11:58) [32]
> oxffff © (21.08.09 11:55) [31]
Как бысть в зывами if case. Cоответственно нужно отслеживать достижимость пути в коде. Вообщем для [31] нужна поддержка со стороны компилятора.
← →
Rouse_ © (2009-08-21 12:02) [33]Ну поддержку со стороны компилятора я думаю можно будет обеспечить, правда не на всей протяженности кода, а на ограниченны участках, благо фасмовский компилер идет в открытом виде. Идея интересная, спасибо, буду думать.
← →
GEN++ © (2009-08-21 12:24) [34]
> Необходимо написать приложение, которое гарантированно проверяет
> свою целостность, посредством рассчета контрольной суммы.
>
На 100% не реально, поскольку:
1 - не гарантирована работоспособность самой программы проверки.
2 - не гарантирова сохранение самого результата подсчета CRC
Вообще подобный способ используют в микроконтроллерах при старте
по включению питания. Иногда это помогает.
← →
Медвежонок Пятачок © (2009-08-21 12:38) [35]вот еще одна подпорочная методика
подписываем программу своим приватным ключем и получаем детачед ЭЦП вместе с со своим сертификатом.
при старте проверяем екзешник и значение эцп.
чтобы злоумышленник не имел возможности подписать программу своим ключом, после проверки валидности сравниваем атрибуты сертификата с данными в программе.
код проверки и сами данные шифруем например на отпечатке своего сертификата.
пс: обойти и это конечно можно
← →
Rouse_ © (2009-08-21 12:41) [36]
> Медвежонок Пятачок © (21.08.09 12:38) [35]
В корень смотришь, как раз сейчас вожусь с сертификатами :)
← →
Пит (2009-08-21 13:19) [37]Ха, ну Саша, ну гад )))
Шуточная блин задачка. Совсем недавно ставил за это литр коньяку хорошего )))
← →
Anatoly Podgoretsky © (2009-08-21 13:22) [38]> Rouse_ (21.08.2009 12:41:36) [36]
А говорил про CRC
← →
Rouse_ © (2009-08-21 13:40) [39]
> Совсем недавно ставил за это литр коньяку хорошего )))
Ну на коньяк никто не повелся, а задачу хочется же решить :)))
← →
pasha_golub © (2009-08-21 13:48) [40]Я тоже хочу таких грибоф. И тогда я гарантировано смогу сказать фсьо! :)
Страницы: 1 2 вся ветка
Текущий архив: 2009.10.25;
Скачать: CL | DM;
Память: 0.55 MB
Время: 0.048 c