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")