Pull to refresh
-4
4.1
Send message
Посмотрите любительские поздравительные видео в Ютубе. Вы найдете, хоть одно приличное? А поздравлять то людей надо. Может быть, предложите какие-то идеи?

И потом, для программиста, картинки это мишура, главное код и работа с данными с его помощью, а это все можно пытаться делать на базе прилагаемой ВК.
К сожалению, это не моя тема интересов. Больше привлекает использование внешнего загрузчика, но об этом как-нибудь в другой раз.
> Зачем вы сделали продукт, если вы его не продаете и услуги не оказываете? В чем выхлоп?

Я же сказал – «Развитие!». Продавать и оказывать услуги на этом поприще рискованно, можно нарваться на неприятности. А оно мне надо? Кроме того, у меня нет цели, ущемлять интересы авторов продуктов. А вот в плане развития это самое то! Вообще, смысл существования всего Сущего во Вселенной это Развитие. В т.ч. это касается человека. При условии неприемлемости немотивированного ущерба окружающим людям и окружающей среде.

Эта задача просто идеальная в плане соотношения усилий и результатов. Решив ее, вы почувствуете себя на другом уровне развития, что, конечно приносит колоссальное удовлетворение. Естественно, что результаты творчества дают новые возможности. А вот разумное и адекватное их использование определяет уже нравственную сторону развития личности. В общем, как-то так :).

P.S. А так, продукт требует еще общей отладки и оптимизации. Кроме того, всегда появляются новые нюансы, с которыми раньше не сталкивался. «Гонку вооружений» ведь никто не отменял :).
> Т.е. у вас есть инструмент для декомпиляции обфусцированного кода?

Да, есть, заканчиваю уже его третью версию.

> У меня иногда возникает необходимость вскрытия такого кода. Я обращусь к вам в следующий раз.

Я такого рода услуги не предоставляю. Эта как раз та область, которой есть смысл позаниматься самостоятельно (при относительной несложности используемых алгоритмов получается весьма существенный выхлоп). Тем более что самую важную подсказку я дал. Это дает определенный уровень развития. Так что опубликованная информация направленно именно на это. Развивайтесь, и будет вам счастье :).
> создание обфускатора не возможно без создания декомпилятора

Кстати, обфускатор делать труднее, чем декомпилятор. Я думаю над этим, но больше склоняюсь к мысли использовать внешние компоненты, чтобы прятать там наиболее значимый код. Просто второй путь кажется более простым.

> эквивалентный код с неадекватными именами функций и переменных может быть совершенно не понятен. И таким образом, может иметь нулевую ценность, т.к. дорабатывать его не реально

Глупости все это. Все очень даже понятно. Да, вместо случайных имен используются псевдоимена, типа «ЛокальнаяПроцедура001», «ЛокальнаяФункция002», Var_123, Par_321, Label_5555 и т.п. Но это практически нисколько не затемняет исходный код, ведь код 1С перенасыщен русским текстом. Причем, закрывают обычно наиболее значимые модули, исходный текст которых может иметь особую ценность.

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

И я сделал, ну и что из того? На ее создание у меня ушло менее 10% общего времени, остальное время ушло на понимание концепции алгоритма, которую я вам изложил. Только вот всегда цениться именно та информация, которая получена собственным «потом и кровью». Готовый результат никогда и никем адекватно не воспринимается.
А как вам рассечение выражений условными операторами? Одно длинное выражение может быть рассечено несколько раз. И все это перемешивается с «мусорным» кодом в ветвях, которые никогда не получают управление. А оператор Попытка / Исключение / КонецПопытки? Здесь тоже можно изощрятся так, что мало не покажется. Но и это все лечится при правильном подходе :).

P.S. Нумерация строк не нужна от слова «совсем».
> Вы так говорите, как будто байт-код 1С имеет общеизвестный формат, а проблему «запутывания» мешает решать исключительно лень.

Формат не общедоступный, но восстанавливается вполне тривиально. Достаточно две-три недели плотно посидеть на экспериментах. Берете свой код ЯВУ, шифруете его, а потом смотрите, какой ему соответствует байт-код 1С. Это просто рутинная работа, требующая определенного времени и труда. Кое-что что можно найти на форумах. Первые соответствия я нашел именно там. Заметим, что все фирмы, выпускающие коммерческие обфускаторы, получали подобную спецификацию именно таким образом. Да, кое-какие номера команды остаются нерасшифрованными, просто для них еще не было реального соответствия в исходном коде «восьмерки».

