X

Здравствуйте, гость ( Вход | Регистрация )

Скрыть объявления

Объявления

Скрипты в свою программу, Как сделать ?  
 slalex
сообщение 29.4.2016, 2:30
Сообщение #226104


Группа: Real User

Сообщений: 1788
Спасибо сказали: 798 раз

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

я так понял придется в программу запихать какой-то простенький си интерпретатор, может кому попадались примеры реализации такой идеи?
  Пользователя нет на форуме
 
1 из 2>»
 
Ответить
Ответов (1 - 15)
 Saveliy
сообщение 29.4.2016, 3:19
Сообщение #226106


Special

Группа: Главные администраторы

Сообщений: 13256
Спасибо сказали: 2025 раз

Это не быстрое дело, посидеть нужно основательно. В принципе реализация не сложная, просто создаешь свое API между пользователем и твоим софтом.

Тебе придется создать свой парсер. Перечень своих методов, их реализацию, описание возможностей, чтобы пользователи, используюя твою функцию, знали, что она будет делать на выходе. По сути все просто, называешь один метод например __hochuEepromDelete(), вызывая который, будет польностью стерта еепром. Или например __hochuAllEepromFill(hex), вызывая который, этот метод перепишет весь еепром указанном в параметре hex значением.

Далее пишешь реализацию этой функции, так сказать в свою lib (библиотеку). Потом пишешь свой парсер, в котором пошагово будешь считывать "команды" из скрипта и выполнять их, подгружая свои функции. Реализация парсера, самая важная часть, будет ли это просто построчный скрипт (это самое простое), или будет это серьезный парсер с возможностью парсинга вложенных команд, например ты дашь пользователям возможность не пошагово выполнять команды, а сможешь распознавать реальную эмуляцию циклов for, while и вложенных в них неограниченно других циклов и команд. Можно конечно заюзать что-то наподобие eval, но я бы не разрешил пользователям исполнять свой произвольный код. API, оно и в африке API.
Если кратко, то примерно так.. Далее по задачам.
  Пользователя нет на форуме
 
 stepan_v
сообщение 29.4.2016, 12:55
Сообщение #226122


Группа: Участник

Сообщений: 274
Спасибо сказали: 51 раз

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

Как вариант, использовать байт-код java-машины, лень искать, но наверняка есть и трансляторы готовые, и открытые исходники машины-интерпретатора, которые можно под себя адаптировать.
  Пользователя нет на форуме
 
 Saveliy
сообщение 29.4.2016, 13:28
Сообщение #226124


Special

Группа: Главные администраторы

Сообщений: 13256
Спасибо сказали: 2025 раз

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

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

P.S. а ставить софт и пользователя в зависимость от Java, я лично против такого подхода. Тогда уж изначально весь софт писать на Java и быть морально готовым к "принудительно-обязательной" установке Java на машину, понимая, что без нее не пойдет софт.
  Пользователя нет на форуме
 
 Grrek
сообщение 29.4.2016, 13:30
Сообщение #226125


Группа: Real User

Сообщений: 61
Спасибо сказали: 6 раз

Цитата(slalex @ 29.4.2016, 3:30) *
Может кто подскажет как можно в свою программу добавить выполнение Си-подобных скриптов, причем что-бы кроме стандартных инструкций, можно было сделать некоторые свои команды, вызывать свои функции,
я так понял придется в программу запихать какой-то простенький си интерпретатор, может кому попадались примеры реализации такой идеи?

Тебе нужно в адаптер els запихнуть озу с батарейкой, в нем у тебя будут ключи. Все остальное сломают. Не трать попросту время.
  Пользователя нет на форуме
 
 Saveliy
сообщение 29.4.2016, 13:32
Сообщение #226126


Special

Группа: Главные администраторы

Сообщений: 13256
Спасибо сказали: 2025 раз

Цитата(Grrek @ 29.4.2016, 13:30) *
Тебе нужно в адаптер els запихнуть озу с батарейкой, в нем у тебя будут ключи. Все остальное сломают. Не трать попросту время.

