Light-electric.com

IT Журнал
137 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Небезопасный модуль для образа safeseh

Ошибка lnk2026: модуль небезопасен для безопасного изображения

Я получил эту ошибку при построении образца проекта visual C++. Сначала я скачал 3 образца проектов, все решают одну и ту же задачу, распечатывают все простые числа меньше N (вы, возможно, знаете эти образцы проектов ?). Я построил проект pure-C без каких-либо проблем. Но когда я попытался построить проект на основе assembly, я получил эту ошибку.

3 Ответа

В Visual Studio 2012 Express Edition:

Из спецификации: было указано /SAFESEH, но модуль не был совместим с функцией безопасной обработки исключений.

Или вы можете сказать MASM, чтобы обеспечить гарантию того, что объект не содержит обработчиков исключений или что любые обработчики исключений определены с помощью .SAFESEH, если вы знаете, что это правильно для вашего кода assembly :

Это позволит вам сохранить /SAFESEH включенным для связывания проекта. Но правильно ли это? Вы даете гарантию! Будьте уверены или используйте первый вариант.

Похожие вопросы:

Недавно я услышал от аудита безопасности, что HTTP Options небезопасен в целом, и веб-сервер не должен этого допускать. Может кто-нибудь объяснить причины, почему это так ?

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

я успешно делаю это внутри своих шаблонов this.destinyForm.get(‘category’).value?.includes(‘male’) Обратите внимание, что value?.includes с оператором безопасного типа в форме может не иметь.

Я использую Microsoft Visual Studio 2011 Professional Beta Я пытаюсь запустить файлы OpenCV C++ ( http://opencv.willowgarage.com/wiki/Welcome ), которые я скомпилировал с помощью cMake & Visual.

Почему мой NSMutableString потенциально небезопасен? Я искал это, но ничего не мог найти. int hour = [number intValue] / 3600; NSMutableString *time = [[NSMutableString alloc] initWithString:@]; if.

Я работаю над проектом, который требует безопасного обмена сообщениями карты EMV для защиты данных, отправленных/полученных с карт EMV. Согласно Книге EMV 3, раздел 6.3.2: Насколько я понимаю, мы.

Я новичок, чтобы играть. Так как я использую Безопасный модуль в Play framework с japid. Я разработал пользовательский шаблон входа в систему и назвал templete в теге beforeLogin.html. Мне нужно.

Я переношу некоторый код на VS2013 и сегодня столкнулся с ошибкой компоновщика: htmlhelp.lib(init.obj): ошибка LNK2026: модуль небезопасен для изображения SAFESEH Итак, я столкнулся с двумя.

Следующий метод генерирует предупреждение, но он выглядит безопасным для меня. Я уверен, что проблема со мной: public S foo(S s) < return (S) new StringBuilder(s); >.

Подключение OpenGL небезопасный модуль

Подключение библиотек OpenGL к MVS 2017
здравствуйте, подскажите пожалуйста, как правильно подключить опенжээловкие библиотеки, винда.

Подключение OpenGL
Помогите пожалуйста начинающему чайнику! У Visual Studio нужно сделать следущее: "После того.

Подключение OpenGL
Доброго времени суток! Сейчас собрался делать курсовик по программированию и столкнулся с одной.

1) Правой кнопкой жмём на проект ->Cвойства->Открываем вкладку «Компоновщики».В «Дополнительных зависимостях»пишем:
opengl32.lib glut32.lib glu32.lib

2)
Откройте диалоговое окно Страницы свойств проекта. Дополнительные сведения см. в разделе Задание свойств проекта C++;
Выберите папку Компоновщик;
Выберите страницу свойств Командная строка;
Введите параметр /SAFESEH:NO в поле Дополнительные параметры.

это свойства другого файла, не тот, где подключал библиотеки

artem55555p, lib нужны в подключаемых библиотеках, а не каталогах. В каталоги путь к заголовочным файлам указывается.
Вы путаете -L и -I.

