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

美丽说网站代码与蘑菇街网站代码是用什么网站语言做的我是做颗粒在什么网站上

美丽说网站代码与蘑菇街网站代码是用什么网站语言做的,我是做颗粒在什么网站上,上海自助建站上海网站建设,南京公司网站设计定制目录 1、概述 2、如何使用IDA打开并查看二进制文件的汇编代码 3、在IDA中找到发生崩溃的那条汇编指令的位置 3.1、如何在IDA中找到发生异常的那条汇编指令 3.2、示例 4、阅读汇编代码上下文需要掌握一定的基础汇编知识 5、最后 VC常用功能开发汇总#xff08;专栏文章列…目录 1、概述 2、如何使用IDA打开并查看二进制文件的汇编代码 3、在IDA中找到发生崩溃的那条汇编指令的位置 3.1、如何在IDA中找到发生异常的那条汇编指令 3.2、示例 4、阅读汇编代码上下文需要掌握一定的基础汇编知识 5、最后 VC常用功能开发汇总专栏文章列表欢迎订阅持续更新...https://blog.csdn.net/chenlycly/article/details/124272585C软件异常排查从入门到精通系列教程专栏文章列表欢迎订阅持续更新...https://blog.csdn.net/chenlycly/article/details/125529931C软件分析工具从入门到精通案例集锦专栏文章正在更新中...https://blog.csdn.net/chenlycly/article/details/131405795C/C基础与进阶专栏文章持续更新中...https://blog.csdn.net/chenlycly/category_11931267.html       在分析C软件异常崩溃时可能需要使用IDA工具去查看exe或dll二进制文件的汇编代码去辅助定位问题。今天我们就来讨论一下使用IDA工具去查看汇编代码相关细节问题。 1、概述 我们使用Windbg打开dump文件分析异常时会先去查看发生崩溃的汇编指令及相关寄存器中的值然后查看异常所在线程的函数调用堆栈必要时查看函数调用堆栈中的函数中的局部变量或者C类对象中的数据成员变量的值去辅助分析。 但在少部分场景下通过上述分析并不能最终定位问题需要使用IDA去查看汇编代码的上下文结合C源代码去做进一步分析的。比如下面的两个场景就需要去查看汇编代码上下文去辅助分析 1Windbg中显示的函数调用堆栈中的C代码行号和最新的代码对不上了 发生异常崩溃的软件版本可能是几个月或者几年之前的Windbg中显示的行号是很早之前的cpp文件代码了最新的cpp文件代码相对这个出问题的版本做了很多修改所以行号和最新的代码完全对不上了。这时候就需要使用IDA去查看发生异常的模块的汇编代码上下文了看看到底是那一行代码引起的一般还是要和最新的代码对比着看看看最新的代码中哪一行代码。 2Windbg中指示的发生崩溃的C代码行上有多个函数调用很难直接判断是哪个函数调用出问题了 Windbg中指示的发生崩溃的C代码行上有多个函数调用比如if语句中有多个条件的组合判断很难直接判断是哪个函数调用出问题了可以查看汇编代码去确定到底是哪个函数调用出的问题比如如下的if条件判断语句 if (pContainer-IsVisible() GetTargetImplPtr()-IsReady() pDataProcImpl-IsBuildFinish) {// 代码省略 } 关于使用IDA查看汇编代码去辅助排查C软件异常的详细理论说明可以参见之前写的一篇文章使用IDA查看汇编代码上下文去辅助排查C软件异常问题https://blog.csdn.net/chenlycly/article/details/128942626https://blog.csdn.net/chenlycly/article/details/128942626 2、如何使用IDA打开并查看二进制文件的汇编代码 IDA安装完成后双击启动程序会弹出如下的提示框 点击“New”即新建一个对象。紧接着弹出让选择要打开的文件 可以找到目标文件的路径打开目标文件即可。也可以点击取消然后直接将文件拖到IDA中。打开文件时会让选择加载文件的方式 对于Windows版本的二进制号文件使用的都是PE文件格式选择默认的PE方式即可。 接下来会弹出是否要加载pdb文件的提示框 选择Yes。此处需要注意一下我们需要事先将pdb文件放置到目标二进制文件的同一级目录中这样IDA在打开二进制文件时就会搜索到对应的pdb文件并加载pdb文件。有了pdb文件中符号IDA打开的汇编代码中就会显示具体函数名和变量标识以及大量注释信息。 打开二进制文件后默认显示的Graph view视图模式显示各个代码模块的关系如下 需要点击右键在弹出的右键菜单中点击Text view视图模式切换到汇编源码模式。 我们可以跳转到指定的函数中点击菜单栏的Jump--Jump o function 弹出包含当前模块所有函数的列表点击窗口下方的Search按钮 直接输入要查看的目标函数的名称搜索到目标函数后双击条目即会跳转到目标函数的汇编代码处 也可以按下快捷键g直接跳转到指定地址的汇编代码行 3、在IDA中找到发生崩溃的那条汇编指令的位置 在Windbg中可以看到发生异常的那条汇编指令以及这条汇编指令所在的模块然后找到模块对应的二进制文件用IDA打开二进制文件就可以查看模块的汇编代码了。 3.1、如何在IDA中找到发生异常的那条汇编指令 Windbg中可以看到发生异常汇编指令的地址代码段地址通过该指令的地址可以到IDA打开的汇编代码中找到对应的位置然后查看该位置的汇编指令的上下文对照着C源码就可以进一步地去分析问题了。 Windbg中显示的发生异常的汇编指令的地址是主程序运行起来之后的实际地址和IDA中显示的静态默认地址是不同的。主程序启动时会先将其依赖的各个dll模块加载到进程空间中给各个模块分配代码段地址这样每个模块中的汇编指令就有了运行时的实际代码段地址了。 这个地方需要区分一下代码段地址和数据段地址 代码中定义的变量的内存是在数据段内存上分配的变量的内存地址都是数据段的地址。二进制代码汇编代码指令的地址是代码段地址。 发生异常的汇编指令在实际运行的地址虽然和IDA中显示的静态默认地址是不同的但该条汇编指令相对于所在模块的位置是固定的即汇编指令相对于所在模块的地址偏移始终是固定的。可以在Windbg中计算出发生异常的那条汇编指令相对所在模块偏移然后将这个偏移加上IDA中显示的模块默认起始地址就得出该条汇编指令在IDA中的地址了然后Go到这个地址就可以看到发生崩溃的那条汇编指令了。 3.2、示例 下面我们通过一个具体的实例来讲解如何在IDA打开的模块汇编代码中找到发生异常的那条汇编指令。我故意写了一段会引发异常的测试代码如下 SHELLEXECUTEINFO* pInfo NULL;CString strTip; strTip.Format(_T(cbSize: %d), pInfo-cbSize );::MessageBox( NULL, strTip, _T(提示), MB_OK); 代码中定义了一个结构体指针变量pInfo初始化为空NULL然后没有给该指针赋一个有效的结构体地址直接用这个空指针去访问结构体中的成员cbSize所以访问了一个地址很小的内存所以触发了内存访问违例。 程序运行上述代码时会产生崩溃生成dump文件。用Windbg打开dump文件并在Windbg中配置程序的pdb文件路径打开后即看到发生异常崩溃的那条汇编指令及当时各个寄存器中的值并看到发生的异常Code码及异常类型如下所示 首先从上图可以看出发生的是Access violation内存访问违例的异常。然后看到发生异常的那条汇编指令mov ecx,dword ptr [eax]指令的地址为0x00eb3787并且这条指令位于TestDlg模块的函数CTestDlgDlg::OnBnClickedButton1中。 接下来我们就来演示一下如何在IDA中找到发生异常的这条汇编指令的位置。发生异常的汇编指令位于TestDlg模块中于是用IDA打开TestDlg.exe二进制文件看到该模块的汇编代码。我们先计算出发生异常的汇编指令相对其所在模块的偏移。发生异常的汇编指令的地址为0x00eb3787用lm命令查看其所在模块TestDlg的起始地址代码段地址如下 TestDlg模块的起始地址为0x00ea0000所以发生异常的那条汇编指令相对所在模块TestDlg起始地址的偏移为 0x00eb3787 - 0x00ea0000 然后我们到IDA中将鼠标拉到汇编代码的最上面看IDA显示的TestDlg模块静态默认起始地址如下 TestDlg模块静态默认起始地址为0x400000该模块中所有汇编指令的地址都是在此基础值上展开的。所以发生异常的那条汇编指令在IDA中显示的地址为 0x00eb3787 - 0x00ea0000 0x00400000 0x00413787 然后按下g快捷键在弹出的搜索框中输入413787点击确定就Go到发生异常的那条汇编指令的位置了如下 这样我们就能查看这条发生异常的汇编指令的上下文结合IDA中的注释及C源码就能对问题进行进一步分析了。 4、阅读汇编代码上下文需要掌握一定的基础汇编知识 要去阅读汇编代码的上下文是需要掌握一定的汇编基础知识的比如了解一些常用寄存器的用途、熟悉一些常用的汇编指令、了解函数调用时的栈分布、了解C虚函数调用的汇编代码实现虚函数调用时的二次寻址等。这里简单的提一下常用寄存器的用途 在X86汇编指令中EAX主要用于存放函数调用的返回值在调用C成员函数时会使用ECX寄存器用来传递C对象地址ESI是源地址寄存器EDI是目的地址寄存器主要用于内存拷贝的串操作指令中比如memcpy的汇编实现中。 关于分析C软件异常需要掌握的基础汇编知识这里就不再赘述了可以参见我之前写的文章 分析C软件异常需要掌握的汇编知识汇总https://blog.csdn.net/chenlycly/article/details/124758670https://blog.csdn.net/chenlycly/article/details/124758670 5、最后 直接去阅读汇编代码难度是比较大的除非有很强的汇编语言功底与反汇编的能力。在实际工作中我们一般是将汇编代码与C代码对照着阅读同时结合着汇编代码上下文中的注释去辅助查看这比单纯地去直接阅读汇编代码要容易很多。此外编译器在Release下会对代码进行大量的优化被优化的C代码很难和优化后生成的汇编代码完全一一对应起来这点需要注意一下。 我们在分析C软件异常问题时只是简单地使用IDA工具用IDA打开exe或dll二进制文件查看文件中的汇编代码IDA会将二进制文件中的二进制机器码反汇编出汇编代码以辅助分析问题。本文并没有详细讲述IDA工具的功能感兴趣的朋友可以去阅读一下IDA经典书籍《IDA Pro权威指南》。 二进制机器码汇编代码等价于二进制机器码汇编代码是二进制机器码的助记符汇编代码的可读性很强。在CPU中执行的是二进制机器码等同于执行的就是汇编代码通过查看汇编代码可以看出程序的具体执行细节。
http://www.dnsts.com.cn/news/151537.html