Я ему уже это говорил, но в таком случае придется только свой адаптер лепить, а это уже другая история. Да и в ELS не "воткнешь" батарейку, производством ELS занимаются другие люди.

P.S. Думаю скрипты нужны не для защиты, а по защите с удовольствием в другой теме пообщаемся, правда по сути все сказано вами одной фразой..


Спасибо сказали:
  Пользователя нет на форуме
 
 Grrek
сообщение 29.4.2016, 13:47
Сообщение #226129


Группа: Real User

Сообщений: 61
Спасибо сказали: 6 раз

Цитата(Saveliy @ 29.4.2016, 14:32) *
Я ему уже это говорил, но в таком случае придется только свой адаптер лепить, а это уже другая история. Да и в ELS не "воткнешь" батарейку, производством ELS занимаются другие люди.
P.S. Думаю скрипты нужны не для защиты, а по защите с удовольствием в другой теме пообщаемся, правда по сути все сказано вами одной фразой..

Я имел в виду в адаптер ELS встраивать криптомодуль , что бы не городить отдельный адаптер
  Пользователя нет на форуме
 
 stepan_v
сообщение 29.4.2016, 14:33
Сообщение #226134


Группа: Участник

Сообщений: 274
Спасибо сказали: 51 раз

Цитата(Saveliy @ 29.4.2016, 14:28) *
Подгонять под себя порою выходит дольше, чем написать самому.

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


Цитата(Saveliy @ 29.4.2016, 14:28) *
пользователю можно предоставить выбор языка для написания скрипта, как это сделано например в программаторе UPA, но можно и не выпедриваться, ограничить лишь одним типом языка программирования

Для возможности выбора языка придется делать интерпретатор для каждого, если это писать самому. Тут хотя бы си сделать, как я понимаю :) Но даже и в рамкаж одного языка предусмотреть все варианты написания практически невозможно. Мне приходилось мучиться с подобными системами, когда всё вроде бы написано правильно, а не работает, потому что по-какой-то причине разработчик предусмотрел только другой, отличный от этого, формат описания.

Цитата(Saveliy @ 29.4.2016, 14:28) *
Впрочем, все зависит от задач, кому-то за глаза распознавание нескольких команд

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

Цитата(Saveliy @ 29.4.2016, 14:28) *
И кстати синтаксический анализ нужен обязательно, это просто правило хорошего тона, предупреждать пользователя о ошибках.

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

Цитата(Saveliy @ 29.4.2016, 14:28) *
P.S. а ставить софт и пользователя в зависимость от Java, я лично против такого подхода. Тогда уж изначально весь софт писать на Java и быть морально готовым к "принудительно-обязательной" установке Java на машину, понимая, что без нее не пойдет софт.

Во-первых, никто не говорит, что нужно брать именно формат байт-кода JVM, это лишь один из вариантов. Во-вторых, если интерпретировать будет сама программа, зачем ей Java на машине?

Grrek, вопрос именно про возможность расширения функционала сторонними скриптами. При чем тут защита? :) Давайте по теме. А о защите лучше в привате общаться ))

Цитата(Grrek @ 29.4.2016, 14:30) *
запихнуть озу с батарейкой, в нем у тебя будут ключи. Все остальное сломают

Не вижу никаких проблем сломать и такой вариант. Вообще, надо исходить из того, что не бывает абсолютно стойких систем. Вопрос исключительно в соизмеримости затрат с результатом. Если только это не дело принципа ))
  Пользователя нет на форуме
 
 Saveliy
сообщение 29.4.2016, 14:50
Сообщение #226135


Special

Группа: Главные администраторы

Сообщений: 13256
Спасибо сказали: 2025 раз

Цитата(stepan_v @ 29.4.2016, 14:33) *
Многие ли захотят готовые скрипты специально адаптировать?

