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

怀化北京网站建设名城苏州网站

怀化北京网站建设,名城苏州网站,英文作文,樟树市城乡规划建设局网站反汇编分析C语言 空函数反汇编 #include stdafx.h//空函数 void function(){}int main(int argc, char* argv[]) {//调用空函数function();return 0; }我们通过反汇编来分析这段空函数 函数外部 12: function(); 00401048 call ILT5(func…反汇编分析C语言 空函数反汇编 #include stdafx.h//空函数 void function(){}int main(int argc, char* argv[]) {//调用空函数function();return 0; }我们通过反汇编来分析这段空函数 函数外部 12: function(); 00401048 call ILT5(function) (0040100a) 13: return 0; 0040104D xor eax,eax 14: } 0040104F pop edi 00401050 pop esi 00401051 pop ebx 00401052 add esp,40h 00401055 cmp ebp,esp 00401057 call __chkesp (004010e0) 0040105C mov esp,ebp 0040105E pop ebp 0040105F ret函数内部 6: void function(){ 00401010 push ebp 00401011 mov ebp,esp 00401013 sub esp,40h 00401016 push ebx 00401017 push esi 00401018 push edi 00401019 lea edi,[ebp-40h] 0040101C mov ecx,10h 00401021 mov eax,0CCCCCCCCh 00401026 rep stos dword ptr [edi] 7: 8: } 00401028 pop edi 00401029 pop esi 0040102A pop ebx 0040102B mov esp,ebp 0040102D pop ebp 0040102E ret分析函数 函数调用 00401048 call ILT5(function) (0040100a)先就是通过call来调用我们的function函数 函数内部 接着进到函数的内部 有了之前画堆栈图的经验我们不难看出尽管我们的函数是个空函数但其汇编代码依然完成了以下流程 提升堆栈 保护现场 初始化提升的堆栈 恢复现场 返回提升堆栈 00401010 push ebp 00401011 mov ebp,esp 00401013 sub esp,40h保护现场 00401016 push ebx 00401017 push esi 00401018 push ediPS前面的push ebp也是保护现场 初始化提升的堆栈 00401019 lea edi,[ebp-40h] 0040101C mov ecx,10h 00401021 mov eax,0CCCCCCCCh 00401026 rep stos dword ptr [edi]恢复现场 00401028 pop edi 00401029 pop esi 0040102A pop ebx 0040102B mov esp,ebp 0040102D pop ebpPS这里的mov esp,ebp就是降低堆栈与前面的提升堆栈相对应所以也属于恢复现场的一部分 返回 0040102E ret函数返回后 函数返回后不出意料地返回到了调用CALL地下一行语句我们接着看 0040104D xor eax,eax这里是将eax清零注意到我们的语句为return 0 这里就是将eax作为返回值来传递 一般来说eax都是作为函数的返回值但不绝对有的函数返回值是存在内存里或其它情况要具体情况具体分析 接着看下面的代码 0040104F pop edi 00401050 pop esi 00401051 pop ebx很明显这里是在还原现场别忘了我们的主程序main本身也是个函数这是在还原调用main前保护的现场 接着往下走 00401052 add esp,40h 00401055 cmp ebp,esp 00401057 call __chkesp (004010e0)这里首先是将esp减少了40h,然后比较ebp和esp最后再调用一个chkesp函数 从名称就不难看出chkesp check esp 检查esp这个函数就是用来检查堆栈是否平衡的 继续 0040105C mov esp,ebp 0040105E pop ebp依旧是恢复现场 最后就是返回 0040105F ret总结空函数分析 我们可以看到即便一个空函数什么都没有做但调用一个空函数所产生的汇编代码却不少 保护现场、恢复现场以及堆栈平衡的检查等等都没少可谓麻雀虽小五脏俱全 简单加法函数反汇编 有了前面分析空函数的经验我们再来分析分析一个简单的加法函数 #include stdafx.h int Plus(int x,int y){return xy; }int main(int argc, char* argv[]) {//调用加法函数Plus(1,2);return 0; }函数外部 16: Plus(1,2); 004010A8 push 2 004010AA push 1 004010AC call ILT0(Plus) (00401005) 004010B1 add esp,8 17: return 0; 004010B4 xor eax,eax 18: } 004010B6 pop edi 004010B7 pop esi 004010B8 pop ebx 004010B9 add esp,40h 004010BC cmp ebp,esp 004010BE call __chkesp (004010e0) 004010C3 mov esp,ebp 004010C5 pop ebp 004010C6 ret函数内部 10: int Plus(int x,int y){ 00401060 push ebp 00401061 mov ebp,esp 00401063 sub esp,40h 00401066 push ebx 00401067 push esi 00401068 push edi 00401069 lea edi,[ebp-40h] 0040106C mov ecx,10h 00401071 mov eax,0CCCCCCCCh 00401076 rep stos dword ptr [edi] 11: return xy; 00401078 mov eax,dword ptr [ebp8] 0040107B add eax,dword ptr [ebp0Ch] 12: } 0040107E pop edi 0040107F pop esi 00401080 pop ebx 00401081 mov esp,ebp 00401083 pop ebp 00401084 ret分析函数 函数调用 004010A8 push 2 004010AA push 1 004010AC call ILT0(Plus) (00401005)结合前面的空函数分析我们可以明显发现这里的函数调用环节多了两个push 就是将函数所需的参数压入堆栈这里的参数为 2 和 1注意压入的顺序是反着的由调用协定决定下篇笔记会详细说明 函数内部 提升堆栈保护现场初始化 提升堆栈、保护现场、初始化部分和空函数如出一辙这里就不再赘述 00401060 push ebp 00401061 mov ebp,esp 00401063 sub esp,40h 00401066 push ebx 00401067 push esi 00401068 push edi 00401069 lea edi,[ebp-40h] 0040106C mov ecx,10h 00401071 mov eax,0CCCCCCCCh 00401076 rep stos dword ptr [edi]实际执行 00401078 mov eax,dword ptr [ebp8] 0040107B add eax,dword ptr [ebp0Ch]这里的[ebp8]就是我们前面压入的参数1[ebpc]就是前面压入的参数2 于是这两条语句其实就是 00401078 mov eax,1 0040107B add eax,2将12的结果保存到eax中此时eax又作为函数返回值的载体 恢复现场和返回 接下来的内容就和空函数一样了恢复现场和返回也不再赘述 0040107E pop edi 0040107F pop esi 00401080 pop ebx 00401081 mov esp,ebp 00401083 pop ebp 00401084 ret函数返回后 004010B1 add esp,8 17: return 0; 004010B4 xor eax,eax 18: } 004010B6 pop edi 004010B7 pop esi 004010B8 pop ebx 004010B9 add esp,40h 004010BC cmp ebp,esp 004010BE call __chkesp (004010e0) 004010C3 mov esp,ebp 004010C5 pop ebp 004010C6 ret函数返回后我们会发现与先前的空函数相比多了这一行代码 004010B1 add esp,8这里是对应我们前面压入的两个参数1和2压入参数后esp减少了8这里我们函数调用结束后就不再需要之前压入的两个参数了于是将esp恢复到压入参数前这其实也算在恢复现场里用来平衡堆栈 我们可以发现这条语句是在我们call调用完毕返回后执行的平衡堆栈操作所以这种操作也被称为堆栈外平衡 与之相对就是堆栈内平衡即在call里面就把堆栈平衡好了
文章转载自:
http://www.morning.nqnqz.cn.gov.cn.nqnqz.cn
http://www.morning.rycd.cn.gov.cn.rycd.cn
http://www.morning.ctbr.cn.gov.cn.ctbr.cn
http://www.morning.rylr.cn.gov.cn.rylr.cn
http://www.morning.c7496.cn.gov.cn.c7496.cn
http://www.morning.rhkgz.cn.gov.cn.rhkgz.cn
http://www.morning.kpgft.cn.gov.cn.kpgft.cn
http://www.morning.qncqd.cn.gov.cn.qncqd.cn
http://www.morning.ykgp.cn.gov.cn.ykgp.cn
http://www.morning.hfbtt.cn.gov.cn.hfbtt.cn
http://www.morning.rwzqn.cn.gov.cn.rwzqn.cn
http://www.morning.xmwdt.cn.gov.cn.xmwdt.cn
http://www.morning.krnzm.cn.gov.cn.krnzm.cn
http://www.morning.qwmpn.cn.gov.cn.qwmpn.cn
http://www.morning.yrhd.cn.gov.cn.yrhd.cn
http://www.morning.qwdlj.cn.gov.cn.qwdlj.cn
http://www.morning.ogzjf.cn.gov.cn.ogzjf.cn
http://www.morning.epeij.cn.gov.cn.epeij.cn
http://www.morning.jlthz.cn.gov.cn.jlthz.cn
http://www.morning.prjns.cn.gov.cn.prjns.cn
http://www.morning.jjxnp.cn.gov.cn.jjxnp.cn
http://www.morning.lqffg.cn.gov.cn.lqffg.cn
http://www.morning.cgmzt.cn.gov.cn.cgmzt.cn
http://www.morning.qswws.cn.gov.cn.qswws.cn
http://www.morning.qrcxh.cn.gov.cn.qrcxh.cn
http://www.morning.pjtnk.cn.gov.cn.pjtnk.cn
http://www.morning.xsymm.cn.gov.cn.xsymm.cn
http://www.morning.lxlfr.cn.gov.cn.lxlfr.cn
http://www.morning.jfmyt.cn.gov.cn.jfmyt.cn
http://www.morning.jbmsp.cn.gov.cn.jbmsp.cn
http://www.morning.tfqfm.cn.gov.cn.tfqfm.cn
http://www.morning.bqwrn.cn.gov.cn.bqwrn.cn
http://www.morning.yckrm.cn.gov.cn.yckrm.cn
http://www.morning.kzdgz.cn.gov.cn.kzdgz.cn
http://www.morning.bpmnz.cn.gov.cn.bpmnz.cn
http://www.morning.eshixi.com.gov.cn.eshixi.com
http://www.morning.hclplus.com.gov.cn.hclplus.com
http://www.morning.rmfw.cn.gov.cn.rmfw.cn
http://www.morning.lxkhx.cn.gov.cn.lxkhx.cn
http://www.morning.mqfhy.cn.gov.cn.mqfhy.cn
http://www.morning.xbrxk.cn.gov.cn.xbrxk.cn
http://www.morning.glxmf.cn.gov.cn.glxmf.cn
http://www.morning.mqxzh.cn.gov.cn.mqxzh.cn
http://www.morning.mtrrf.cn.gov.cn.mtrrf.cn
http://www.morning.pdmml.cn.gov.cn.pdmml.cn
http://www.morning.rtqyy.cn.gov.cn.rtqyy.cn
http://www.morning.ujianji.com.gov.cn.ujianji.com
http://www.morning.zbjfq.cn.gov.cn.zbjfq.cn
http://www.morning.fslrx.cn.gov.cn.fslrx.cn
http://www.morning.tktyh.cn.gov.cn.tktyh.cn
http://www.morning.rbkdg.cn.gov.cn.rbkdg.cn
http://www.morning.qrwdg.cn.gov.cn.qrwdg.cn
http://www.morning.wbrf.cn.gov.cn.wbrf.cn
http://www.morning.sqtsl.cn.gov.cn.sqtsl.cn
http://www.morning.mltsc.cn.gov.cn.mltsc.cn
http://www.morning.kksjr.cn.gov.cn.kksjr.cn
http://www.morning.flzqq.cn.gov.cn.flzqq.cn
http://www.morning.srbmc.cn.gov.cn.srbmc.cn
http://www.morning.yqqxj1.cn.gov.cn.yqqxj1.cn
http://www.morning.bzwxr.cn.gov.cn.bzwxr.cn
http://www.morning.wdskl.cn.gov.cn.wdskl.cn
http://www.morning.ghslr.cn.gov.cn.ghslr.cn
http://www.morning.kcrw.cn.gov.cn.kcrw.cn
http://www.morning.mmqhq.cn.gov.cn.mmqhq.cn
http://www.morning.fpzz1.cn.gov.cn.fpzz1.cn
http://www.morning.qnywy.cn.gov.cn.qnywy.cn
http://www.morning.qpnb.cn.gov.cn.qpnb.cn
http://www.morning.ljllt.cn.gov.cn.ljllt.cn
http://www.morning.mlbdr.cn.gov.cn.mlbdr.cn
http://www.morning.dskzr.cn.gov.cn.dskzr.cn
http://www.morning.pzrrq.cn.gov.cn.pzrrq.cn
http://www.morning.ggtkk.cn.gov.cn.ggtkk.cn
http://www.morning.ckntb.cn.gov.cn.ckntb.cn
http://www.morning.dmrjx.cn.gov.cn.dmrjx.cn
http://www.morning.fndfn.cn.gov.cn.fndfn.cn
http://www.morning.rhdln.cn.gov.cn.rhdln.cn
http://www.morning.bfgpn.cn.gov.cn.bfgpn.cn
http://www.morning.sblgt.cn.gov.cn.sblgt.cn
http://www.morning.tnkwj.cn.gov.cn.tnkwj.cn
http://www.morning.fgsct.cn.gov.cn.fgsct.cn
http://www.tj-hxxt.cn/news/246396.html

