[?]: STL-команда "BLD xxx" и ее параметры

Промышленные Логические Контроллеры SIMATIC S7-200/300/400
Post Reply
narkom
Posts: 43
Joined: Wed Dec 13, 2006 11:58 am
Location: Russia

[?]: STL-команда "BLD xxx" и ее параметры

Post by narkom » Tue Feb 20, 2007 6:15 am

Мужики!
Если есть у кого-нибудь информация по использованию STL-команды "BLD ххх" (интересует влияние значения параметра на процесс отображения програмы на дисплее) - поделитесь, please!


Best regards!

Scowl
Posts: 50
Joined: Sun Nov 27, 2005 7:46 pm
Location: Russia

Post by Scowl » Tue Feb 20, 2007 1:07 pm

Пустой оператор. Пиши сразу на STL и не зацикливайся по поводу всяких BLD.

narkom
Posts: 43
Joined: Wed Dec 13, 2006 11:58 am
Location: Russia

Post by narkom » Tue Feb 20, 2007 1:44 pm

Сам знаю, что "пустой".
Однако он имеет параметр (от 0 до 255), и SIEMENS почему-то не хочет давать описание его значений. Думаю, его можно использовать для закрытия частей программы, не предназначенных для постороннего взгляда...

Best regards!

CoMod
Site Admin
Posts: 3975
Joined: Thu Feb 16, 2006 3:25 pm
Location: Russia
Contact:

Post by CoMod » Tue Feb 20, 2007 2:35 pm

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

Ты сам понимаешь на каком форуме такие вопросы о защите можно задавать ?
Тут только могут ответить как снять кем то поставленную "защиту".

Я тут встретился с защитой типа проверки терпения и усидчивости крякующего - один объёмный пустой цикл (типа А+2 затем А-2) линейно повторялся в листинге сотню раз и где то в промежутках проскакивала одна рабочая операция (С=B+D...)
А некоторые недоумевают - загрузочной памяти не хватает, так как программа сложная и громадная.

narkom
Posts: 43
Joined: Wed Dec 13, 2006 11:58 am
Location: Russia

Post by narkom » Thu Feb 22, 2007 1:16 pm

Не-е-е-т, ребяты!
Команда, на самом деле, исключительно полезная.
Я давно искал альтернативный (имею в виду Know-How Protection от SIEMENS) и эффективный способ защиты S7 программ, передаваемых заказчику. И наконец нашел (сразу уточняю: автор - не я).
Сейчас выложу примерчик "Protect" на "свалку". Примерчик очень простой - программа состоит из OB1, FC1 и SFC46.
В OB1 вызывается FC1, которой задаются параметры a,b и с. В FC1 вычисляется сумма a+b=c. Но открывая FC1 вы не видите ничего, кроме безусловного вызова SFC46 (перевод контроллера в "стоп"). После загрузки программы в ПЛК или симулятор все нормально работает, т.е. сумматор суммирует то, что ему подсовываешь.
Потренируйтесь, может у кого-нибудь получится вскрыть настоящий код FC1.

Best regards!

CoMod
Site Admin
Posts: 3975
Joined: Thu Feb 16, 2006 3:25 pm
Location: Russia
Contact:

Post by CoMod » Thu Feb 22, 2007 2:54 pm

narkom wrote:Не-е-е-т, ребяты!
эффективный способ защиты S7 программ, передаваемых заказчику
Мажешь ММС карту эпоксидкой или "супер-клеем" и вставляешь в щель, на щель приклеиваешь броневую накладку, заодно не забудь склеить две половинки пластмассового корпуса и приклеить намертво разъём питания.
При этом варианте действительно будут трудности для неразрушимого (для корпуса) считывания и раскодирования программы.

Cezar
Posts: 2
Joined: Sat Feb 24, 2007 3:50 am
Location: Russia

Post by Cezar » Sat Feb 24, 2007 4:09 am

narkom wrote: .......
Потренируйтесь, может у кого-нибудь получится вскрыть настоящий код FC1.
Отправил в личку настоящий код FC1...
Наверное невозможно сделать 100% защиту, к сожалению (или к счастью? :) ).

CoMod
Site Admin
Posts: 3975
Joined: Thu Feb 16, 2006 3:25 pm
Location: Russia
Contact:

Post by CoMod » Sat Feb 24, 2007 7:18 am