Так я и говорю, зависит от задач. Если задача не просто дать пользователям какие-то дополнительные возможности, а еще и возможность чужие скрипты подсовывать, это тогда еще нужно и не просто скрипты реализовать, но и возможность GUI, окошек диалога, но это уже в другую степь идем, тут то не для программатора скрипты, да и сами скрипты тогда должны быть по стандарту, ибо например скрипты от Оранжа уже не подойдут, у них свой "язык", впрочем и удругих тоже, под всех не подстроишься. Это только если все будут придерживаться единого стандарта, либо потеть разработчику над унификацией, конвертацией. Но что либо можно советовать только тогда, когда мы услышим саму задачу, а то нас сейчас понесет)))

Цитата(stepan_v @ 29.4.2016, 14:33) *
Давайте по теме. А о защите лучше в привате общаться ))

Вот и я говорю, не нужно тему расчленять на разные вопросы, если охота на этот счет пообщаться, то отдельной темой, например пока здесь Разное, специально создал сейчас раздел. А на счет привата, об общих способах защиты можно и нужно пообщаться на виду, а о конечной реализации, уже в привате конечно.
  Пользователя нет на форуме
 
 Saveliy
сообщение 29.4.2016, 14:51
Сообщение #226136


Special

Группа: Главные администраторы

Сообщений: 13256
Спасибо сказали: 2025 раз

Цитата(stepan_v @ 29.4.2016, 14:33) *
А в деле синтаксического анализа гораздо проще полагаться на готовые отлаженные решения, чтобы не ходить гордо по ранее отложенным другими в сторону граблям

Это еще кстати зависит от типа SDK, на котором пишешь софт, может таких библиотек, модулей просто не будет для того SDK, на котором пишешь.
  Пользователя нет на форуме
 
 Saveliy
сообщение 30.4.2016, 0:28
Сообщение #226194


Special

Группа: Главные администраторы

Сообщений: 13256
Спасибо сказали: 2025 раз

slalex, Естестественно примеры легче подгонять и подстраивать, но некоторых примеров просто нет, например хекс редактор, мне все пришлось вручную писать, каждый шаг, ибо сколько не искал, готовых компонентов нет для Embarcadero, и когда сам написал, понял, почему. Потому что нужно все движения отслеживать, отрисовывать и тд, масса процедур из вне и прочее. Со скриптами проще, только понять, что ты хочешь сделать, для каких целей. Тут кстати еще вопрос, как их криптовать, ибо у тебя нет адаптера с процессором, в котором есть криптомодуль, а без крипто оно не имеет смысла. Криптовать вручную, ломанут софт и расшифрую все скомпилированные исходники. Ну и тд. Хотя впрочем и так не имеет смысла скрипты вводить, это же не программатор, а только для ОБД делать скрипты, это вешалка будет, не имея крипто оборудования, привязки. Плюс чисто на си делать не имеет смысла, кто может делать на СИ, сам напишет софт для ELS, а свой формат скриптов, большинство не будет заморачиваться с конвертацией, а будут писать скрипты именно под твой софт. Хотя идея со скриптами старая, давно реализованная, от оранжа, айпрога до упы и даже тритона, не вижу смысла в скриптах. Если в личных целях, не для пользователей, может быть, тогда это все меняет. Но все ответы на эти вопросы и будущие можно было получить в теме, если бы ты общался, а не молчал))
  Пользователя нет на форуме
 
 slalex
сообщение 30.4.2016, 0:58
Сообщение #226195


Группа: Real User

Сообщений: 1788
Спасибо сказали: 798 раз

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

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

по реализации, похоже надо искать какие-то исходники компиляторов, когда-то видел типа рефератов с такими проектами.

идея думаю хорошая и давно назрела.

то как сделаны скрипты в Оранже, наводит на мысль что там всё сделано с нуля через длинный IF, в том числе и их интересные циклы, а в Айпроге можно писать сложные конструкции, как буд-то применено какое-то стандартное решение.

