shellcode笔记(一)环境的基础配置
- 此笔记基于VS平台C/C++高效shellcode编程技术实战课程视频
咳咳,我们先编写一个简单的例子,只写main函数,其他什么都不写(启动调试前,先将“解决方案配置”设置为“Release”)
int main()
{
return 0;
}
查看生成的exe文件大小(抱歉,这里忘了将“解决方案配置”从“Debug”选为“Release”,所以生成的exe文件有点大,设置后在Release文件夹内的exe文件的大小差不多为8KB,注意这里不要查看错了,是在Release文件夹下而不是Debug文件夹下)
从图片中我们可以看出,即便是一个什么功能都没有的功能,但是却有27KB,这是因为在生成exe文件时,要把其他pe格式应该有的部分填进去。所以我们要清除这些额外的代码,方法如下:
1. 修改入口点
方法:在 工程>属性>配置属性>链接器>高级入口点的选项处输入自定义的名字,我这里改成 Rmain, 同样的,在编写的代码中也要将main改成Rmain
int Rmain()
{
return 0;
}
结果:重新生成项目后exe文件的大小变成3KB
2. 关闭缓冲区安全检查
方法:在 工程>属性>配置属性>C/C++>代码生成将“缓冲区安全检查”禁用
结果:重新生成项目后,exe文件的大小变成2.5KB
3.设置工程兼容Windows XP
vs2015可以设置,我用的是2010,这里就不演示了。
4.关闭生成清单
使用peid命令查看生成的exe文件的EP段,发现有三个数据段.text,.rsrc以及.rdata,我们只需要留下.text数据段
目的:去除.rsrc数据段
方法:在 工程>属性>配置属性>链接器>清单文件将“生成清单选项”关掉
5. 关闭调试信息
目的:去除.rdata数据段
方法:在 工程>属性>配置属性>链接器>调试将“生成调试信息”关掉
最后查看重新生成的exe文件的大小
结果挺好的,不错