информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetСетевые кракеры и правда о деле ЛевинаСтрашный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 700 с лишним git-серверов пострадало... 
 От повторного пришествия Шаи-Хулуда... 
 Крупный сбой Azure и других сервисов... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Искодник C++, а ты компилируешь его как C 06.03.03 16:08  Число просмотров: 1309
Автор: leo <Леонид Юрьев> Статус: Elderman
<"чистая" ссылка>
<programming>
Непонятки с VC6 06.03.03 15:54  
Автор: ?? Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Проблема такая в общем
Есть пример на vc (из книжки нэббета - пример создания процесса - 6.2)
Пытаюсь откомпилить его в vc6....
Сообщения об ошибках....

Вот кусок кода

IO_STATUS_BLOCK iosb;
USER_STACK stack = {0};
OBJECT_ATTRIBUTES oa = {sizeof oa,0,name,OBJ_CASE_INSENSITIVE};
NtOpenFile(&hFile,FILE_EXECUTE | SYNCHRONIZE,&oa,&iosb,FILE_SHARE_READ,FILE_SYNCHRONOUS_IO_NONALERT);
oa.ObjectName = 0;
NtCreateSection(&hSection,SECTION_ALL_ACCESS,&oa,0,PAGE_EXECUTE,0x01000000,hFile);
NtClose(hFile);
NtCreateProcess(&hProcess,PROCESS_ALL_ACCESS,&oa,NtCurrentProcess(),TRUE,hSection,0,0);
SECTION_IMAGE_INFORMATION sii;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^вот это вот ЗДЕСЬ не нравится компилятору
NtQuerySection(hSection, SectionImageInformation,&sii,sizeof sii,0);
NtClose(hSection);

а далее компилящийся вариант того же самого,только sii раньше разместил

SECTION_IMAGE_INFORMATION sii;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^вот это вот в таком месте программы нормально компилится
IO_STATUS_BLOCK iosb;
USER_STACK stack = {0};
OBJECT_ATTRIBUTES oa = {sizeof oa,0,name,OBJ_CASE_INSENSITIVE};
NtOpenFile(&hFile,FILE_EXECUTE | SYNCHRONIZE,&oa,&iosb,FILE_SHARE_READ,FILE_SYNCHRONOUS_IO_NONALERT);
oa.ObjectName = 0;
NtCreateSection(&hSection,SECTION_ALL_ACCESS,&oa,0,PAGE_EXECUTE,0x01000000,hFile);
NtClose(hFile);
NtCreateProcess(&hProcess,PROCESS_ALL_ACCESS,&oa,NtCurrentProcess(),TRUE,hSection,0,0);
NtQuerySection(hSection, SectionImageInformation,&sii,sizeof sii,0);
NtClose(hSection);

Так вот собсна вопрос - почему приходится описание переменных вначале проги делать - иначе они не понимаются при компиляции....
Пример собирал в ддк 2000 - Free Build Environment и далее в нужном каталоге запускал nmake
Искодник C++, а ты компилируешь его как C 06.03.03 16:08  
Автор: leo <Леонид Юрьев> Статус: Elderman
<"чистая" ссылка>
Искодник C++, а ты компилируешь его как C 08.03.03 08:12  
Автор: ?? . Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Что означает запись:

stack.ExpandableStackBase=PCHAR(stack.ExpandableStackBottom)+x;
^^^^^как это понять?
Что такое PCHAR ? Разве так можно тип использовать ?
Искодник C++, а ты компилируешь его как C 08.03.03 16:33  
Автор: Ktirf <Æ Rusakov> Статус: Elderman
<"чистая" ссылка>
> Что означает запись:
>
> stack.ExpandableStackBase=PCHAR(stack.ExpandableStackBottom
> )+x;
> ^^^^^как
> это понять?
> Что такое PCHAR ? Разве так можно тип использовать ?
Приведение типа в С++-стиле. В C++ приведение даже к примитивным типам (не классам) можно записывать а-ля конструирование объекта. Правда, запись char *(stack.ExpandableStackBottom), увы, не работает - нужно пользоваться typedef.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach