adobe flash player升级coredump分析
flash player版本号:14.0.0.125
产品名称:Adobe® Flash® Player Installer/Uninstaller
系统:windows xp sp3
调试器:windbg
反汇编器:IDA
应用程序:FlashUtil32_14_0_0_125_Plugin.exe
coredump信息:
eax=00000000 ebx=01ed75f0 ecx=00000000 edx=00000000 esi=01ed75f0 edi=00000000
eip=00409db5 esp=0012fc1c ebp=0012fc30 iopl=0 nv up ei pl zr na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00200246
FlashUtil32_14_0_0_125_Plugin+0x9db5:
00409db5 f7f1 div eax,ecx
堆栈:
0:000> kb
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may be wrong.
0012fc30 0040c1e6 00000001 00000064 00000000 FlashUtil32_14_0_0_125_Plugin+0x9db5
0012fcd0 77d18734 00010652 00000464 00000001 FlashUtil32_14_0_0_125_Plugin+0xc1e6
0012fcfc 77d18816 0040c190 00010652 00000464 USER32!GetDC+0x6d
0012fd64 77d189cd 00000000 0040c190 00010652 USER32!GetDC+0x14f
0012fdc4 77d18a10 0012fdec 00000000 0012fe0c USER32!GetWindowLongW+0x127
0012fdd4 0040c5c9 0012fdec 0042c0b8 01be42b8 USER32!DispatchMessageW+0xf
0012fe0c 00406975 01be2ad8 01be42b8 01be2d80 FlashUtil32_14_0_0_125_Plugin+0xc5c9
0012fe80 00404b5b 0040150e 01be2a08 00404ba7 FlashUtil32_14_0_0_125_Plugin+0x6975
0012fe84 0040150e 01be2a08 00404ba7 01be2ad8 FlashUtil32_14_0_0_125_Plugin+0x4b5b
0012fe8c 00404ba7 01be2ad8 01be42b8 01be2d80 FlashUtil32_14_0_0_125_Plugin+0x150e
0012feb8 0040120a 01ed7298 01eeefc8 00000000 FlashUtil32_14_0_0_125_Plugin+0x4ba7
00000000 00000000 00000000 00000000 00000000 FlashUtil32_14_0_0_125_Plugin+0x120a
从“coredump信息”里能够。 因为ecx=00000000所以导致div eax,ecx出现除0异常。
那么,ecx的值是从哪里来呢?
用IDA打开FlashUtil32_14_0_0_125_Plugin.exe,跳转到地址00409db5,能够看到:
.text:00409DA4 loc_409DA4: ; CODE XREF: sub_4099CA+2BEj
.text:00409DA4 mov edi, [ebp+arg_8]
.text:00409DA7 movzx ecx, word ptr [ebp+arg_8]
.text:00409DAB shr edi, 10h
.text:00409DAE mov eax, edi
.text:00409DB0 imul eax, 64h
.text:00409DB3 xor edx, edx
.text:00409DB5 div ecx
由上面代码片段。能够看出,ecx的值是由00409db5所在函数的第三个參数赋值的。看一下第三个參数是多少?
0:000> dd ebp L 8
0012fc30 0012fcd0 0040c1e6 00000001 00000064
0012fc40 00000000 0012fd38 0040c190 00000000
从这里看到。第三个參数也是0(地址0012fc40的值)。那么,第三个參数的值又是从哪里来的?
看一下上一层函数(地址0040c1e6所在的函数):
.text:0040C190 ; LRESULT __stdcall PrevWndFunc(HWND, UINT, WPARAM, LPARAM)
.text:0040C190 PrevWndFunc proc near ; DATA XREF: sub_40C605+4Ao
.text:0040C190 ; sub_40C796+30o
.text:0040C190
.text:0040C190 x = dword ptr -80h
.text:0040C190 y = dword ptr -7Ch
.text:0040C190 var_78 = dword ptr -78h
.text:0040C190 var_74 = dword ptr -74h
.text:0040C190 var_70 = dword ptr -70h
.text:0040C190 var_6C = dword ptr -6Ch
.text:0040C190 var_68 = dword ptr -68h
.text:0040C190 ho = dword ptr -64h
.text:0040C190 rc = RECT ptr -60h
.text:0040C190 var_50 = dword ptr -50h
.text:0040C190 var_4C = dword ptr -4Ch
.text:0040C190 var_46 = byte ptr -46h
.text:0040C190 var_45 = byte ptr -45h
.text:0040C190 Paint = tagPAINTSTRUCT ptr -44h
.text:0040C190 var_4 = dword ptr -4
.text:0040C190 hWnd = dword ptr 8
.text:0040C190 Msg = dword ptr 0Ch
.text:0040C190 wParam = dword ptr 10h
.text:0040C190 lParam = dword ptr 14h
.text:0040C190
.text:0040C190 push ebp
.text:0040C191 mov ebp, esp
.text:0040C193 sub esp, 80h
.text:0040C199 mov eax, dword_431EAC
.text:0040C19E xor eax, ebp
.text:0040C1A0 mov [ebp+var_4], eax
.text:0040C1A3 mov eax, [ebp+hWnd]
.text:0040C1A6 push ebx
.text:0040C1A7 push esi
.text:0040C1A8 mov esi, [ebp+lParam]
.text:0040C1AB push edi
.text:0040C1AC push 0FFFFFFEBh ; nIndex
.text:0040C1AE push eax ; hWnd
.text:0040C1AF mov [ebp+var_4C], eax
.text:0040C1B2 call ds:GetWindowLongW
.text:0040C1B8 mov edi, [ebp+Msg]
.text:0040C1BB mov ebx, eax
.text:0040C1BD mov [ebp+var_46], 0
.text:0040C1C1 cmp edi, 0C000h
.text:0040C1C7 jnb short loc_40C1E6
.text:0040C1C9 cmp edi, 400h
.text:0040C1CF jb short loc_40C205
.text:0040C1D1 test ebx, ebx
.text:0040C1D3 jz short loc_40C1E6
.text:0040C1D5 mov eax, [ebx]
.text:0040C1D7 push esi
.text:0040C1D8 lea ecx, [edi-400h]
.text:0040C1DE push ecx
.text:0040C1DF push [ebp+wParam]
.text:0040C1E2 mov ecx, ebx
.text:0040C1E4 call dword ptr [eax]
.text:0040C1E6
.text:0040C1E6 loc_40C1E6: ; CODE XREF: PrevWndFunc+37j
.text:0040C1E6 ; PrevWndFunc+43j ...
.text:0040C1E6 push esi ; lParam
由
.text:0040C1D7 push esi
.text:0040C1D8 lea ecx, [edi-400h]
.text:0040C1DE push ecx
.text:0040C1DF push [ebp+wParam]
.text:0040C1E2 mov ecx, ebx
.text:0040C1E4 call dword ptr [eax]
和
.text:0040C1A7 push esi
.text:0040C1A8 mov esi, [ebp+lParam]
可知,00409db5所在函数的第三个參数是由PrevWndFunc的第四个參数提供。查看一下第四个參数
0:000> dd 0012fcd0 L 8
0012fcd0 0012fcfc 77d18734 00010652 00000464
0012fce0 00000001 00000000 0040c190 dcbaabcd
而PrevWndFunc是由User32来调用,第四个參数0值的传入是无法避免。也就是说。00409db5所在的函数,要对第三个參数0值推断。
adobe flash player升级coredump分析的更多相关文章
- CT ubuntu 16.04安装 adobe flash player
sudo apt-get install flashplugin-installer chrome 升级 chrome://chrome-urls/ chrome://components/ 找到A ...
- chrome升级54以后,显示Adobe Flash Player 因过期而遭到阻止
请直接下载 最新的Adobe flash player 离线安装包.经测试,在线安装不管用. 百度云地址: install_flash_player_23_ppapi.exe 密码:8c2i
- Chrome浏览器 54 版本显示“Adobe flash player已过期”问题解决
背景 电脑上面的软件很久没升级,用腾讯电脑管家批量做了一次升级,结果Chrome浏览器升级到54版本flash控件没法用了. 第一时间想到直接到flash官网下载一个新的进行安装,结果官网检测显示,C ...
- Chrome Adobe Flash Player 因过期而 阻止
百度搜索重装不管用 作者:胡中元链接:https://www.zhihu.com/question/32223811/answer/60456561来源:知乎著作权归作者所有.商业转载请联系作者获得授 ...
- Adobe Flash Player - imsoft.cnblogs
Adobe Flash Player是一个跨平台.基于浏览器的应用程序.运行时,它可以跨屏幕和浏览器原汁原味地查看具有表现力的应用程序.内容和视频.Flash Player实现了移动屏幕上的高性能优化 ...
- Adobe flash player 因过期而遭到阻止解决办法
最近使用谷歌浏览器时总是提示Adobe flash player 因过期而遭到阻止,这让人很头痛,基本上就是打开一个网页就会弹出一个提示,下面是解决办法. 问题的截图界面: 解决方法:在chrome浏 ...
- Chrome Adobe flash player已过期怎么办
越来越多的朋友感受到了来自谷歌chrome新版浏览器的压力,因为有不少朋友在使用新版chrome浏览器看视频时,却出现了这样的提示:Adobe flash player已过期!怎么办啊? 有网友抱怨: ...
- Fedora27 安装Adobe Flash Player PPAPI与NPAPI实现Firefox和Chromium视频播放
一.Adobe Flash Player PPAPI与NPAPI有什么区别我们在打开网页视频时有时会弹出没有安装Flash插件的提示,此时就无法观看视频.Adobe Flash Player是浏览器显 ...
- 苹果电脑Mac系统如何安装Adobe Flash Player
一)安装/更新Adobe Flash Player 开系统偏好设置 , Flash player 更新,立即检查/立刻安装: Flash插件官方每月常规更新1~2次,为避免频繁过期,建议设置为允许A ...
随机推荐
- TCP/IP ---分层
TCP/IP的分层 ICMP是IP协议的附属协议.IP层用它来与其他主机或路由器交换错误报文和其他重要信息.尽管ICMP主要被IP使用,但应用程序也有可能访问它.我们将分析两个流行的诊断工具,Ping ...
- BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第9章节--client对象模型和REST APIs概览 client对象模型API范围
BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第9章节--client对象模型和REST APIs概览 client对象模型API范围 本章之前提到过. ...
- Atitit. camel分词器 分词引擎 camel拆分 的实现设计
Atitit. camel分词器 分词引擎 camel拆分 的实现设计 1. camel分词器1 1.1. 实现的界定符号大写字母小写字母数字1 1.2. 特殊处理 对于JSONObject 多个大写 ...
- javascript执行环境以及作用域链的理解
在javascript脚步语言中执行环境有两种: 全局环境: 局部环境: 我们可以拿一个田径跑道来打比方,全局环境就可以理解为是最外面跑道,它包含着内部所有的东西,有人在跑步,有人在跳远,这些用着不同 ...
- iostat -d -k -x 1 10
iostat命令详解 转载 2011年08月03日 14:13:58 标签:磁盘 /扩展 /user 99809 iostat iostat用于输出CPU和磁盘I/O相关的统计信息. 命令格式: io ...
- NDK 安装小结
建议先看后面的错误,可以先执行那些命令以免出现相关问题. chmod a+x android-ndk-r10c-linux-x86_64.bin ./android-ndk-r10c-linux-x8 ...
- html 常用
1. var canvas = document.getElementById("tutorial"); var ctx = canvas.getContext("2d& ...
- easyui最简单的左右布局实现,及tab的右键菜单实现
发现最近有些人问用JQuery easyui要怎么实现左右结构的布局.就是点击左边的菜单在右边的tab中打开.其实easyui要实现这种布局很简单,只需要简单的几行代码就ok了. 特意做了一个小小的d ...
- Hibernate使用注释
可以使用注释创建hibernate应用程序. 有许多注释可用于创建hibernate应用程序,如@Entity,@Id,@Table等. Hibernate注释基于JPA 2规范,并支持所有功能.所有 ...
- 获取云硬盘列表bug
有段时间没写博客了,主要还是刚进新公司,多少有点不适应(真会给自己找理由,明明是手里没技术,肚子里没货,能写啥!).前面几个星期都在修一修horizon的bug,这个没啥很大难度,就是用了一个djan ...