分享
 
 
 

使用C++(I386+)编译一个纯二进制文件

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

环境搭建设

在目前,很少有关于这方面太多的资料。因此这也是我下决心来写一些东西的原因,希望这篇文章能对大家有所帮助。在读该篇文章前,你必须有一定的基础。否则,在阅读时会有很大困难,首先你要了解汇编语言及C语言,其次,你要会使用LINUX。

首先我要先介绍一下,所需要的硬件及软件环境。

1、一台INTEL,I386构架的PC机或者更高

2、一份LINUX操作系统,如:红帽子。

3、GNU GCC编译器,这个C编译器通常是LINUX自带的。请用此命令(GCC –VERSION)来检查以下它的版本,我这里显示的是2.7.2.3。也许在你哪里可能显示的不是这个版本,但是我想应该不会有太大的问题。

4、版本为0.97或者更高的NASM。NASM是一个免费的支持便宜多种文件对象格式的汇编编译器,它的语法设计的的很简单,很容易上手。到这里寻找相应的版本http://www.ibiblio.org/pub/Linux/devel/lang/assemblers/

5、一个文本编辑器

安装汇编编译器

把从INTERNET上下载到的文件,在一个适当的目录下解压,输入下列命令:

gunzip nasm-0.97.tar.gz

tar -vxf nasm-0.97.tar

上面的命令会创建一个叫做nasm-0.97的目录,进入该目录我们开始编译这个汇编编译器,输入下列命令:

./configure

make

这样会创建两个可执行文件nasm 和ndisasm.。你可以把这两个文件考备到/usr/bin,这样就可以很容易的来执行该文件了。接下来,你可以把刚才因为编译而创建的目录及目录下所有的文件删除了。经过这些步骤,我们就可以开始进入真正的主题了。

开始编译我们的第一个二进制文件

使用任何一个文本编辑器,创建一个叫TEST.C的文件,然后在输入以下内容:

int main () {

}

然后我们开始编译这个文件。输入以下命令:

gcc -c test.c

ld -o test -Ttext 0x0 -e main test.o

objcopy -R .note -R .comment -S -O binary test test.bin

请注意,这里的test.bin文件是一个二进制机器码的文件,和我们平时在WINDOWS及LINUX下运行的可执行文件不一样。需要把二进制机器码经过一定格式的封装后通过操作系统的装载器装载后才可以在操作系统里运行。可执行文件不是这篇文章的主题,在这里我们就不做讨论了。如果想学破解的朋友,可以在先在二进制机器码文件上下下功夫,相信我这对你以后的一定会有帮助的,好了现在言归正传,开始介绍二进制机器码了。

经过上面的步骤,我们已经创建了一个叫test.bin的二进制机器码文件。我们可以用刚才编译过的ndisasm来看我们的第一个二进制机器码文件。请输入下面的命令:

ndisasm -b 32 test.bin

当你按下回车后,就会在屏幕上输出以下内容:

00000000 55 push ebp

00000001 89E5 mov ebp,esp

00000003 C9 leave

00000004 C3 ret

我们会在屏幕上看到有三列文字,第一列是表示指令在内存中的地址。第二列是指令的二进制码,第三列就是指令的汇编代码。注意指令的汇编代码是和指令的二进制码一一对应的。

你应该注意到,这是一个32位的代码,GNC GCC只能生成32位的代码。因此要运行这个程序也必须在32位的环境中运行。这段代码只是完成了一个住函数的框架,并没有执行任何指令。EBP指针是用来保存函数参数的。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有