装x的一次调试(用vs2008调试vs2015)

文章目录

题目很装逼,其实就是用08找到了导致15崩溃的原因

事情是这个样子的,装上vs2015后只是运行了个HelloWord就没管了。今天突然想起来了,想试试15的功能有没有什么变化,但是吧 一打开再一点击就崩了,难道又是姿势没对,那就再来一次吧还是崩了,看来是哪个地方出现问题了。
那我们就来看看问题详细信息吧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  问题事件名称:	BEX
应用程序名: devenv.exe
应用程序版本: 14.0.23107.0
应用程序时间戳: 559b7ead
故障模块名称: StackHash_0a9e
故障模块版本: 0.0.0.0
故障模块时间戳: 00000000
异常偏移: 000b0000
异常代码: c0000005
异常数据: 00000008
OS 版本: 6.1.7601.2.1.0.256.1
区域设置 ID: 2052
其他信息 1: 0a9e
其他信息 2: 0a9e372d3b4ad19135b953a78882e789
其他信息 3: 0a9e
其他信息 4: 0a9e372d3b4ad19135b953a78882e789

联机阅读隐私声明:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0804

如果无法获取联机隐私声明,请脱机阅读我们的隐私声明:
C:\Windows\system32\zh-CN\erofflps.txt

##扯淡部分

百度一下
1.凡是win7下提示StackHash_0a9e的,都是感染了病毒,即感染了PE文件型病毒(在PE中加入新的section,
并修改入口点到这里,从而使得PE加载时首先运行这段代码),由于使用的技术陈旧,不兼容win7,导致出现错误提示。
2.内存溢出问题触发数据执行保护功能,导致BEX错误。

解决方案:

关闭DEP保护:bcdedit.exe/set {current} nx AlwaysOff
开启DEP:bcdedit /set {default} nx Optin

百度出现的问题主要是由于旧版本程序在新系统中运行出现的问题,但是在我这不存在这个问题系统是win7x64的软件是vs2015,所以应该完全兼容DEP。那么问题来了,出现这个问题的原因是什么呢?但是基本找到了方向,是由于溢出问题导致DEP保护被触发程序被终止

再Google一下
数据执行保护(DEP) 是一套软硬件技术,能够在内存上执行额外检查以帮助防止在系统上运行恶意代码。在 Microsoft Windows XP Service Pack 2、 Microsoft Windows Server 2003 Service Pack 1 、Microsoft Windows XP Tablet PC Edition 2005 、 Microsoft Windows Vista 和 Microsoft windows7中,由硬件和软件一起强制实施 DEP。可帮助防止数据页当作代码执行,从而有效分离数据与代码。通常情况下,不执行默认堆和堆栈中的代码。硬件实施
DEP 检测从这些位置运行的代码,并在发现执行情况时引发异常。软件实施 DEP 可帮助阻止恶意代码利用 Windows 中的异常处理机制进行破坏。
与防病毒程序不同,硬件和软件实施DEP技术的目的并不是防止在计算机上安装有害程序。而是监视您的已安装程序,帮助确定它们是否正在安全地使用系统内存空间。 为监视您的程序,硬件实施 DEP 将跟踪已指定为“不可执行”的内存区域。 如果已将内存指定为“不可执行”,但是某个程序试图通过内存执行代码,Windows 将关闭该程序以防止恶意代码。
DEP 问题的错误签名具有下列属性:

DEP参考:
https://technet.microsoft.com/zh-cn/library/cc738483(v=ws.10).aspx

##干正事部分
难道中病毒了?联想起最近的XcodeGhost事件,后背一凉。
额,怎么还有个调试此程序选项,选中试试看吧。选择调试器—-嗯选熟悉的vs2008,进入了熟悉的程序调试界面。进入反汇编界面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
005C001D F9               stc              
005C001E ?? db ffh
005C001F FF 00 inc dword ptr [eax]
005C0021 00 00 add byte ptr [eax],al
005C0023 00 00 add byte ptr [eax],al
005C0025 00 00 add byte ptr [eax],al
005C0027 00 0C 00 add byte ptr [eax+eax],cl
005C002A 01 00 add dword ptr [eax],eax
005C002C 00 00 add byte ptr [eax],al
005C002E 00 00 add byte ptr [eax],al
**005C0030 60 pushad**
005C0031 A7 cmps dword ptr [esi],dword ptr es:[edi]
005C0032 1E push ds
005C0033 C0 00 F9 rol byte ptr [eax],0F9h
005C0036 ?? db ffh
005C0037 FF 10 call dword ptr [eax]
005C0039 99 cdq

大概就是上面这个样子,这里执行不下去了 异常
再Alt+7键看哈Call Stack
堆栈调用情况

VA_X.dll好熟悉的身影,想起来了 是小番茄啊,应该就是这里的问题了。果断改名再来。嗯,问题果然是这个。
由于穷使用的是破解版的,下载链接 可能是打补丁的时候出现的问题,对vs2015的兼容性还不好吧。嗯只有换个高版本的果然能用了。。。。。。
唉,本来还想自己破解下的。不给机会 哈哈 VA_X_Setup2073加破解补丁支持VS2015正式版
遇到这种崩溃的果断就打开调试,看哈堆栈调用信息了,不要管它是什么。还有就是要相信微软的实力,一般不会出现啥问题的,出现问题多半是第三方插件、系统装的精简版、中病毒等。

其他可用信息
http://www.nirsoft.net/utils/app_crash_view.html
http://bbs.pediy.com/showthread.php?t=196284