Добавлено через 1 минуту
lib надо указывать в разделе Properties > Linker. Впрочем, вам об этом уже писали. Прочитайте инструкции выше ещё раз и внимательнее.

Добавлено через 2 минуты
Хедеры имеют расширение .h или .hpp (как правило).
Библиотеки имеют расширение .lib. Динамические — .dll

*.dll положите в папку System (с учётом разрядности системы)
.h киньте в include папку вашей IDE (например C:Program Files (x86)Microsoft Visual Studio 14.0VCinclude), либо в проект. При необходимости укажите путь к ним в свойства проекта > С/С++ > Общие > Дополнительные каталоги включаемых файлов.

*.lib аналогично, либо в lib папку IDE (например C:Program Files (x86)Microsoft Visual Studio 14.0VClib), либо в проект с указанием путей через свойства проекта > Линкер/компоновщик (хз как по русски, у меня английская студия) > Общее > Дополнительные зависимости.

вот в проекте папка lib со всеми файлами этими:

вот я подключил их:

но его все равно не удается найти. как быть?

ВОТ ВАМ ОФИЦЫАЛЬНАЯ ИНСТРУКЦИЯ ПО УСТАНОВКИ GLUT

1. После того, как вы загрузили файл glut.zip (вы должны получить последнюю версию 3.7), разархивируйте его в папку

2. Внутри папки у вас должно быть:

Читать еще:  Локальная политика безопасности

3. Скопируйте файлы glut.dll и glut32.dll в каталог Windows (окна или winnt, зависит от того, используете ли вы Windows95 / 98 или Windows NT)

4. Скопируйте файл glut.h в:

: include GL glut.h

5. Скопируйте glut.lib и glut32.lib в:

6. Это должно быть сделано для установленных библиотек избыточности. Остальная часть этого письма показывает вам, как настроить VC ++, чтобы вы могли использовать библиотеки переполнения.

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

1. Запустите VC ++ и создайте новый проект.

2. Проект должен быть «консольным приложением Win32»

3. Введите название проекта и его место на жестком диске.

4. Выберите пустой проект и нажмите «Далее» или «Закончить».

5. Первое, что вам нужно сделать, когда проект открывается, — щелкнуть по элементу меню «Проект» сверху.

6. Выберите «Настройки» (появится окно)

7. В левой части окна есть вкладки, выберите вкладку «Ссылка»

8. Строковое поле с меткой «Object / library modules» содержит несколько файлов lib, уже установленных в нем

9. Перейдите в конец этого поля строки и введите:

10. Выберите «OK» и включите все библиотеки opengl, которые вам нужны.

11. Теперь все, что вам нужно сделать, это включить , и вы готовы прогать

Небезопасный модуль для образа safeseh

Answered by:

Question

I am migrating my application from vc++6.0 to vc++2013

I have copied sql10forcompile in my machine from older machine were vc++6.0 was there, Sql10Compile is using to build the embedded cp code to cpp file.

I am getting this error after i copy it in my current machine and this error directs to a lib file libcs.lib(libcs.dll)

can anyone help me

Answers

Thank you for your feedback!

I feel it is strange. Please check as below:

right-click your project -> properties

configuration properties -> linker -> advanced

  • Marked as answer by Anna Cc Thursday, January 30, 2014 5:41 AM

Actually we have to click on command line right. I have resolved the syntax issue by the way.

And i checked the linker->advanced option .. for me it was Yes(/SAFESEH) tahts it. Is it fine coz it is not showing any error now

  • Marked as answer by Anna Cc Thursday, January 30, 2014 5:43 AM

All replies

Thank you for posting here!

From MSDN, we see /SAFESEH was specified, but a module was not compatible with the safe exception handling feature. If you want to use this module with /SAFESEH, then you will need to recompile the module using the Visual C++ .NET 2003 (or later) compiler.

To solve this issue, please take the steps below:

1. Open the project propert pages dialog

right-click the project -> properties

2. Click linker below the node of configuration properties

3. Click command line

4. Write down «/SAFESEH:NO » in additional options then click apply

If you still have any questions about this issue, please feel free to let me know.

