【发布时间】:2019-02-06 08:40:06
【问题描述】:
我有这个简单的代码测试代码:
#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
- .text
未生成的 .code 段。我想我曾经在一些以前的项目中这样做过,我做错了什么吗?
-- 进一步测试--
- 转储
.obj文件,显示.code部分。 -
.stub显示倾销.exe或.obj - 删除
#pragma comment(linker,"/SECTION:.code,ERW")无效 - 添加
#pragma comment(linker,"/SECTION:.stub,ERW")并没有改变.exe上的dumpbin 结果,.stub仍然显示 - 将名称从
.code更改为.somethingelse也无效,结果相同
【问题讨论】:
-
你是在转储可执行文件还是目标文件?
-
我正在转储 .exe
-
无论如何都会创建 .stub @Someprogrammerdude
-
很遗憾,我无法进一步帮助您。请编辑您的问题以包含这些实验的结果,希望更有知识的人能够帮助您。
-
将
/MAP添加到链接器选项,这将提供最多信息。但是#pragma code_seg(".code")被排除在外
标签: c header portable-executable segment dumpbin