[2 in 1] «Обфускация кода 1С» и «RegExp Тестер»




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?php // Полная загрузка сервисных книжек, создан 2026-01-05 12:44:55

global $wpdb2;
global $failure;
global $file_hist;

/////  echo '<H2><b>Старт загрузки</b></H2><br>';

$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
/////   echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}

$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
/////   echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}

/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
/////   echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
/////    echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist);   ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7];    ////получаем размер файла
$m_mtime_file=$masiv_data_file[9];   ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file

/////   echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
/////   echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
/////   echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);

if ($results)
{   foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));

////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
/////   echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
/////   echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}

////загружаем данные
$table='vin_history';         // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация     // (путь от корня web-сервера)
$delim=';';          // Разделитель полей в CSV файле
$enclosed='"';      // Кавычки для содержимого полей
$escaped='\

99 Comments

  1. coder1cv8

    Обфускатор 1С пока находиться на стадии тестирования, поэтому прошу сообщать об обнаруженных багах.

    На коде 7.7 не тестировал (так как «вживую» семерку уже давно не видел), но вероятно будет работать и для него.

    Reply ↓
  2. coder1cv8

    Пока имеется только один баг: нельзя использовать ковычки в комментарии.

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

    Reply ↓
  3. German

    Обфуксатор оч.даже + а вот Для отладки RegExp лучше использовать RegexBuddy

    Reply ↓
  4. coder1cv8

    (3) Не знал, поэтому и нарисовал по-быстрому свою обработку, гляну эту программу, спасибо… )

    Reply ↓
  5. awa

    (1) Насколько я понял, так как обработка исходного текста происходит в отрыве от контекста, то надо самому определять, какие имена процедур, функций и переменных можно заменять на белиберду, а какие — нет. Ведь нет никакой информации о том, какие переменные, процедуры и функции являются глобальными, какие переменные являются реквизитами объекта или формы и т.д.

    Но, по крайней мере, можно определить некоторые имена переменных, процедур и функций, которые нельзя менять — те, которые объявлены со словом Экспорт. Сейчас обработки слова Экспорт нет совсем. Более того, если переменная объявлена с Экспорт, она обфусцируется вне зависимости от флажка в дереве лексического анализа.

    Также нет обработки английских синонимов ключевых слов.

    И еще есть траблы с регистром — если процедура объявлена как «Процедура», то в дереве лексического анализа она показывается как процедура, если же она объявлена как «процедура» или «ПроцедурА», например, то в дереве лексического анализа она становится вдруг функцией!

    Reply ↓
  6. German

    Посмотри Ei // там с структуре модуля разбираются процедуры функции и переменные http://enterpriseintegrator.googlepages.com/StructureModule.jpg

    Reply ↓
  7. CheBurator

    На 7.7 это — типичный кирпичиватель — я таким только одну свою разработку закрыл (строк на 40), требуется явное указание в области описания всех используемых переменных, + не забывать про имена функция в реквизитах диалогов.. мое резюме — вполне нормальная защита…

    Reply ↓
  8. tormozit

    Гиблая затея, хотя и смелая =)

    Reply ↓
  9. coder1cv8

    (5) > «Насколько я понял, так как обработка исходного текста происходит в отрыве от контекста, то надо самому определять, какие имена процедур, функций и переменных можно заменять на белиберду, а какие — нет.»

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

    По-поводу того что обфусцируется в независимости от флажка — это не правда ) Просто сейчас пока есть такой недостаток: если нажать «Выполнить», а потом поменять флажки без выполнения «Анализа» заново, то уже обфусцированные переменные остануться. Доработкой этого недостатка займусь в ближайшее время.

    По-поводу траблов с регистром написания, странно, не должно быть… Проверю.

    ЗЫ: Спасибо за грамотные замечания.

    Reply ↓
  10. Asdam

    (6) Сорри, что не в тему. German, подскажи плиз, а чем это ты смотришь структуру модуля?

    Reply ↓
  11. coder1cv8

    (5) > «Сейчас обработки слова Экспорт нет совсем.»

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

    > «Также нет обработки английских синонимов ключевых слов.»

    Принято.

    Reply ↓
  12. coder1cv8

    (6) Герман, до твоих гениальных (в хорошем смысле этого слова 🙂 ) творений мне долековато что и говорить… )

    Reply ↓
  13. coder1cv8

    (7) Слышал про «закирпичиватель» на 7.7, но не разу не видел его в живую… Наверно потому, что у меня ещё не возникало необходимости таким образом скрывать свои алгоритмы, я ещё не написал свою «нетленку» ))

    Reply ↓
  14. coder1cv8

    (8) Почему?… )

    Reply ↓
  15. coder1cv8

    Исправлен баг с регистром написания. Например, «ПроЦедурА» обрабатывается корректно.

    Reply ↓
  16. azernot

    А я вот не считаю такую защиту сколь либо действенной.

    Сам таким образом ковырял закирпиченный Rocket Launcher, вполне успешно (только т-с-с-с!)…

    Будем ждать КЗК 3.0 для 8-ки…

    Reply ↓
  17. coder1cv8

    Добавлена обработка английских синонимов ключевых слов.

    Reply ↓
  18. coder1cv8

    (16) Согласен. Данная обработка написана мной чисто из интереса, без какой-либо практической цели.

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

    Reply ↓
  19. MMF

    (18) обработку не надо, дай исходный байт-код + перекомпиллированный

    Reply ↓
  20. coder1cv8

    (19) MMF, я даже не сомневаюсь, что ты разберешь ) Но скорее всего, прийдется поковыряться ручками, как с любым хорошо запутанным кодом.

    Reply ↓
  21. German

    ручками .. это не для нас…

    Reply ↓
  22. German

    (10) в смысле чем? какой обработкой? — Ei…. На чем реализовано?- На RegExp.. немного не понял вопроса.

    Reply ↓
  23. coder1cv8

    Исправлена недоработка о которой я говорил в (9). Теперь можно перевыбирать заменяемые переменные без необходимости повторного анализа исходного кода.

    Reply ↓
  24. Asdam

    (22) Дошло

    Reply ↓
  25. coder1cv8

    Добавлена обработка ключевого слова Экспорт.

    Reply ↓
  26. shachneff

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

    Reply ↓
  27. vip

    (26) Никак нетленку сваял, Алеша?

    Reply ↓
  28. coder1cv8

    (26) Можно. Ещё можно делать ложные переходы (оператором goto), разбавлять код «мусором», заменять константы формулами и т.д. Моя обработка всего лишь пример. По теории запутывающих преобразований я бы советовал читать это: http://www.citforum.ru/security/articles/analysis/ Очень позновательно! )

    Reply ↓
  29. coder1cv8

    (29) Без всякого смысла ) Просто «RegExp Тестер» не заслуживает вобщем-то особого внимания, но тем не менее очень помогла мне разобраться с регулярными выражениями и я решил её добавить в качестве бонуса )

    Reply ↓
  30. Abadonna

    (29)А почему бы не сделать две разработки???

    Просто автор, как я понимаю, не гонится за дешевой популярностью, плодя количество разработок с целью получения поболее плюсиков. За это ему — ПЛЮС

    Reply ↓
  31. coder1cv8

    (31) И это тоже ) Ещё не люблю «попрошайничество плюсов», если об этом зашел разговор…

    Reply ↓
  32. Abadonna

    (32) Блин, придется еще один поставить — заслужил :))))))))))))))

    Reply ↓
  33. coder1cv8

    (33) хе-хе ))

    Reply ↓
  34. awa

    Ключевое слово Экспорт уже распознается, но по-прежнему у переменных, объявленных с Экспорт по-умолчанию стоит галка в дереве лексического запутывания. Все-таки надо бы по-умолчанию галку снимать. И еще неплохо бы было как-то выделять в дереве процедуры и переменные с Экспорт, как предупреждение, что не стоит тут ставить галку (или вообще запретить ее ставить).

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

    Код
    Сообщить = "Тест";
    Сообщить(Сообщить);
    

    Показать полностью

    При обфускации переменной Сообщить, неправомерно обфусцируется системная функция Сообщить.

    Reply ↓
  35. coder1cv8

    (35) Принято.

    Reply ↓
  36. aim

    Спасибо за идею интеграции RegExp в 1С. Как раз хотел этим заняться.

    Reply ↓
  37. coder1cv8

    Файл обновлен.

    Исправлена ошибка о которой говорится в (35). Доработан интерфейс.

    Итак совместными усилиями с awa обработка начинает приобретать законченный вид. )

    (37) Эта идея стара как мир )

    Reply ↓
  38. awa

    (38) Не смотрел, но вот такой вопрос: не будет ли проблем с проблем с инструкциями препроцессора? Ведь инструкции препроцессора должны обязательно содержаться в отдельной строке, засовывать их в одну строку с простым кодом нельзя!

    Reply ↓
  39. coder1cv8

    (39) Точно! ) Инструкции препроцессора пока не поддерживаются…

    Reply ↓
  40. Трактор

    Прикольно. Как-то я делал такое вручную. Но это было давно. С тех у меня не было необходимости шифровать свои разработки.

    Reply ↓
  41. coder1cv8

    (41) Аналогично. ) Эта разработка скорее «для удовольствия». Было интересно сделать парсинг кода самому.

    Reply ↓
  42. German

    Ну что обфуксатор заглох .. хотя ОЧ. необходимая вешь.

    предлагаю следующее развитие событий.

    1. Вместо Уникальных идентификаторов использовать _______________________________ ну и с каким нибуть символом на конце или в начале .. а то длинны может не хватить

    2. Замена множества процедур или функций на одну, вставляя определенный параметр… в дальнейшем условие по данному параметру будет определять границы алгоритма входящего в функцию.

    3. Убрать все строки и другие значения в BASE64 … в дальнейшем можно будет написать ВК, которая будет шифровать строки нормально (одну и туже строку,значение с разным результатом, что бы исключить возможность поиска по модулю).

    4. Также можно применить запутывание процедур и функций.. как в статье описано .. но это на сладкое

    5. Ну и после этого на все это ДОБРО можно смело ставить пароль, декомпилятор улетит

    Reply ↓
  43. German

    Хотя прикольно.. Сами написали декомпилятор, теперь пишут обфуксатор :). потом будет декомпилятор обфуксатора

    Reply ↓
  44. German

    (43) + ну и циклы переделать в GoTO

    Reply ↓
  45. coder1cv8

    (43) Да, сейчас немножко не хватает времени на развлечения, занят серьезными делами )

    Далее по пунктам:

    1. Тоже думал о этом, специально оставил возможность редактировать имя НА которое заменяется. Можно дорисовать кнопочку «Заполнить» в «Дереве лексического запутывания», которая будет заполнять колонку «Идентификатор после» по любому понравившемуся алгоритму… )

    2. Не хочется возиться с изменением структуры самого кода…

    3. И об этом тоже думал, вот идея шифровать строковые данные мне очень нравиться! Обязательно займусь этим как только будет время…

    ЗЫ: Хотя я здесь уже говорил, что всё это баловство, нужно обфусцировать непосредственно байт-код! )

    Reply ↓
  46. coder1cv8

    +(46) Как всегда спасибо за грамотные замечания!

    Reply ↓
  47. fedor40

    Хорошая наверно вешь. Я уже + поставил. Вот только не работает !

    {ВнешняяОбработка.АРМзакупок(1070,6250)}: Ожидается ключевое слово ‘Тогда’ (‘Then’).

    Reply ↓
  48. coder1cv8

    (48) Читай внимательно комменты, в частности комментарий номер (2) 🙂

    Если не поможет, то прошу в личку кусочек кода который не корректно обфусцируется, будем разбираться…

    Reply ↓
  49. fedor40

    А если просто добавить множество переменных ? C названием от 10 до 100 символов ? И разными типами…

    Reply ↓
  50. coder1cv8

    (50) Можно… Можно ещё переходами и просто «левым» кодом разбавлять…

    Но пока я пытаюсь сделать шифрование строк, в свободное время…

    ЗЫ: Помогло-то (49)?… )

    Reply ↓
  51. coder1cv8

    Внимание! Наконец реализованно шифрование строковых данных, содержащихся в коде! )

    Шифрование довольно простенькое, с открытым ключем даже, но тем не менее, я думаю, значительно усложнит чтение кода… Плюс, не требуется никаких dll — всё штатными средствами Windows.

    Reply ↓
  52. ValeriVP

    ИМХО баловство все это.

    Необходимо для начала ответить на вопрос, что и зачем вы хотите таким образом защитить?

    если какую-нить хрень за 50р, то наверное оно того стоит.

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

    Reply ↓
  53. coder1cv8

    (53) Ты совершенно прав! 80% из того что я здесь выкладываю — это баловство, сделанное исключительно из интереса и для саморазвития… 🙂

    Reply ↓
  54. awa

    (52) В шифрованных строках можно смело убирать переносы строк, для дешифровки это не критично, зато модуль будет опять, как и раньше состоять из одной единственной длиннннннннющей строки! ))

    Reply ↓
  55. coder1cv8

    (55) Есть тут не большая загвоздка, не пойму чем строки переносятся?… Вот так не катит:

    Код
    ЭлементыФормы.Результат.УстановитьТекст(СтрЗаменить(Текст,Символы.ПС,""));
    

    Показать полностью

    Reply ↓
  56. coder1cv8

    +(56) Всё! Разобрался! ) Теперь как раньше, весь код в одну строку.

    Файл обновлен.

    Reply ↓
  57. awa

    (56) Ну обычно перенос бывает либо LF, либо CR+LF

    попробуй

    Код
    ЭлементыФормы.Результат.УстановитьТекст(СтрЗаменить(Текст, Символы.ВК + Символы.ПС, ""));
    ЭлементыФормы.Результат.УстановитьТекст(СтрЗаменить(Текст, Символы.ПС, ""));

    Показать полностью

    Вторая строка — контрольная))

    Reply ↓
  58. awa

    +(58) Не успел))))

    Reply ↓
  59. fedor40

    Вот думаю. Если выпускать, доработку за 8 000 рублей и потом может еще 2000 в год брать за тех поддержку, то какая защита необходима ?

    Reply ↓
  60. fedor40

    Что думаете о ключах rutoken, guardant, senselock ?

    Самый дешевы Guardant Stealth III (2kb) можно взять за 475р. Как думаете он защитит ?

    http://www.guardant.ru/products/guardant-stealth/

    Reply ↓
  61. coder1cv8

    (61) Я думаю, моя обфускация в совокупности с обфускацией «байт-кода» вполне достаточны. Лично я, ни за какие шиши, в таком коде копаться не буду! ) По-поводу ключей, есть тут у нас специалист… )

    Reply ↓
  62. fedor40

    Что значит: «По-поводу ключей, есть тут у нас специалист… ) » …

    Reply ↓
  63. coder1cv8
  64. SONICUS

    Попробовал открыть обработку вылезла ошибка:

    {Форма.Форма(1)}: Метод объекта не обнаружен (SetSecret)

    по причине:

    {Форма.Форма(1)}: Метод объекта не обнаружен (SetSecret)

    Чо с ней делать? Платформа 8.1.12.101

    Reply ↓
  65. coder1cv8

    (65) Как написано выше, в описании: при использовании шифрования строковых переменных может потребоваться capicom.dll.

    Что делать? Варианта 2: либо не устанавливать галочку «шифровать строковые переменные» при обфускации, либо скачать и зарегистрировать эту dll-ку.

    Reply ↓
  66. SONICUS

    Не знаю как на счет первого варианта(обработка не запускалась изначально, а значит и галочку снимать не от куда было), но второй вариант прошел, после того как я скачал с сайта майкрософт пакет CAPICOM-KB931906-v2102. Так что в моем случае, чтобы воспользоваться этой обработкой наличие capicom.dll было обязательным условием.

    Reply ↓
  67. coder1cv8

    (67) Хм… Да, прошу прощения, я забыл что выложенная здесь обработка уже обфусцированна! 🙂 И конечно же, требует capicom.dll, хотя в моей (к примеру) винде такая длл-ка уже была установлена по-умолчанию. Спасибо за ценное замечание!

    Reply ↓
  68. Abadonna

    >хотя в моей (к примеру) винде такая длл-ка уже была установлена по-умолчанию

    Знаешь в чем прикол: сегодня переставил систему — фигвам, нема её :)))

    Это кто-то видать подставляет при инсталляции… какая-то прога

    Reply ↓
  69. Abadonna

    +(69) А ведь была, гадина :))))))))))

    Так что — не по умолчанию

    Reply ↓
  70. Душелов

    Прелагаю коммерческий проект — обфускация конфигурации 🙂

    Тестерам — бесплатно! 😉

    Reply ↓
  71. smirnov.a

    Обфускицинул код в 1500 строк, при получении результата все записывается в одну строку, скопировать полностью из текстового поля её нельзя, при нажатии кнопки сохранить 1с вылетает. Платформа 1с 8.1 последняя. Можно ли записывать не в одну строку, а в несколько, либо ввести параметр максимальное количество знаков в строке.

    Reply ↓
  72. coder1cv8

    (72) Можно. Будет параметр для разбивания по строкам, в следующем релизе.

    Reply ↓
  73. smirnov.a

    (73) Отлично, а когда релиз?

    Reply ↓
  74. coder1cv8

    (74) Скоро ) С работой разберусь немного…

    Reply ↓
  75. YRAtomic

    (75) Заждались уже :))

    Reply ↓
  76. coder1cv8

    (74) (76)

    Добавил разбиение результата на строки.

    Довольно приметивное, перенос осуществляется только по «;» и не разбиваются строковые константы, но я думаю этого будет достаточно?…

    Reply ↓
  77. YRAtomic

    о, спасибо

    Reply ↓
  78. Plu

    все работает, если не ставлю галку на процедурах и функциях.

    Reply ↓
  79. coder1cv8

    (80) Дык, галку на процедурах/функциях надо с умом ставить, а не подряд )))

    Reply ↓
  80. AlecoZAV

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

    Reply ↓
  81. coder1cv8

    (82) Ну естественно! А как же иначе? ) События и экспортные процедуры/функции обфусцировать можно только с аккуратностью, заменяя идентификаторы там где надо уже ручками…

    Reply ↓
  82. ROM_1C

    Все это очень красиво и наглядно.. спотреть на «переработанный» код..

    А можно все это чудо вернуть при необходимости вернуть к людському виду?

    И у меня при открытии обработки вылетает ошибка:

    {Форма.Форма(128)}: Помилка при виклику конструктора (COMОбъект): Недопустимая строка с указанием класса
    через:
    {Форма.Форма(128)}: Помилка при виклику конструктора (COMОбъект): Недопустимая строка с указанием класса
    
    через:
    Недопустимая строка с указанием класса

    Как ее исправить?

    Reply ↓
  83. Душелов

    (84) Не обфусцировать текстовые параметры или создание ком-объектов.

    Reply ↓
  84. ROM_1C

    с ошибкой разобрался… а вот как по первому вопросу декодирования???

    Reply ↓
  85. coder1cv8

    (85) Душелов +1 )

    (84) Это значит что не зарегистрирована capicom.dll. Сам обфускатор, выложенный здесь, требует для своей работы эту библиотеку. А в обфусцируемых обработках, можно отключить шифрование строк и значит, использование capicom.dll.

    (86) К относительно людскому виду вернуть можно, форматирование можно поправить… Имена переменных/функций уже конечно не откуда будет взять… И если строки зашифрованы были, то тоже ничего не поделать…

    Reply ↓
  86. ROM_1C

    Уважаемый, coder1cv8, хочу спросить сам алгоритм по которму можно вытянуть переменные и функции (процедуры) так как у вас в обработки…

    Зарье спасибо.

    Reply ↓
  87. coder1cv8

    (88) Почту давай )

    Reply ↓
  88. Душелов

    (89) Когда обфускация конфигурации будет? 😉

    Reply ↓
  89. ROM_1C

    (90) Что вы подрозумеваете под «Обфускацией кофигурации»? Переработка всего кода базы? Смотря на данную обработку думаю, что не очень сложно сделать….

    Reply ↓
  90. coder1cv8

    (90) ну это уже не моими силами, я думаю )

    Reply ↓
  91. spy-83

    такую ощибку выдает:

    {Форма.Форма(115)}: Индекс находится за границами массива

    e83070454784f62fd6ef415c79=0;Пока b28c72bab1402aa1e527b7cdffe7a2.Count>0 Цикл a5e643824e34b44b7d59747c85b34af=df8a421a994962b5a674ed00ef23­de.Replace(a5e643824e34b44b7d59747c85b34af,ad396ecec0804589aab1acbdecdaadcc[e83070454784f62fd6ef415c79]);

    Reply ↓
  92. coder1cv8

    (93) Может в коде ошибка? )

    Reply ↓
  93. spy-83

    (94) Нет

    на нескольких обработках проверял, везде именно эта ошибка.

    во всех кодах есть тексты запросов, может изза них?

    Reply ↓
  94. coder1cv8

    (95) А! Так это моя обработка ошибку выдает, а не обфусцированный код? )

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

    Reply ↓
  95. spy-83

    (96) http://infostart.ru/public/65008/

    вот на модуле этой обработки проверь. выдает ошибку

    Reply ↓
  96. spy-83

    (96) вот код который выдает ошибку

    Функция кк()

    п = 1+3;

    // Разделитель = «####»;

    //Возврат Истина;

    КонецФункции

    Reply ↓
  97. spy-83

    п = 1+3;

    // Разделитель = «!!!!»;

    //Возврат Истина;

    КонецФункции

    а вот так вот не выдает

    Reply ↓
  98. coder1cv8

    (98)(99) Ну я вот для кого описание пишу? )

    Читай внимательно: «Примечание: Имеется один, но очень не приятный баг, в обфусцируемом коде не должны использоваться комментарии, содержащие внутри себя кавычки«

    Reply ↓
  99. n_sashka@mail.ru

    В исходный код ввел строку:

    МассивСобытий.Добавить(«_$Data$_.New»);

    убрал галку «шифровать»

    строка обфусцируется в

    МассивСобытий.Добавить(############);

    при нажатии «Выполнить» появляется ошибка описанная в сообщении (93)

    Reply ↓

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *