反汇编定位release版本程序bug
来源:互联网 发布:sdh网络单元主要有 编辑:程序博客网 时间:2024/05/07 07:24
今天帮忙调试了一个release版本的程序,此程序运行较长一段时间后终于(不挂就不好查了)挂了,系统报错是某处的指令访问了非法地址,显然是内存访问越界(不测试也能猜到,呵呵)。
点击系统报错对话框的cancel,进入vc6的反汇编调试模式,定位到指令所在的汇编代码,将此指令所在函数(函数以0x10对齐,结尾一般都有nop指令)的所有汇编代码拷贝出来分析。搜索cmp指令,运气比较好,汇编代码中的cmp指令中有一些特殊值,搜索特殊值定位到了程序的一个函数(运气又特别好,是定位到了一个函数,而不是多个函数)。
函数太长(500多行),只好继续分析,根据反汇编后的指令位置可以估计大概在此函数的2/3处有问题。结合c++代码和非法指令附近的asm代码,找到一个esp相关的临时量,可以肯定是函数内的栈上临时变量,这个变量在非法指令中×8,c++代码中有个POINT刚好大小就是8,非法指令中还+10h,于是可以猜测有这样一个POINT[i+2]操作越界。
分析完毕。
以前学asm主要是为了辅助理解系统、c/c++语言等,今天基本上是第一次用于查bug(我自己的程序基本上没多少bug,即是有我也能直接猜出来大概在哪,呵呵),感觉asm的知识所记不多,还是应该加强学习。
0 0
- 反汇编定位release版本程序bug
- VC release版本奔溃定位bug
- MFC程序反汇编之快速定位
- VC++ 反汇编定位程序崩溃位置
- 反汇编---异常定位
- 反汇编异常定位
- 要好好掌握反汇编调试程序BUG
- 反汇编linux程序
- xcode反汇编调试iOS模拟器程序(七)Debug与Release的区别
- xcode反汇编调试iOS模拟器程序(七)Debug与Release的区别
- xcode反汇编调试iOS模拟器程序(七)Debug与Release的区别
- 调试Release版本程序
- 通过反汇编定位段错误
- 反汇编定位代码崩溃位置_1
- 反汇编定位代码崩溃位置_2
- 反汇编定位代码崩溃位置_3
- 反汇编定位代码崩溃位置_4
- 反汇编一个c程序
- 让ecshop显示商品销量或者月销量
- 插件化设计
- MySQL多表联表查询
- IOS开发—CATransform3D介绍
- linux文件管理
- 反汇编定位release版本程序bug
- win7设置防火墙允许Ping与telnet
- js操作XML/HTML常用的对象属性
- Quoit Design(最近点对问题)
- c++学习笔记(十六):函数模板
- 一台机器同时部署运行多个Tomcat
- 用Int存储时间 解决新闻订单等的 排序问题
- tftp命令
- 同行不同命:中美两国的“网络水军”有哪些差异