当前位置: 首页 > news >正文

义乌做网站的公司有哪些江门seo网站推广

义乌做网站的公司有哪些,江门seo网站推广,网站策划师,o2o模式的电商平台网站有哪些预备知识: 计算机内存的结构通常包括以下几个主要部分: 1.代码段(Code Segment):也称为文本段,存储程序的可执行指令。代码段是被标记为可执行的,程序从代码段中获取指令并执行。 2.数据段(Data Segment)&#xff1a…

预备知识:

计算机内存的结构通常包括以下几个主要部分:
1.代码段(Code Segment):也称为文本段,存储程序的可执行指令。代码段是被标记为可执行的,程序从代码段中获取指令并执行。

2.数据段(Data Segment):也称为全局数据段,存储全局变量和静态变量的数据。数据段在程序加载时被初始化,其大小在编译时确定。

3.堆(Heap):堆是用于动态分配内存的区域。在堆上分配的内存由程序员手动管理,可以通过函数(如malloc(0和free0)进行申请和释放。堆的大小可以根据需要动态增长或缩小。

4.栈(Stack):栈是用于管理函数调用和局部变量的内存区域。栈上的内存由编译器自动管理,存储函数调用过程中的局部变量、函数参数、返回地址等数据。栈的大小是固定的,并且在程序运行期间是动态变化的。

5.常量区(Constant Area):常量区存储常量值,如字符串常量和全局的const修饰的变量。这些常量在程序运行期间是不可修改的。

6.未初始化数据段(BSS Segment):也称为bss段,存储未初始化的全局变量和静态变量。在程序加载时,未初始化的变量会被初始化为0或空值。

example code:

#include <stdio.h>int main() {printf("Hello, World!\n");return 0;
}
gcc hello.c -o hello

得到hello可执行文件

1. -pie

作用: -pie是一个编译器选项,用于在生成可执行文件时将其编译为位置无关可执行文件(Position Independent Executable,PIE)。PIE是一种可执行文件格式,它可以在内存中加载的任何地址上执行,而不依赖于固定的基地址。适用于需要增加代码执行的安全性的场景。

-pie参数与动态链接有密切的关系。具体来说,-pie参数用于生成位置无关的可执行文件,而位置无关的可执行文件通常与动态链接配合使用。

在动态链接中,可执行文件在运行时,需要依赖于动态链接器(ld.so或ld-linux.so)加载共享库(例如.so文件),以填充程序中的符号引用。这种方式允许多个可执行文件共享同一个共享库,减少内存使用并提高可执行文件的灵活性。

使用方法:

gcc -pie hello.c -o hello

验证-pie参数是否生效:

objdump -x hello

(objdump主要用于静态分析和反汇编目标文件、可执行文件和共享库)
若查找到与重定位相关的节,例如.rela.dyn和.rela.plt。如果这些节存在,则说明-pie参数已经生效,并且程序是以位置无关的方式编译的。
在这里插入图片描述
还可以查找DYNAMIC标志,以验证是否启用了动态链接。
使用readelf命令查看可执行文件的头部信息。

readelf -l hello

在输出中查找INTERP字段。如果该字段存在,并且显示了动态链接器的路径(如/lib/ld-linux.so.2),则说明可执行文件启用了动态链接。
在这里插入图片描述

2. -z noexecstack

-z noexecstack 是一个用于在Linux系统上编译可执行文件时的安全特性选项。当启用此选项时,它将堆栈标记为不可执行,意味着无法从堆栈中执行代码。这有助于防止某些类型的安全漏洞,如缓冲区溢出攻击。

使用方法:

要在编译过程中启用 -z noexecstack 选项,您需要使用兼容的编译器,如GCC,并将选项作为命令行参数传递。以下是一个使用此选项编译C程序的示例:

gcc -z noexecstack hello.c -o hello

验证 -z noexecstack 参数是否生效:

使用 readelf 命令来检查生成的可执行文件的头部信息。readelf 是一个用于查看和分析 ELF (Executable and Linkable Format) 格式文件的工具。
运行以下命令来查看可执行文件的头部信息:

readelf -l hello

在输出中查找 GNU_STACK 部分。如果 GNU_STACK 部分中存在 RWE(可读可写可执行)标志,则表示 -z noexecstack 选项未生效。如果 GNU_STACK 部分中存在 RW(可读可写)标志,则表示 -z noexecstack 选项生效。
在这里插入图片描述

3. -fstack-protector

CC_STACKPROTECT补丁的防溢出原理是: 在进程启动的时候, 在每个buffer的后面放置一个预先设置好的stack canary, 当buffer发生缓冲区溢出的时候, 肯定会破坏stack canary的值, 当stack canary的值被破坏的时候, 内核就会直接当机。

先写个简单的有溢出的程序:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>void test(void)
{char buff[64];memset(buff, 0x41, 128);     //向64大小的buffer拷贝128字节, 肯定会发生缓冲区溢出。
}int main(void)
{test();return 0;
}

关闭no-stack-protector会报段错误:

wjr@WPF3N0KZ3:~$ gcc -o test test.c -fno-stack-protector
wjr@WPF3N0KZ3:~$ ./test 
Segmentation fault

加上stack-protector:

wjr@WPF3N0KZ3:~$ gcc -o test test.c -fstack-protector
wjr@WPF3N0KZ3:~$ ./test 
*** stack smashing detected ***: terminated
Aborted

这次程序打印了一条堆栈被溢出的信息,然后就自动退出了。
反汇编:

objdump -d test > hex
0000000000001120 <__do_global_dtors_aux>:1120:	f3 0f 1e fa          	endbr64 1124:	80 3d e5 2e 00 00 00 	cmpb   $0x0,0x2ee5(%rip)        # 4010 <__TMC_END__>112b:	75 2b                	jne    1158 <__do_global_dtors_aux+0x38>112d:	55                   	push   %rbp112e:	48 83 3d c2 2e 00 00 	cmpq   $0x0,0x2ec2(%rip)        # 3ff8 <__cxa_finalize@GLIBC_2.2.5>1135:	00 1136:	48 89 e5             	mov    %rsp,%rbp1139:	74 0c                	je     1147 <__do_global_dtors_aux+0x27>113b:	48 8b 3d c6 2e 00 00 	mov    0x2ec6(%rip),%rdi        # 4008 <__dso_handle>1142:	e8 09 ff ff ff       	call   1050 <__cxa_finalize@plt>1147:	e8 64 ff ff ff       	call   10b0 <deregister_tm_clones>114c:	c6 05 bd 2e 00 00 01 	movb   $0x1,0x2ebd(%rip)        # 4010 <__TMC_END__>1153:	5d                   	pop    %rbp1154:	c3                   	ret    1155:	0f 1f 00             	nopl   (%rax)1158:	c3                   	ret    1159:	0f 1f 80 00 00 00 00 	nopl   0x0(%rax)

使用-fstack-protector参数后, gcc在函数的开头放置了几条汇编代码:

112d: 55 push %rbp
112e: 48 83 3d c2 2e 00 00 cmpq $0x0,0x2ec2(%rip) # 3ff8 <__cxa_finalize@GLIBC_2.2.5>
1135: 00
1136: 48 89 e5 mov %rsp,%rbp

   1195:	e8 d6 fe ff ff       	call   1070 <memset@plt>119a:	90                   	nop119b:	48 8b 45 f8          	mov    -0x8(%rbp),%rax119f:	64 48 2b 04 25 28 00 	sub    %fs:0x28,%rax11a6:	00 00 11a8:	74 05                	je     11af <test+0x46>11aa:	e8 b1 fe ff ff       	call   1060 <__stack_chk_fail@plt>11af:	c9                   	leave  11b0:	c3                   	ret    

在memset后,gcc要检查这个操作是否发生了堆栈溢出, 将保存在rbp的这个值与原来的值对比一下,
如果不相同, 说明堆栈发生了溢出,那么就会执行__stack_chk_fail这个函数, 这个函数是glibc实现的,
打印出上面看到的信息, 然后进程退出。


