转储分析之寻找SDK安装程序挂死原因视频 笔记整理

来源:互联网 发布:怎样加入淘宝 编辑:程序博客网 时间:2024/05/12 07:11

出现情况:WIN7 安装SDK界面卡死

安装程序由.Net重写过,重写原因:原SDK不能从网络安装,假定所有SDK所需文件都在本地。

SDK包含:头文件,lib,附属工具等。


一.一些简单的命名规则

TppWorkThread  Tpp开头表示在线程池中

Rtl开头代表操作系统的运行时库

ntdll !Rtl 开头代表Nt所依赖的一些系统的核心函数

nt/ntdll 中都有一些Rtl开头的核心函数(nt是内核态,ntdll是用户态,ntdll是与内核态接口的dll)

ntlpExcuteHander...中的p代表是内部函数,而RtlUnwindEx,直接接大写代表是公开的函数

JIT表示即时编译,JIT_Throw即时编译时抛异常

二.一些常用的基础命令

~ 针对线程

* 所有线程

k 查看栈 ,有kv kb kn kp等不同组合,有不同效果

kv可以在栈上显示返回的参数

kn有每个栈的栈针的编号,有每个栈针的基地址

~*k查找出栈的信息时,执行顺序自下向上(由栈顶向栈底)看。栈底至栈顶地址逐渐递增,栈顶至栈底地址逐渐递减。

!exchain 查找异常的地址

!threads 显示托管栈信息

! do 地址 (dumpobject,.net世界中一切皆为对象)把栈中所有对象都dump出来

!clrstack 地址 查看代码

.loadby sos mscorwks 加载运行mscorwks运行时相同目录的sos   也可以.load绝对路径,但是不推荐

加载后,可运行!help显示支持的命令

此时执行!dumpstuck可现实k命令看不到的函数名,找出执行k时不同的函数进行分析

x 查找文件的二进制地址,支持匹配符。如:x ntdll ! *

三.其他一些知识杂记

1.kernelbase所有用户态都依赖的一个库,上面是用户态(kernel32),下面是核心态。

2.mscowks 交给.net的运行时

3.RaiseException由本地API发起异常  四个参数分别为:异常代码,异常标志,异常附加参数,装载异常附加参数的数组。

 由此函数转入内核态分发,dispatchExcution时,会去链表中轮询try,catch挂在链表上的异常,是否由其处理。

一般会得到3个反馈信息,1.不管.2执行其相关的操作.3.已经修改(此情况较少)

4.child _sp sp表示stackpoint,每个函数在栈上占一小块空间

  RetAdd保存有函数返回地址

5.离现场越远 处理的越笼统




阅读全文
0 0
原创粉丝点击