节区
MSVC
通过
#pragma code_seg(".节区名")
定义节区留空则为默认节区注意其影响范围为下面所有所以需要在切换节区时使用
#pragma code_seg()
中断这个节区的定义通过
#pragma comment(linker, "/SECTION:.节区名,权限")
定义节区权限权限有
E 执行
R 读取
W 写入
具体操作
1
2
3
4
5
6
7
8
void Fun()
{
char flag[] = "flag{this_is_test}";
printf("%s", flag);
}注意,msvc会将带有可执行权限的第一个节区作为start的位置(可以不是
.text
段)如此处为SMF则它会被当作第一个
gcc
__attribute__((section(".段名")))
即可,权限需要手动更改ld文件或者手动更改IMAGE_SECTION_HEADER SectionHeaders
内的段权限
1
2
3
4
5
6 __attribute__((section(".SMC")))
int func()
{
printf("123456");
return 0;
}
- 标题: 节区
- 作者: runwu2204
- 创建于 : 2024-08-07 00:54:32
- 更新于 : 2024-10-09 00:57:01
- 链接: https://runwu2204.github.io/2024/08/07/开发/C-C++/节区/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论