反汇编定位代码崩溃位置_3

2023-05-16

原帖:http://blog.sina.com.cn/s/blog_141f234870102van8.html


win7+vs2010通过map文件和cod文件找到崩溃的代码行

  (2015-01-11 11:31:04)
转载
  分类: C
用来演示出错的源代码:
#include "stdio.h"
void errorFun(int * p)   
{   
*p=1;   
}   
int main()   
{   
int * p=NULL;   
errorFun(p);   
return 0;   
工程选项设置:
 
编译运行后报错,点击“查看问题详细信息”,看到异常偏移:000113a1
再打开目录下的.map文件,看到一行  Preferred load address is 00400000,表示起始地址是00400000,根据崩溃地址=起始地址+偏移地址,即崩溃地址=00400000+000113a1= 004113a1,通过这个地址找到第一个比这个地址大的一行的前一行,也就是 00411380  ,这个代表出错函数的起始地址,同时可以看到出错函数是 errorFun函数
 0002:00000380       ?errorFun@@YAXPAH@Z        00411380 f   char_demo.obj
 0002:000003c0       _main                      004113c0 f   char_demo.obj
已经定位到出错函数了,下一步精确定位到出错代码行,打开.cod文件,通过搜索" errorFun"找到:
?errorFun@@YAXPAH@Z PROC; errorFun, COMDAT


; 4    : {   


  00000 55 push ebp
  00001 8b ec mov ebp, esp
  00003 81 ec c0 00 00
00 sub esp, 192; 000000c0H
  00009 53 push ebx
  0000a 56 push esi
  0000b 57 push edi
  0000c 8d bd 40 ff ff
ff lea edi, DWORD PTR [ebp-192]
  00012 b9 30 00 00 00 mov ecx, 48; 00000030H
  00017 b8 cc cc cc cc mov eax, -858993460; ccccccccH
  0001c f3 ab rep stosd


; 5    : *p=1;   


  0001e 8b 45 08 mov eax, DWORD PTR _p$[ebp]
  00021c7 00 01 00 00
00 mov DWORD PTR [eax], 1


; 6    : }  
这里的4,5,6代表源代码的行,比如4在源代码中对应"{"
然后根据:崩溃地址-函数起始地址=  004113a1 -00411380= 0x21,在code文件中找到  00021,向前看看到“;       *p=1;     ”,即出错代码行数是第5行,代码是*p=1,至此已经成功找到出错的代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

反汇编定位代码崩溃位置_3 的相关文章

  • if-else语句省略{}时不可以定义变量,否则报错

    public void test 带 时可以定义变量和赋值运算等语句 if true int a 61 0 else int b 61 0 不带 时 xff0c 不能定义变量 if true int a 61 0 else int b 61
  • JDK常用API

    本篇介绍Java基础中常用API使用 xff0c 当然只是简单介绍 xff0c 围绕重要知识点引入 xff0c 巩固开发知识 xff0c 深入了解每个API的使用 xff0c 查看Java API文档是必不可少的 一 java lang包下
  • Android butterknife click事件全部失效问题

    问题 xff1a APP突然所有使用butterknife的 64 onClick方式实现的按钮点击事件均失效 解决 xff1a 查看butterknife源代码的DebouncingOnClickListener类 public abst
  • SSH用getHibernateTemplate()更新需要更新的字段

    转 上一篇文章说了hibernate中可以设置dynamic update 来实现跟新某些字段 但是使用了HibernateTemplate xff0c 调用HibernateTemplate saveOrUpdate 方法却还是全部字段更
  • Cannot create PoolableConnectionFactory (Access denied for user 'root'@'localhost' (using password:

    新下载的项目 xff0c 测试时出现Cannot create PoolableConnectionFactory Access denied for user 39 root 39 64 39 localhost 39 using pas
  • 阿里云部署nginx服务器存储图片

    最近想将本地的代码部署到阿里云上 xff0c 1 首先遇到的一个问题就是nginx服务器上传图片连接失败的问题 因为阿里云使用的不是iptables防火墙 xff0c 而是firewalld防火墙 可以在阿里云中选择自己的实例 xff0c
  • windows系统mysql解压版安装教程

    目录 xff1a 1 下载mysql 5 7 18 winx64 zip压缩包 xff1b 2 解压压缩包 xff1b 3 配置mysql环境变量 xff1b 4 新建my ini文件 xff1b 5 安装mydsql xff1b 6 初始
  • 去哪儿2017校园招聘笔试题

    span class hljs keyword import span java util Scanner span class hljs javadoc filename extension 时间限制 xff1a C C 43 43 语言
  • 刷机镜像

    android设备从硬件到系统的结构 xff1a Bootloader是一个叫uboot的程序 xff0c 其支持非常多的体系结构 uboot编译后会生成uboot bin镜像 xff0c 可以作为bootloader使用 Bootload
  • 日志文件xml

    lt xml version 61 34 1 0 34 encoding 61 34 UTF 8 34 gt lt ConsoleAppender 控制台输出日志 gt lt appender name 61 34 STDOUT 34 cl
  • 软件测试之SDK开发(ios)——Cpp Exception捕获

    ios虽然是用OC语言或Swift语言进行编程 xff0c 但是它同时也支持c 43 43 语法 xff0c 底层的动态库也基本上都是C 43 43 编写的 所以ios在运行的时候 xff0c 可能会抛出C 43 43 异常 xff0c 如
  • SmartChat技术服务支持

    ChatGPT是一项革命性的技术 xff0c 本应用利用该先进的人工智能技术为用户进行聊天和创作 xff0c 帮助用户轻松愉快的解决生活或者工作中的问题 xff0c 为用户带来全新不一样的人工智能体验 主要功能 智能机器人聊天 智能创作 技
  • noVNC安装与使用

    参考文章 https blog csdn net qq 41865652 article details 121766828 参考文章 http www zhumeng org thread 292491 1 1 html https ww
  • ubuntu系统下,下载安装Python程序的方法汇总(wget;apt-get;easy_install;pip)

    1 源码安装 xff1a 已知源码的地址 xff0c 例如 xff1a https www python org ftp python 3 6 1 Python 3 6 1 tgz 这是Python3 6 1的源码地址 xff0c 则可以使
  • iOS获取当前项目的所有类

    获取当前工程下自己创建的所有类 xff08 不包含系统类 xff0c CocosPods类 xff09 import lt objc runtime h gt import lt dlfcn h gt import lt mach o ld
  • android编译排查指南

    1 Can t determine type for tag macro name 参考https blog csdn net weixin 44440669 article details 127753568 进行降级 implement
  • Matlab的autocorr自相关函数

    今天看了一下时间序列模型ARIMA模型 xff0c 在对数据处理的时候 xff0c 需要对其进行平稳性检验 对序列的平稳性的检验有两种检验方法 xff1a 一种是根据时序图和自相关图的特征作出判断的图检验 xff0c 该方法操作简单 xff
  • 模型选择准则之AIC和BIC

    参考文章http blog csdn net lynnucas article details 47947943 转自 xff1a http blog csdn net jteng article details 40823675 此处模型
  • 最小二乘法曲线拟合原理与实现

    参考文章http blog csdn net jairuschan article details 7517773 最小二乘学习法是对模型的输出和训练集输出的平方误差为最小时的参数进行学习 xff0c 式中之所以加上系数1 2 是为了约去对
  • 浅谈决策树算法以及matlab实现ID3算法

    决策树方法在分类 预测 规则提取等领域有着广泛的应用 在20世纪70年代后期和80年代初期 xff0c 机器学习研究者J Ross Quinilan提出了ID3算法以后 xff0c 决策树在机器学习 数据挖掘领域得到极大的发展 Quinil

随机推荐