Форсируем виндовую защиту

Этим постом я открываю цикл статей, который закончится постом «взять первое место на олимпиаде по программированию за 10 минут».

Большинство людей поставив винду и не думают, что ее нужно допиливать , да что уж там когда им всучивают ноут с предустановленной форточкой они и не думают снести ее и собрать Gentoo . Так почему же защита работает не в полную силу? Ответ прост: чтоб работала сделанная на коленке поделка, при включенной защите прога будет выдавать кучу ошибок (вспоминая скайп. ).

Напильников существует много, но в данном цикле статей нас будет интересовать только напильник №8.

ВУЗ DEP (Data Execution Protection)

После установки винды и до первой перезагрузки я всегда полностью включаю DEP. Сделать это можно следующим образом:

  1. открываем свойства системы (можно нажать Win+R и набрать sysdm.cpl )
  2. во вкладке «Дополнительно» в группе «быстродействие» нажать кнопку «параметры»
  3. во вкладке «предотвращение выполнения данных» выбрать пункт «включить DEP для всех программ и служб, кроме выбранных ниже»

Подробнее о DEP, NX/XD-bit, и о том что мы сделали выше приведенной последовательностью команд описано в этой статье.

Читать еще:  Как включить безопасную загрузку

SEHOP (Structured Exception Handler Overwrite Protection), ECV (Exception Chain Validation)

Вначале поговорим о SEH — структурная обработка исключений. Чтоб было понятнее откройте С++ проект в Visual Studio, нажмите Alt+F7, зайдите в Configurations Properties — С/С++ — Code Generation, здесь нас интересует Enable C++ exception. Кстати и SEHOP тут неподалеку, поднимаемся на уровень выше до опций линкера Linker — Advanced, и в конце будет Image Has Safe Exception Handlers.

Я рекомендую пока не читать тот материал из ссылки «Enable C++ exception» — неподготовленный ум этого не поймет, лучше следовать этому плану:

А теперь как SEHOP включить (копи-паст):

  1. В меню Пуск выберите пункт Выполнить, введите команду regedit и нажмите клавишу ВВОД.
  2. Найдите следующий раздел реестра: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerkernelDisableExceptionChainValidation
    1. Примечание: Если не удалось найти параметр DisableExceptionChainValidation в разделе реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Managerkernel выполните действия, описанные ниже, чтобы создать его.
    2. Щелкните правой кнопкой мыши раздел kernel, выберите команду Создать, а затем — Параметр DWORD.
      Введите DisableExceptionChainValidation и нажмите клавишу ВВОД.
  3. Дважды щелкните элемент DisableExceptionChainValidation.
  4. Присвойте параметру DisableExceptionChainValidation значение 0, чтобы включить его, а затем нажмите кнопку ОК.
    Примечание: Значение 1 отключает этот параметр реестра. Значение 0 включает его.
  5. Перезагрузите комп.

Дополнительно замечу, что ECV защищает только 32-х битные приложения, включая те, что выполняются под Wow64 на 64-х битных системах. 64-х битный код не подвержен этому типу атаки.

А теперь погрузимся в дзен:

EAF (Export address table Address Filter)

Тут уже без полного дзена не получится. Вначале надо понять что такое Export address table. Для этого окунемся в структуру PE (Portable Executable, исполняемые файлы) файла: откроем секцию экспорта и перейдем к address table: «Данная структура данных содержит адреса экспортируемых функций (их точки входа) экпортируемых данных и т.п.».

Погрузимся еще ниже и читаем статью «Путь воина — внедрение в pe/coff файлы» , здесь нам нужен раздел про Экспорт, он находится сразу под надписью «Листинг 7 » .
Надеюсь после прочтения всего этого мозг еще не вскипел. Все это должно было ответить на вопрос: от чего же мы защищаемся, хотя нет, не так, правильный вопрос: при помощи чего мы защищаемся. А ответ здесь.
Кратко: при помощи «навешивания» на Export address table аппаратных точек останова у стандартных библиотек можно определить подмену функций этих стандартных библиотек.

