《软件开发环境CH》PPT课件

《软件开发环境CH》PPT课件

ID:45574629

大小:340.84 KB

页数:18页

时间:2019-11-15

《软件开发环境CH》PPT课件_第1页
《软件开发环境CH》PPT课件_第2页
《软件开发环境CH》PPT课件_第3页
《软件开发环境CH》PPT课件_第4页
《软件开发环境CH》PPT课件_第5页
资源描述:

《《软件开发环境CH》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、软件开发环境理解指针和强制转换我们最迷惑和没有信心的是c语言的指针和强制转换,何时能转换,怎样的转换是安全的?运用我们之前的学习成果吧。用反汇编分析。请判断这段代码的执行结果shorti;shortj;int*pi;voidmain(intargc,char*argv[]){cout<

2、*)&i;pc=(char*)&i;*pi=0x1234;*ps=0x1234;*pc=0x12}我们想分析如上代码的反汇编,这时,跑了个ebp-14h出来,不理解!这时在猜测、实证的道路上就要考验我们回避问题,迂回解决的处理能力了。如何修改一下,让我们容易理解呢pi=&i;0041138Eleaeax,[ebp-8]00411391movdwordptr[ebp-14h],eaxps=(short*)&i;00411394leaeax,[ebp-8]00411397movdwordptr[ebp-20h],eaxpc=(char*)&i;00411

3、39Aleaeax,[ebp-8]0041139Dmovdwordptr[ebp-2Ch],eaxinti;int*pi;short*ps;char*pc;voidmain(intargc,char*argv[]){pi=&i;ps=(short*)&i;pc=(char*)&i;*pi=0x1234;*ps=0x1234;*pc=0x12}用全局变量,就可以看到我们之前熟悉的形式pi=&i;0041138Emovdwordptr[pi(417148h)],offseti(41714Ch)ps=(short*)&i;00411398movdwordp

4、tr[ps(417144h)],offseti(41714Ch)pc=(char*)&i;004113A2movdwordptr[pc(417140h)],offseti(41714Ch)*pi=0x1234;004113ACmoveax,dwordptr[pi(417148h)]004113B1movdwordptr[eax],1234h*ps=0x1234;004113B7moveax,1234h004113BCmovecx,dwordptr[ps(417144h)]004113C2movwordptr[ecx],ax…现在大家对movdword

5、ptr[pi(417148h)],offseti(41714Ch)中的offset不理解,那么我们去掉符号显示得到如下结果pi=&i;0041138Emovdwordptrds:[00417148h],41714Chps=(short*)&i;00411398movdwordptrds:[00417144h],41714Chpc=(char*)&i;004113A2movdwordptrds:[00417140h],41714Ch*pi=0x1234;004113ACmoveax,dwordptrds:[00417148h]004113B1movdw

6、ordptr[eax],1234h*ps=0x1234;004113B7moveax,1234h004113BCmovecx,dwordptrds:[00417144h]004113C2movwordptr[ecx],axpi=&i;0041138Emovdwordptrds:[00417148h],41714Chps=(short*)&i;00411398movdwordptrds:[00417144h],41714Chpc=(char*)&i;004113A2movdwordptrds:[00417140h],41714Ch注意以上三句话,显示了

7、2中强制转换指针的情况,第一种没有强制转换。但三句话中除了被赋值的地址不同,其余一摸样。并没和类型转换相关的指令,就是将41714c这个地址值赋值给了三个不同的地址。我们惊讶地发现,其实没有所谓的“类型强制指令或相关信息”,那强制转换怎么就复杂而不安全了?我们需要实证如下信息,请用调试器证明1.41714ch是i的地址;2.Mov指令中方括号中那三个地址分别是pi,ps,pc的地址其实也好理解,对指针的强制转换,不过是将地址这个整数赋值给一个指针变量,地址是32位整数,指针变量时32位整数,怎么也不会有任何问题的。指针是拿来读取该地址或写该地址的,那

8、么危险是否发生在这个地方?还有,既然是类型强制转换,这个类型信息又在哪里呢?请看那三个赋值语句的反汇编*pi

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。