> Открою маленький секрет: 80% адинесников даже не знает, что существует способ получения исходного кода запароленного модуля без всякой обфускации; а людей (не считая сотрудников 1С), которые самостоятельно разобрались в формате байт-кода, вообще единицы. Некому об этом говорить!

Многие не знают, как снять пользовательский пароль для входа в 1С. И что теперь? 20% 1С-ников это, на самом деле, очень много. На специализированных форумах по 1С тусуются тысячи людей, сотни из которых – высококлассные специалисты. Некоторые из них даже относят себя к касте, которые знают, как дешифровать необфусцированный байт-код. Таких порядка десяти человек. Вполне достаточно для общения. Хотя, естественно, подробно никто ничего говорить не хочет, хотя раньше на эту тему общались более свободно. Понятно, ибо зачем себе создавать лишние проблемы :).
> Алгоритм декомпиляции прост для не защищенного кода.

Согласен, прост. Для такого кода можно найти обработки 1С8 восстанавливающие исходный текст. Они старые, 2010-2013 годов, судя по датам файлов. Автор у них один, и есть большое подозрение, что он сейчас работает на фирму, которая создает коммерческие обфускаторы. Как говорится в подобных случаях – самые лучшие антихакеры это бывшие хакеры.

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

Форт-машину применять в любом случае придется, но ее алгоритм, кстати, не самый сложный. Это обычная стековая машина, обслуживающая обратную польскую нотацию. Все достаточно прозрачно и тривиально.

Что касается «разрушения сигнатуры кода», то возможно вы имеете в виду, что байт-код 1С8х может отличаться от оригинального? Конечно, может, возможности у него несколько шире, чем у исходного кода «восьмерки». И авторы обфускаторов этим пользуются на полную катушку. Иной раз просто поражаешься изощренности их мышления. Но, тем не менее, байт-код 1С8 это не ассемблер, принципиально иного, чем на исходном ЯВУ (языке высокого уровня) там мало, что можно сделать. Соответственно и возможности восстановить код ЯВУ на уровне функциональной эквивалентности вполне возможно.

Относительно «простоты статических алгоритмов». Концептуально алгоритмы очень простые из области: «разделение – преобразование – объединение». Или другими словами, редукция задачи, сведение двухмерного бинарного циклического связного графа к одномерным последовательностям. Все остальное это просто техническая реализация, местами сложноватая, но не принципиально, все определяется фундаментальным образованием программиста. Программисты, знающие только 1С, эту задачу могут и не решить в полной мере.

Я сказал достаточно много. Если бы у меня была эта информация заранее, то я бы сэкономил себе несколько лишних месяцев программирования.
> под капотом у него один-в-один выложенный мной проект MdInternals.Cil.

Об этом можно было бы сказать в статье. Это, по крайней мере, дает представление о возможностях вашей программы. Однако онлайн-ресурс откровенно слабый, даже не формирует внешние переменные модуля. Про операторы модуля уже не помню, может быть тоже не формирует.

> Я пробовал декомпиляторы .Net и C# над обфусцированным кодом. Не все справлялись с защитой.

А что, есть и такие, что справляются?

> Не нужно обвинять проект в том, что он не приспособлен для обхода защиты. Нужен совсем другой подход и проект.

Это не обвинение, это сожаление.

P.S. Пару слов насчет обфускации байт кода 1С8х. Последние версии коммерческих обфускаторов используют много новых приемов защиты. Однако нужно понимать, что для специалиста это все не слишком серьезно. Общая идея обфускации простая, используется функционально эквивалентный байт-код, который усложняет процесс его восстановления на уровне ЯВУ (языка высокого уровня). Это может осуществляться как за счет добавления избыточной топологии к исходному бинарному циклическому графу, так и за счет якобы шифрования строковых констант и т.п., вроде использования специфики конкретных команд байт-кода. Шифрование не слишком серьезно потому, что в том же модуле всегда присутствует (обфусцированная) функция дешифрования. А с избыточной топологией, в том числе и «мусорным» кодом, можно легко бороться известными аналитическими методами. Главное здесь то, что, согласно математической теореме: «Любые эквивалентные преобразования обратимы», а это означает принципиальную декомпиляцию обфусцированного байт-кода на уровне ЯВУ.

