Что представляет каждый бит во флагах функции @feat.00?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Что представляет каждый бит во флагах функции @feat.00?

Сообщение Anonymous »

Столкнулись с ошибками SAFESEH при сборке 32-битного exe-файла SAFESEH с небезопасным obj-файлом:

Код: Выделить всё

error LNK2026: module unsafe for SAFESEH image.
Чтобы «исправить» ошибку, объект был перестроен с использованием параметра /safeseh.
MASM
Дальше: объект сборки, созданный с помощью /safeseh, создает это

Код: Выделить всё

COFF SYMBOL TABLE
001 00000011 ABS    notype       Static       | @feat.00
при отсутствии этого параметра отображается

Код: Выделить всё

COFF SYMBOL TABLE
001 00000010 ABS    notype       Static       | @feat.00
Обратите внимание, что единственная разница между ними заключается в том, что бит #0 установлен в 1 для безопасного и 0 для небезопасного режима.
Изображение

Приведенное выше сравнение было получено при сборке этого 32-битного ассемблерного кода с помощью /safeseh включить/выключить:
HelloWorld.asm

Код: Выделить всё

.386
.model flat, stdcall
option casemap :none

includelib libcmt.lib
includelib legacy_stdio_definitions.lib

printf PROTO NEAR C,:DWORD

.data
HelloWorld db "Hello World!", 0

.code
main PROC NEAR C
INVOKE printf,ADDR HelloWorld
ret
main ENDP
END
Построен с использованием следующих команд:

Код: Выделить всё

C:\masm32>"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvars32.bat"
**********************************************************************
** Visual Studio 2019 Developer Command Prompt v16.11.29
** Copyright (c) 2021 Microsoft Corporation

C:\masm32>ml /c /safeseh HelloWorld.asm
Microsoft (R) Macro Assembler Version 14.37.32822.0
Copyright (C) Microsoft Corporation.  All rights reserved.

Assembling: HelloWorld.asm

C:\masm32>dumpbin /all HelloWorld.obj > safeseh.txt

C:\masm32>ml /c HelloWorld.asm
Microsoft (R) Macro Assembler Version 14.37.32822.0
Copyright (C) Microsoft Corporation.  All rights reserved.

Assembling: HelloWorld.asm

C:\masm32>dumpbin /all HelloWorld.obj > nosafeseh.txt
C++
Создал пример C++ для сравнения со сборкой MASM:

Код: Выделить всё

#include 

int main()
{
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/78211571/what-does-each-bit-in-the-feat-00-feature-flags-represent[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»