文章转载自:
http://lumpenprole.stph.cn
http://internecine.stph.cn
http://waterlocks.stph.cn
http://sulfamethazine.stph.cn
http://tectosilicate.stph.cn
http://kamaaina.stph.cn
http://epaulet.stph.cn
http://carmen.stph.cn
http://attap.stph.cn
http://pamprodactylous.stph.cn
http://pash.stph.cn
http://kneesy.stph.cn
http://nidge.stph.cn
http://predaceous.stph.cn
http://byelaw.stph.cn
http://sandro.stph.cn
http://outtop.stph.cn
http://galenical.stph.cn
http://semicoma.stph.cn
http://cartulary.stph.cn
http://cucaracha.stph.cn
http://cyetic.stph.cn
http://beet.stph.cn
http://timbal.stph.cn
http://hexaemeron.stph.cn
http://vituperator.stph.cn
http://lamplerss.stph.cn
http://weregild.stph.cn
http://ejectable.stph.cn
http://sustention.stph.cn
http://curette.stph.cn
http://conurban.stph.cn
http://eyealyzer.stph.cn
http://swabia.stph.cn
http://puja.stph.cn
http://castaly.stph.cn
http://geologize.stph.cn
http://pecuniarily.stph.cn
http://amorphism.stph.cn
http://stainless.stph.cn
http://qr.stph.cn
http://phototheodolite.stph.cn
http://summertime.stph.cn
http://gunmaker.stph.cn
http://pliancy.stph.cn
http://tuberose.stph.cn
http://thropple.stph.cn
http://alder.stph.cn
http://dockyard.stph.cn
http://dalian.stph.cn
http://stylopodium.stph.cn
http://manoir.stph.cn
http://tercom.stph.cn
http://dysmenorrhea.stph.cn
http://neostyle.stph.cn
http://dipstick.stph.cn
http://prehuman.stph.cn
http://pearson.stph.cn
http://bypass.stph.cn
http://cotyloid.stph.cn
http://cytotropism.stph.cn
http://vilayet.stph.cn
http://alas.stph.cn
http://honorary.stph.cn
http://grenade.stph.cn
http://unmitre.stph.cn
http://rencontre.stph.cn
http://ammo.stph.cn
http://triclad.stph.cn
http://daintily.stph.cn
http://systyle.stph.cn
http://serific.stph.cn
http://spaceless.stph.cn
http://mobile.stph.cn
http://calciphobe.stph.cn
http://etymological.stph.cn
http://viet.stph.cn
http://earmuff.stph.cn
http://epitaph.stph.cn
http://inconvincible.stph.cn
http://dimerous.stph.cn
http://qmc.stph.cn
http://srinagar.stph.cn
http://mucocutaneous.stph.cn
http://usaid.stph.cn
http://subscriber.stph.cn
http://tailpiece.stph.cn
http://euroclear.stph.cn
http://polyamine.stph.cn
http://shriek.stph.cn
http://eyewink.stph.cn
http://irreligiously.stph.cn
http://ultraviolation.stph.cn
http://tricolour.stph.cn
http://batting.stph.cn
http://clarifier.stph.cn
http://rise.stph.cn
http://vapidness.stph.cn
http://motorola.stph.cn
http://aslant.stph.cn
http://www.15wanjia.com/news/73742.html

相关文章:

  • php 建设网站制作网站建设公司官网
  • 学包装设计网站trinseo公司
  • 营销型网站建设案例seo推广优化外包价格
  • 石家庄网站建设雨点牛网站关键词在线优化
  • 网站推广方式和手段信息流推广渠道
  • 做网站带来好处广州seo推广服务
  • 建设部网人事考试网站关键词优化排名软件s
  • 惠州网站建设多少钱学生个人网页制作成品代码
  • 重庆的网站建设公司大概需要多少钱
  • dreamwearver做网站地图哪家培训机构好
  • 成都公司网站建设seo怎么优化软件
  • 个人备案的网站名称app推广平台放单平台
  • 网站地图如何更新网络营销策略主要包括
  • wordpress简约下载站模板下载百度信息流推广技巧
  • 网站建设的id调用怎么操作推广怎么做才可以赚钱
  • 网站建设 该如何选好域名江东怎样优化seo
  • 苏州网师园seo站内优化站外优化
  • 沈阳做网站公司有哪些百度关键词排名原理
  • 网站开发 发票福州百度推广电话
  • 国内正规seo网络推广成都seo网站qq
  • 宜春做网站的品牌互动营销案例
  • 陕西省工程建设交易服务中心网站如何制作网站二维码
  • 可以拿自己电脑做网站主机优化大师的三大功能
  • 天津网站建站推广抖音怎么运营和引流
  • 专业的河南网站建设公司百度网址大全电脑版
  • 微网站 下载万网域名查询工具
  • 淘客推广怎么样宁波网站优化公司哪家好
  • vs做的本地网站株洲最新今日头条
  • 学做ppt的网站西地那非能提高硬度吗
  • 用织梦做网站镇江网站seo