А вот, скажем, на уровне синтаксиса, обфускация является синтаксически неэквивалентной, поэтому в этом смысле она необратима. И, действительно, невозможно восстановить удаленные комментарии и необратимо измененные пользовательские имена переменных, процедур и функций. Однако функционально эквивалентный код уровня ЯВУ всегда можно получить без особых проблем. Алгоритмы там настолько просты, что просто удивительно, что про них никто не знает или не говорит вслух. Я тоже промолчу. А вам достаточно подсказки насчет самой обратимости и существования простого алгоритма этой обратимости.
К сожалению, новизны здесь никакой нет. Даже «Классы MdInternals.Cil» которые «восстанавливают исходный код из последовательности байт-кода OpCode 1С» своей задачи явно не решают.

Выгрузка штатными средствами конфигурации в файл и широко известные утилиты по декомпиляции (необфусцированного) байт-кода 1С плюс бывший в наличии (сейчас не проверял) онлайн-ресурс по декомпиляции байт-кода 1С полностью перекрывают все возможности данной программы.

А «алгоритмы»? Кому они нужны, если они даже не демонстрируют простейших практических возможностей, хотя бы в той же «декомпиялции».

Вот попробуйте хотя бы для себя декомпилировать любой защищенный модуль коммерческой конфигурации и тогда расскажите нам, что у вас получилось :).
> Декомпиляция нарушает лицензионное соглашение 1С.

А обфускация байт-кода 1С не нарушает «лицензионное соглашение 1С»? А ведь некоторые фирмы распространяют подобные инструменты за деньги. А суть та же, что обфускация изменяет родной байт-код 1С, что деобфускация, или в данном случае простая декомпиляция кода защищенного стандартными средствами 1С? Аналогично архиваторы изменяют бинарный код и не только они, а ведь многие программы под лицензией «изменять бинарный код – ни-ни».

А ведь достаточно очевидно, чтобы создать коммерческий продукт по обфускации байт-кода 1С, фирма должна научиться сначала его деобфусцировать / декомпилировать, ведь спецификации подобного формата нигде нет. Кроме того, авторы, которые покупают обфускатры и защищают свой код, пишут там такое! Например, тупо отслеживают действия пользователя и скрытно собирают его информацию (а это законно?) и даже открыто сообщают ему об этом, типа: «Я вижу, что ты пытаешься декомпилировать программу, лучше напиши мне – продам ее за полцены!».
по каким формальным признакам вы утверждаете, что сочинения — не литературные тексты

Сочинения это как бы публицистика, там не риал-тайма, экшена, динамики, диалогов, культа красивых слов и фраз и т.п. Вон Стефан Цвейг хорошо пишет в жанре исторический литературный очерк, но диалогов героев у него почти нет. Я имею в виду романы типа «Мария Антуанетта». Хороший литературный стиль у него есть, да, этого не отнимешь, но сама его литература какая-то неполноценная.

Человек начинает писать (если быть точным, придумывать) «хоть какую-нибудь музыку» раньше, чем любые тексты, потому что музыка вообще предшествует тексту (и вообще слову).

Ну, слышать музыку в голове это одно, а отразить ее на бумаге – другое. Мне, например, когда-то приснился мотив, которого я нигде не слышал, но я не музыкант, записать его не смог от слова совсем.
Для писателей тоже куча спец. софта для работы с текстом.

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

даже самые простые диалоги в тексте проще и быстрее писать руками чем генерировать

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

Текст в котором много шаблонных структур читать невозможно

Я догадывался, что слово «шаблон» в контексте литературы будет «камнем преткновения». На самом деле мы все говорим, пишем и даже думаем по шаблону. Только не вполне осознаем этого. Абсолютно нешаблонный текст придумать почти невозможно, всегда можно определить, что те или иные элементы взяты откуда-то. Да что там говорить, любое живое существо поедает биологическую пищу, т.е. использует субструктуры других живых организмов, пусть даже это будет растительная пища, для формирования собственного тела. Также и литература, просто автор, по большей части бессознательно переваривает поступающий ему поток информации, препарирует его на отдельные фрагменты и затем уже, скорее всего, интуитивно использует в своей работе. Но тот, кто питается «сырой» информацией обычно выглядит хуже, чем тот, кому эту информацию качественно и «вкусно» готовят. Хотя из любого правила всегда есть исключения.