Enhanced Mitigation Experience Toolkit

Если заметили, то в обоих последних статьях упоминается про EMET — Enhanced Mitigation Experience Toolkit, это можно сказать центр управления параметрами безопасности, описанных в этой статье. Он контролирует DEP, SEHOP, EAF, и не описанные в статье: ASLR, NullPage, HeapSpray.
Описание EMET и ссылка на загрузку.

Рекомендую в ней выставить следующие глобальные параметры:

ProSafe-RS

Система противоаварийной защиты

ProSafe-RS — система противоаварийной защиты (ПАЗ) Yokogawa.

Приложения

  • Системы аварийного останова (Emergency Shutdown System, ESD)
  • Системы останова технологического процесса (Process Shutdown System, PSD)
  • Системы пожаротушения и контроля загазованности (Fire and Gas System, F&G)
  • Системы управления горелками (Burner Management System, BMS).

Функции ProSafe-RS

  • Соответствует требованиям SIL3 даже в недублированной конфигурации.
  • Поддерживает технологию двойного резервирования Pair & Spare.
  • Интегрируется с РСУ CENTUM VP: состояние ProSafe-RS можно контролировать на станциях оператора HIS CENTUM VP.
  • Соответствует требованиям стандартов безопасности о разделении функций управления и безопасности (несмотря на интеграцию с CENTUM VP).
  • Поддерживает связь с вышестоящими и нижестоящими системами по протоколам Modbus и OPC.
  • Регистрирует последовательность событий ДО и ПОСЛЕ аварии (SOER — Sequence Of Events Recorder).

Системная архитектура ProSafe-RS

AD Server — Automation Design Server;
SCS — Safety Control Station — Станция безопасности (контроллер ПАЗ);
SOE — Sequence Of Events — последовательность событий;
SENG — Safety Engineering Station — Станция инженера ПАЗ.

Станция безопасности ПАЗ
ProSafe-RS

Конфигурация станции безопасности

N-IO — Network I/O — новая система распределённого ввода-вывода.

Максимальная конфигурация

  • Доменов Vnet/IP: 16
  • Станций Vnet/IP в одном домене: 64
  • Станций в системе Vnet/IP: 256.

Дублированный блок управления безопасности

Duplexed SCU имеет дублированные модули CPU и питания.

Типы станций безопасности

FIO (Fieldnetwork I/O) — система распределённого ввода-вывода.

Дублированный блок узла расширения безопасности

Duplexed SNU имеет дублированные блоки питания и интерфейсные модули шины ESB.

Изолированные модули ввода-вывода для FIO

N-IO (Network I/O) — новая система распределённого ввода-вывода.

Коммуникационные модули для N-IO/FIO

Программирование станции безопасности

POU (Program Organization Unit) — общее название для программ, функций (FU) и функциональных блоков (FB).

FU в отличие от FB не имеет внутренней памяти для хранения переменных и выдаёт только один результат.

Читать еще:  Введите ключ безопасности

FU и FB разрабатываются на 3-х стандартных языках программирования логических контроллеров:

  • FBD (Function Block Diagram)
  • LD (Ladder Diagram)
  • ST (Structured Text).

Программы разрабатываются только на 2-х языках: FB и LD.
ST — более универсальный язык, но менее безопасный.

FU и FB делятся на две группы:

  1. Safety FU/FB — используются в контурах безопасности (Safety Loops)
  2. Interference-free FU/FB — не используются в Safety Loops

Пример программной логики

Среда разработки

Среда разработки называется ProSafe-RT Workbench или SCS Manager.

Загрузка приложения в станцию безопасности

Внесение изменений в приложение станции безопасности отличается от загрузки программы в обычный контроллер.
В зависимости от типа загружаемых данных имеется 4 типа загрузки данных в SCS:

Offline Download

На время загрузки базы данных контроллер останавливается.

Online Change Download

Загрузка изменённой прикладной программы без остановки контроллера.

Master Database Offline Download

Загрузка главной базы данных после замены модуля процессора.

