C программа объявление нового сегмента

У меня есть этот простой код теста кода:

#include <Windows.h>
#include <stdio.h>

/* Declare new sections to store encrypted code and shellcode data */
#pragma section(".code", execute, read, write)
#pragma comment(linker,"/SECTION:.code,ERW")

// From here executable code will go in .code section
#pragma code_seg(".code")


int test()
{
    printf("prova");
    return 0;
}

// .stub SECTION
#pragma section(".stub", execute, read, write)
#pragma code_seg(".stub")

int main(int argc, char *argv[]){
    test(); /* Call function which executes shellcode now that it is decrypted */
    return 0;
}

Может кто-нибудь сказать мне, почему, если я дам этот файл, я получил только этот раздел по умолчанию:

  • .данные
  • .rdata
  • .reloc
  • .rsrc
  • .stub
  • .текст

Сегмент.code не генерируется. Я думаю, что раньше делал это в каком-то предыдущем проекте, я делаю что-то не так?

- Дальнейшие испытания -

  • Демпинг .obj подать .code раздел показан.
  • .stub получает показ демпинг .exe или же .obj
  • удаление #pragma comment(linker,"/SECTION:.code,ERW") не работал
  • добавление #pragma comment(linker,"/SECTION:.stub,ERW") не изменил результат дампа .exe, .stub все еще показывает
  • изменить имя с .code в .somethingelse тоже не сработало, тот же результат

1 ответ

Используя следующие директивы, я смог ограничить весь код / ​​переменную /costant в .code сегмент, который был виден с помощью команды dumbin.

#pragma section(".code", execute, read)
#pragma section(".codedata", read, write)
#pragma comment(linker,"/SECTION:.code,ERW")
#pragma comment(linker,"/SECTION:.codedata,ERW")
#pragma comment(linker, "/MERGE:.codedata=.code")

#pragma code_seg(".code")
#pragma data_seg(".codedata")
#pragma const_seg(".codedata")
Другие вопросы по тегам