Я, может быть, скажу сейчас крамольную вещь, которые не все поймут: «Свобода это Ограничения!». Абсолютная свобода (т.е. отсутствие всяких шаблонов) это бесконечная неопределенность, реализация которой приводит к абсолютному хаосу и даже деградации. Вспомним, что авторы, пишущие в условия «тоталитарных» режимов часто создают более гениальные вещи, чем те, кто раскрепощен, если не сказать развращен, в условиях «свободного» общества. Главное, только, не забывать, что мир не так прост, как кажется.
написание сочинений на тему — это и есть способ научить людей писать литературные тексты

Кому как. Я, например, всегда хорошо писал сочинения, но очень плохо литературные тексты.

в музыкальном творчестве, которым я занимался намного больше, методики те же самые

С музыкой согласиться проще. Ибо писать хоть какие-нибудь тексты человек способен с младых лет, а писать хоть какую-нибудь музыку смогут «не только лишь все».
Хорошо, а почему тогда есть программы для художников и просто любителей компьютерной живописи? Более того, даже в видео можно полностью программировать различные эффекты, например, в видеоролике sintel-2048-surround.mp4, программно «проработаны эффекты огня, снегопада, дыма, взрывов, разрушений, симулирования поведения большого числа персонажей». Интервью с артдиректором этого проекта можно посмотреть в digilinux.ru/2010/10/01/david-revoy-sintel-interview.

Думаю, вполне корректно сравнивать литературное творчество с программированием. Технологии программирования доступны всем, но программ шедевров на многие порядки меньше. Поэтому индивидуальные литературные шедевры, как и ранее, будут принадлежать только гениям одиночкам. Но речь ведь идет только о доступности технологии литературного творчества для всех. Вплоть, до того, чтобы в школах кроме урока «Русский язык и литература» факультативным был предмет: «Литературное художественное творчество». Учить детей надо написанию литературных текстов, а не сочинений на тему типа: «Бросок Анны Карениной под поезд, в свете технической промышленной революции в Царской России», в смысле, куда бы она бросилась пару лет назад, когда поездов еще толком не было? Да и вообще я против любых формализованных школьных сочинений. Должны быть именно рассказы, а не сочинения.

Но как учить? В этом вся соль. На Западе есть разные школы и методики, доступна даже непереведенная литература. Но Запад это Запад, Русский Мир должен весьма критично оценивать западные достижения, «отсеивать зерна от плевел».

Кстати я заметил, что в последнее время в Интернете стало публиковаться гораздо больше материалов посвященных технологии литературного творчества. Так что «коллективное бессознательное» работает. Не удивлюсь, если через какое-то время появятся необходимые учебники и программные средства.
Какой-нибудь профессиональный «инженер человеческих душ» стал бы вникать в причины вашего неудовольствия. Согласитесь, вы хотите, чтобы другие действовали только по вашим правилам, либо по правилам, которые вы считаете «правильными». А люди ведь разные и это надо думать аксиома. И они не очень-то хотят неделать что-то только потому, что это может кому-то не понравится.

«Все знают», что литературу надо делать по наитию, вдохновению и т.п., но принципиально отрицают всякую рациональность и технологичность этого процесса. Как там у Маяковского отношение к тем, кто: «Ведь зато он может ежесекундно извлекать квадратный корень»? На самом деле особого противоречия я не вижу. Как в анекдоте: «И вы правы, и вы правы! Но как же так? И вы тоже правы!» :).
Для человека с абстрактным мышлением это может быть существенным, а для обычных людей всегда подразумевается мера неопределенности сказанного.
Вопрос конечно интересный и ответить можно по-разному. Если следовать этой логике, то можно в школе и даже в ВУЗах сделать необязательным знание доказательств различных теорем. А, правда, зачем их знать? Корни уравнений можно вычислять по готовым формулам, формулировки теорем просто использовать, не вникая в их доказательства и т.п. Но не знаю, как другие, а я лично от такого образования чувствовал бы себя ущербным. Один наш преп вообще говорил, как я могу запомнить теорему, если я не знаю ее доказательства? Отсюда и ощущение бухгалтерии как ущербной «науки». Особенно на фоне практических результатов, полученных на Западе.