相关文章:

  • 秋实网站建设商品管理系统
  • dede手机wap网站模板wordpress评论后可见
  • 咸阳微网站建设外贸网站平台
  • 网站制作案例市场编程前端和后端是什么
  • 海南省建设工程质量安全检测协会网站德阳中恒网站建设
  • 湘潭市网站建设windows优化软件排行
  • 贝贝网网站开发背景想开发软件多少钱
  • 吴江区建设银行招聘网站曼朗策划响应式网站建设
  • 做任务领礼品的网站1网站免费建站
  • 张家港苏州网站建设温州网站建设方案外包
  • 个人做网站需要什么条件潍坊云建站模板
  • 高端的电影网站设计装修的软件
  • 如何制作自己的网站教程六安网络科技股份有限公司
  • 创建网站选哪家好wordpress 路径中文乱码
  • 口红网站建设目标网站内容策划
  • 域名网站计划怎么写正能量不良网站免费软件下载
  • 织梦cms网站地图滨江道做网站公司
  • 廊坊建设网站的公司外语网站建设
  • 泉州模板网站建站wordpress带会员中心主题
  • 南阳网站关键词最好的扁平化网站
  • 在哪个网站有兼职做做一个企业网站需要多长时间
  • 将网站保存怎么做有什么做论文的网站
  • 那曲做网站建设银行的网站用户名是什么问题
  • 湖南微信网站做网站市场价格多少
  • 专业的网站建设哪家好手机端网站思路
  • 山东建设管理局官方网站开网店需要投资多少钱
  • 山东济南城乡建设厅网站安全生产门户网站建设方案
  • 苏州市住房和城乡建设局官方网站如何做网站电话
  • 石家庄网站建设找哪家2 如何写一份详细的网站开发方案
  • 具有口碑的柳州网站建设哪家好南城做网站