у меня есть этот простой тестовый код кода:
#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
- .заглушка
- .текст
Сегмент .code не сгенерирован. Я думаю, что я делал это в каком-то предыдущем проекте, я делаю что-то не так?
-- Дальнейшие испытания --
- При дампе файла
.obj
отображается раздел.code
. .stub
показано, что он сбрасывает.exe
или.obj
- удаление
#pragma comment(linker,"/SECTION:.code,ERW")
не помогло - добавление
#pragma comment(linker,"/SECTION:.stub,ERW")
не изменило результат дампа на.exe
,.stub
все еще отображается - изменение имени с
.code
на.somethingelse
тоже не помогло, тот же результат
.code
? Или, возможно, у него есть проверка исполняемых разделов (которые вы устанавливаете с помощью параметра/SECTION
с помощью прагмы, но только для.code
)? - person Some programmer dude   schedule 31.08.2018#pragma comment(linker,"/SECTION:.stub,ERW")
? Разделы.stub
все еще существуют в исполняемом файле? - person Some programmer dude   schedule 31.08.2018#pragma comment(linker,"/SECTION:.code,ERW")
. Заглушка есть, а кода нет. Я даже несколько раз проверял путь, копируя тот, что в выходных данных компиляции, и пытался очистить проект, но ничего не изменилось. - person Luca Reccia   schedule 31.08.2018/MAP
к опции компоновщика, это будет наиболее информативно. однако#pragma code_seg(".code")
работает как исключение - person RbMm   schedule 31.08.2018