Хотя лично я не большой сторонник разных там МСФО и GAAP (поскольку они служат, прежде всего, интересам корпораций, а не социального государства), но уровень там явно повыше, хотя с теорией у них тоже проблемы. Но их теоретические проблемы другого плана. У нас проблемы первого уровня – собственно обоснования модели учета, а у них второго – обоснование модели экономической деятельности. Кстати, явно виден парадокс. Их принципы учета, управления и отчетности почти безупречны на морально-этическом уровне, но при этом сущность капитализма – отмороженная, безбашенная хищность.

Ладно, будем считать это лирикой, мол, «продвинутая» молодежь должна не об учебе и образовании думать (на благо своей страны), а сидеть в «контактах» и «одноклассниках». Возьмем текущую статью.

Речь здесь идет о бизнес моделях. Чувствуется, что слова «модель» и «моделирование» уже изрядно подзатаскали, как и слово «наука». У нас уже наука все, легче, наверное, указать какое теоретизирование наукой не является. Обычно под моделью понимается математическая модель, а если модель не математическая, то это должно указываться явно, типа, аналоговая модель, имитационная модель, натурная модель, того же самолета например для обдувки его в аэродинамической трубе и т.п. А построение любой матмодели, грубо говоря, состоит из нескольких обязательных шагов. Первое, это произвольный выбор непротиворечивых аксиом (доказать непротиворечивость бывает трудно, но к этому нужно стремиться). Второе, фиксация определяемых и неопределяемых понятий. Третье, вывод либо обоснованный выбор уравнений состояния рассматриваемой модели. Четвертое, собственно теоретический анализ данной матмодели. Пятое, экспериментальная проверка полученных теоретических результатов с практическими. Шестое, корректировка модели (на уровне аксиом и прочих допущений), при наличии расхождений. Далее этот процесс продолжается до получения требуемого результата. И еще обычно наука начинает с моделирования простейших вещей, ну там абсолютно черного тела, абсолютно твердого тела, материальной точки и т.п., постепенно усложняя ее до более-менее реального. Скажем моделирование движения той же жидкости, начали с простейших ньютоновских идеальных жидкостей, а ныне рассматривают даже гидродинамические уравнения состояния с разрывными коэффициентами (простейший случай, тела Бингама-Шведова). Вспомним смешное по форме, но правильное, по сути, выражение: «Сферический конь в вакууме» :).

И напоследок о необходимости знания бухгалтерских аксиом. Уверен, что можно существенно сократить объем бухгалтерских знаний, без потери понимания смысла бухгалтерского учета, если изложить сначала несколько аксиом, затем теоретически вывести все используемые свойства, вроде, замкнутости и равновесной двойственности, а также доказать балансовое уравнение и т.п. Просто уберутся тонны бесполезного псевдообоснования, появится логическая ясность и просветление :). Да и программистам 1С будет попроще иметь дело с бухгалтерскими конфигурациями…
Ну да, проблемы национальной бухгалтерии глубже. Кто ее и как преподает. Просмотрел вот накануне десяток-другой бухгалтерских учебников и мне стало понятно, почему бухгалтера не понимают фундаментальных основ той модели, которой пользуются. Там сплошное занудство и бюрократизм, а профессор Я.В. Соколов в предисловии к книге «Теория бухучета», Хендриксена и Ван Бреда, пишет, что обсуждения предмета и метода бухучета в «наших» учебниках «слишком напоминают средневековую схоластику». С чем очень трудно не согласиться, особенно если расширить это определение и на большую часть «теоретической» бухгалтерии.
Так она и базируется, только бухгалтерские жрецы, придумавшие балансовую модель БУ, нам про это забыли рассказать. Мол, не нужна простым бухгалтерам (и даже не очень простым, вроде главных бухгалтеров) сложная (на уровне школьной геометрии / стереометрии / тригонометрии и алгебры) математика. Те иногда даже с корнем квадратным не дружат, а мы им про математические аксиомы их «науки» говорим…

Information

Rating
1,059-th
Registered
Activity