не хотелось-бы пойти по какому-то не правильному пути.
  Пользователя нет на форуме
 
 Saveliy
сообщение 30.4.2016, 1:27
Сообщение #226196


Special

Группа: Главные администраторы

Сообщений: 13256
Спасибо сказали: 2025 раз

Цитата(slalex @ 30.4.2016, 0:58) *
те-же функции включение-отключения бортовика на Логанах, делаются одной кан командой

Одно дело, когда нечем это делать, другое дело, что послать эту команду может человек любого уровня развития через любой канхакер и ему подобные девайсы и со скриптами (типа UPA-CAN) и без jyys[, просто из своего файлика вставил пакет и все дела.

Цитата(slalex @ 30.4.2016, 0:58) *
идея думаю хорошая и давно назрела.

В целом лишним не будет, всегда хорошо, когда есть больше возможностей, чем меньше)) Другое дело, будет ли реально востребовано. На первый взгляд не имеет смысла, твои доводы не повод, но меня не слушайте, старого зажравшегося дядьку, может кому и понадобится)) да и наверное обсуждать, нужно или не нужно, не имеет смысла, хочется, надо, значит идем по главному вопросу темы и не отклоняемся. Это мы уже тут надумали, пока ждали от тебя пояснений и целей) И то не все есть на данный момент)

Цитата(slalex @ 30.4.2016, 0:58) *
по реализации, похоже надо искать какие-то исходники компиляторов

Конечно нужны примеры, чтобы понять и допилить, но ты написал свой вопрос в теме по C++, а модули, компоненты и примеры нужно искть для Delphi. Твой вопрос в разделе C++ сбил с толку, непонятно, что искать. Интерпретатор СИ для С++, или интерпретаро СИ для Delphi.. Если это просто будут исходники, можно покряхтеть и конвертировать, хотя дело неприятное, переписывать под другой язык, а если это еще и компонент, тем более нет смысла.
  Пользователя нет на форуме
 
 Saveliy
сообщение 30.4.2016, 1:36
Сообщение #226197


Special

Группа: Главные администраторы

Сообщений: 13256
Спасибо сказали: 2025 раз

Цитата(slalex @ 30.4.2016, 0:58) *
то как сделаны скрипты в Оранже, наводит на мысль что там всё сделано с нуля через длинный IF

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

Цитата(slalex @ 30.4.2016, 0:58) *
а в Айпроге можно писать сложные конструкции, как буд-то применено какое-то стандартное решение.

Вполне возможно, что и применено стандартное решение, но разбираясь в регулярках, можно обрабатывать любые конструкции, любой вложенности и с обратными вызовами (callback). Хотя по моим прикидкам, у разработчика айпрога предполагаю методика более быстрых решений, скорее всего там действительно готовое решение встроено или оно просто написано на заказ кем-то, что тоже неплохой способ сэкономить времечко.
  Пользователя нет на форуме
 
 slalex
сообщение 30.4.2016, 2:25
Сообщение #226198


Группа: Real User

Сообщений: 1788
Спасибо сказали: 798 раз

Цитата(Saveliy @ 30.4.2016, 2:27) *
Интерпретатор СИ для С++, или интерпретаро СИ для Delphi..


я на С++ пишу, поэтому в идеале нужен "Интерпретатор СИ для С++"

но если исходник интерпретатора будет очень понятный, что-бы по образу и подобию делать, то думаю на любом языке не помешает для общего развития или чтобы какую идею почерпнуть.
  Пользователя нет на форуме
 
 slalex
сообщение 30.4.2016, 2:34
Сообщение #226199


Группа: Real User

Сообщений: 1788
Спасибо сказали: 798 раз

вот кажется то что надо http://sources.codenet.ru/download/4269/LittleC.html


Спасибо сказали:
  Пользователя нет на форуме
 
1 из 2>»
Ответить
5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0
Режим отображения: ·


  Сейчас: 29.3.2024, 11:28