http://plctalk.net/qanda/showpost.php?p ... tcount=164

Кстати подобные "граблевые" методы обладают обоюдным ударом - как по лбу заказчика, так и по твоему.

Я только один раз столкнулся с ситуацией, когда пришлось помудрить при передаче исходников: с чистой совестью отдал 100% рабочий исходник, распечатанный из Степа в текстовом STL виде без символьных имён и комментариев. И то мудрил по причине того, что к заказчику на "обслуживание" пролез прямой наш конкурент специально для того, чтобы спереть наше ПО. А в контракте была строка о передаче прикладного ПО.

Cezar
Posts: 2
Joined: Sat Feb 24, 2007 3:50 am
Location: Russia

Post by Cezar » Sun Feb 25, 2007 12:09 pm

Чтобы увидеть "скрытую" часть можно сделать так:
1) чтобы убедится, что используется такая "защита", надо открыть проект в какой нибудь не сименсовской программе (например S7-Doctor)
2) Для открытия и работы в Степе с этим проектом: шестнадцатеричным редактором заменим код команды BLD 7 (0x10 0x07) на код команды NOP 0 (0x00 0x00) в файле
<Папка проекта>\ombstx\offline\00000001\SUBBLK.DBT (вместо "00000001" может быть другая папка)
и при открытии в Степе увидим (FC1 из проекта "PROTECT"):

Code: Select all

      NOP   0    // здесь было "BLD 7" 
      L     #a
      L     #b
      +I    
      T     #c
      BEU   
      =     L      0.0
      UC    "STP"
      BLD   8
Если NOP 0 заменим на BLD 7 и сохраним то получим:
CALL "STP"
т.е. "скроем" программу заново.

narkom
Posts: 43
Joined: Wed Dec 13, 2006 11:58 am
Location: Russia

Post by narkom » Mon Feb 26, 2007 11:54 am

To CEZAR:
Сам вспомнил про S7-Doctor в тот же день - все показывает, собака...
Немного жаль...

To CoMod:
Да я и сам небольшой сторонник сокрытия всего и вся. Однако, сам знаешь - разные ситуации бывают...

И все-таки вопрос: есть у кого-нибудь подробное описание для операндов BLD-команды ?

Best regards!

CoMod
Site Admin
Posts: 3975
Joined: Thu Feb 16, 2006 3:25 pm
Location: Russia
Contact:

Post by CoMod » Mon Feb 26, 2007 12:26 pm

narkom wrote:Да я и сам небольшой сторонник сокрытия всего и вся. Однако, сам знаешь - разные ситуации бывают...
Мне было бы интересно тебя самого увидеть при отладке этого кода на объекте, если бы вдруг твоё 2+2 вдруг стало <>4 ...
Грабли для других - это одно, а зачем себе то их подкладывать.
Можно конечно держать в Исходниках, но ...

Как я понял двойное употребление БЛД воспринимется как скобка для операторов между ними.
А порядковый номер значения не имеет и меняется как счётчик по мере преобразования из LAD в STL

CoMod
Site Admin
Posts: 3975
Joined: Thu Feb 16, 2006 3:25 pm
Location: Russia
Contact:

Re: [?]: STL-команда "BLD xxx" и ее параметры

Post by CoMod » Wed Dec 30, 2009 8:58 am

Продолжение темы: http://www.automation-drives.ru/forum/v ... c&start=20
Защита контроллера от считывания/записи
Член Ограниченного Круга wrote:Хочу добавить в тему...
В принципе, есть и другие способы защиты S7 программ от просмотра и/или изменения.
Один из них достаточно давно известен - это использование команды BLD для сокрытия важной части программного кода. И если в совокупности с этим методом использовать системную функцию SFC46, то можно свалить процессор в СТОП после чьей-либо попытки изменить код программы.
Второй метод пока известен лишь очень ограниченному кругу специалистов.
Он позволяет полностью скрыть весь код, т.к. просто лишает "юзверя" возможности открыть защищенный этим методом FB,FC или OB, а следовательно и изменить его.

не Член Ограниченного Круга wrote:Ну вообще то ошибки компилятора тут не причем, компилятор тут вообще не причем.
В данном случае используется метод подмены в готовом коде правильной команды, на код, которого нет для данной системы.
В данном случае (т.к. таких кодов может быть несколько) 0300h.
А для контроллера сделать переход через этот неправильный код.
Пример:

Code: Select all

L MW0
L MW2
-I
T MW6
JU m001
NOP 0 // Пустой операцией резервируется место для последующей ручной замены недокументированным кодом, рушащим Степ7
m001: BE
После компиляции имеем код (привожу не весь, а только конец)

Code: Select all

700Bh 0003h (JU m001)
0000h (NOP 0)
6500h (BE)
После этого остается только подменить код 0000h кодом 0300h и дело в шляпе, т.е просмотреть такой блок редактором STEP7 невозможно.
Его можно скачать, переписать в другой контроллер, но просмотру и редактированию он не поддается.
Кстати, этот код взялся из STEP5, там он представляет команду TNB.
.............
РосТехНадзор предупреждает: В худшем случае "защита дураков от таких же дураков" может повлечь тяжкие последствия.
Использование гвоздей для защиты дверей wrote: Дело было вечером, делать было нечего.
Борис: А у меня в кармане гвоздь! Я им умею двери закрывать. А у вас?
Петя: Ух ты! Расскажи, как ты это делаешь?
Борис: Рассказать не могу, потому что на этом кто-нибудь может заработать. Да и вообще я только папе с мамой это буду рассказывать. Могу показать дверь, закрытую гвоздём - вот она.
Петя: Ну и чего тогда хвастаешь? Уже много заработал?
Борис: Хотел просто сказать, что двери можно закрывать не только на ключ, но и на гвоздь. Вообще не все двери закрывать нужно, а только входную. Кто-нибудь может сделать замок из моего гвоздя и продавать другим.
Вася: А я открыл эту дверь! Закрой еще разок!
Коля: Двери можно взломать фомкой...
Борис: А зачем мне снова закрывать, чтобы все научились их открывать?
Вова: Ребята, я знаю, где он набрал этих гвоздей. Пойдём покажу. А ты, Боря, не задавайся.
Вася (щупая гвоздь в кармане): Хреновенькие у тебя гвозди. Не зря я просил закрыть ещё одну дверь.
Вова: Ну, гвоздь ещё можно изогнуть особым образом.
Вася: А всё равно можно потом догадаться. Спасибо тебе таки, что показал склад гвоздей.
Коля: Двери все равно можно взломать фомкой...
Борис: Ребята, я просто хотел сказать, что дверь можно гвоздём закрыть. Закрыл одну для примера. А вы можете ещё как-нибудь двери закрывать?
Лёлик: А я видел, как один мальчик закрыл дверь в детскую на гвоздь, и потом ушёл в кино. Пришли домой родители, пришлось им выломать дверь, чтобы достать зимнее пальто из шкафа. Мальчика лишили мороженого. Надо было с родителями заранее договариваться, чтобы в детскую не лезли.
Саша: Вообще можно открыть любую дверь, при наличии желания. Можно купить хороший замок. Если хотите, покажите свою дверь, я попробую её открыть для интереса.
Коля: А чего вы Борю ругаете, он интересненькое показал. Всё-таки есть двери, которые можно и гвоздём закрыть.
Лёлик: Не, он не показал. Он просто задавака. А на самом деле так закрывать двери многие могут. Но не закрывают, потому что можно дверь сломать. А хотите анекдот?
Вася (щупая гвоздь в кармане): Задавака! Задавака! Таки спасибо за показ дверей. Чего сразу всё не рассказал?
Борис: Я всё рассказываю только маме с папой. А кому надо - тот сам догадается.
Лёлик (зевая): Папу с мамой гвозди не интересуют. И потом, гвоздём можно дверь сломать.
Коля: Ребята, давайте жить дружно...
Вася (щупая гвоздь в кармане): Ты не папе с мамой хотел рассказать, ты дяденьке с соседнего подъезда хотел за кило печенья. Задавака! Задавака! Лучше б молчал, а то всё равно все уже догадались.
Борис: Эх, ребята...

narkom
Posts: 43
Joined: Wed Dec 13, 2006 11:58 am
Location: Russia

Re: [?]: STL-команда "BLD xxx" и ее параметры

Post by narkom » Wed Dec 30, 2009 2:18 pm

Натурально, картина маслом!
...Брат Салтан х..ет тихо, а ткачиха с поварихой мутят воду на постой: - "Ой! Нашёлся, б.я, герой!"...

Post Reply