相关文章:

  • wordpress网站正在建设中贵州公司网站建设比选公示
  • 视频网站 外链手机网站生成app
  • 工程门户网站建设浏览器主页被篡改2345
  • 找人做网站上线后被投诉侵权亿码酷网站建设
  • 网站上的充值链接怎么做崇州市建设局网站
  • 邯郸网站建设服务报价有限公司简介
  • 泰安网站建设公司带深圳保障性住房和公租房区别
  • 网站建设佰金手指科捷一小程序开发官网
  • 专业网站是什么如何联系网站管理员
  • 成都网站建设cdcidi宜兴专业做网站公司
  • 网站制作哪个好薇商务网站规划与建设心得
  • 收费的网站怎么做的asp开源企业网站教程
  • 阳朔县建设规划局网站用vs2012做网站
  • 天津手机网站开发网络优化工具
  • 网站上做网上支付功能广州市萝岗区做网站设计服务
  • 龙岗同乐社区做网站如何查询网站建立时间
  • 网站中怎么做图片的变换制作网页小程序
  • 查询网站备案进度查询网站建设经典文章
  • 有了php源码怎么做网站创建一个网站的项目体现项目完成速度因素的
  • 广州市网站公司网站开发项目计划书
  • 中山专业做网站色系网站
  • 柳市建设网站自己能做网站吗
  • 创业给别人做网站怎么样网上购物商城首页
  • 做微商那个网站好常德自助建站seo
  • 做a免费视频在线观看网站事件营销定义
  • 抖音营销网站建设价格wordpress 类似的博客系统
  • 免费软件下载网站入口正能量广州个人网页制作
  • 乐清网站设计制作化妆品网站建设推广方案
  • 外贸网址导航优化设计官方网站
  • 建设网站行业云简述seo对各类网站的作用