IOM Download

Загрузка конфигурации модуля ввода-вывода после его замены.

Конфигурация базы данных проекта SCS

В станции инженера безопасности (SENG) в папке проекта среды разработки сохраняются две базы данных:

  • Рабочая база данных (Work Database)
  • Главная база данных (Master Database)

Третья база данных (SCS Database) находится в самой станции безопасности SCS.

Инженер вносит изменения в рабочую базу данных. При загрузке данных в SCS рабочая база данных автоматически копируется в главную базу данных. Таким образом, главная база данных совпадает с базой данных SCS. Скопировать базу данных SCS из контроллера в SENG нельзя. Если у вас нет копии главной базы, то восстановить утерянную базу данных SCS невозможно.

Уровни авторизации доступа к SCS

Online Level

Авторизация доступа без права остановки контроллера:

Уровень 2 : максимально безопасный уровень;

Уровень 1 : временный уровень для технического обслуживания и внесения изменений в приложение online (без остановки контроллера).

Offline Level

Авторизация доступа с правом остановки контроллера:
Уровень 0 : неограниченный (небезопасный) доступ к SCS.

Изменение уровня авторизации доступа к SCS

  • С паролем или с помощью аппаратного ключа: 2 ► 1, 2 ► 0, 1 ► 0;
  • Без пароля или с помощью ключа: 1 ► 2;
  • Перезапуск SCS: 0 ► 2.

Тестирование приложения

Границы разных типов тестирования

Отрицательная логика – ноль вместо единицы

ProSafe-RS поддерживает два типа приложений:

    Приложение с комбинацией нормально закрытых (NC) входов и выходов, которые отключают объект управления размыканием контактов (De-energize-to-Safe). При потере питания ПАЗ переводит процесс в безопасное состояние.

Пример: При нажатии на красную кнопку закрывается отсечной клапан.

Приложение с комбинацией нормально открытых (NO) входов и выходов, которые отключают объект управления замыканием контактов (Energize-to-Safe). При потере питания ПАЗ не переводит процесс в безопасное состояние.

Пример: При срабатывании пожарного извещателя включается звуковая сигнализация. Рекомендуется использовать в одном контроллере только один тип приложений. Клапаны аварийного останова процесса (клапаны ПАЗ) выполняют свою основную задачу по сигналу FALSE.

HART коммуникация

Модуль ввода-вывода с поддержкой HART протокола одновременно передаёт аналоговый процессный сигнал и цифровые данные по одному и тому же физическому каналу (токовой петле).

Датчики и исполнительные устройства с поддержкой HART протокола обмениваются данными с системой управления активами КИПиА (Plant Resource Manager, PRM).

Специальный плагин для PRM позволяет выполнять PST тест (Partial Stroke Test) для позиционеров клапанов (которые поддерживают функцию PST).

В каждом модуле имеется только один HART модем, поэтому каналы конкурируют между собой за передачу данных по HART протоколу.

Контроль обрыва сигнальных кабелей

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

Для токовых входов-выходов 4-20 мА обрыв линии диагностируется по отсутствию тока (0 мА).

Для дискретного входа параллельно контакту устанавливается резистор номиналом 10 кОм, а последовательно с контактом — резистор номиналом 1.5 кОм.

Для контроля обрыва цепи дискретного выхода (маячки или пищалки) тоже может понадобиться дополнительный резистор в поле номиналом 1.5 кОм.

Реле безопасности и искробезопасные барьеры могут быть прозрачны для функции контроля обрыва линии.

Вопрос

К первому дискретному выходу через реле безопасности (Safety Relay) подключен ревун, а ко второму — клапан аварийного останова процесса (Emergency Shutdown Valve). Почему в первом случае запроектирован контроль линии, а во втором случае – нет?

Ответ

Потому что при обрыве линии клапан аварийного останова выполнит свою основную задачу — закроет трубу, а ревун не выполнит – не заревёт.

0 0 голоса
Рейтинг статьи
Ссылка на основную публикацию
ВсеИнструменты