Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
7a09beae
R
roslyn
项目概览
lwm1986
/
roslyn
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
roslyn
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
7a09beae
编写于
10月 04, 2015
作者:
A
AlekseyTs
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Strengthen MetadataVisualizer against crashing due to bad metadata in PE.
上级
5546c6a9
变更
2
展开全部
隐藏空白更改
内联
并排
Showing
2 changed file
with
138 addition
and
102 deletion
+138
-102
src/Test/PdbUtilities/Metadata/MetadataVisualizer.cs
src/Test/PdbUtilities/Metadata/MetadataVisualizer.cs
+113
-84
src/Tools/Source/MetadataVisualizer/Program.cs
src/Tools/Source/MetadataVisualizer/Program.cs
+25
-18
未找到文件。
src/Test/PdbUtilities/Metadata/MetadataVisualizer.cs
浏览文件 @
7a09beae
此差异已折叠。
点击以展开。
src/Tools/Source/MetadataVisualizer/Program.cs
浏览文件 @
7a09beae
...
...
@@ -187,36 +187,43 @@ private unsafe void VisualizeGenerations(List<GenerationData> generations)
private
static
unsafe
void
VisualizeGenerationIL
(
MetadataVisualizer
visualizer
,
int
generationIndex
,
GenerationData
generation
,
MetadataReader
mdReader
)
{
if
(
generation
.
PEReaderOpt
!=
null
)
try
{
foreach
(
var
methodHandle
in
mdReader
.
MethodDefinitions
)
if
(
generation
.
PEReaderOpt
!=
null
)
{
var
method
=
mdReader
.
GetMethodDefinition
(
methodHandle
);
var
rva
=
method
.
RelativeVirtualAddress
;
if
(
rva
!=
0
)
foreach
(
var
methodHandle
in
mdReader
.
MethodDefinitions
)
{
var
body
=
generation
.
PEReaderOpt
.
GetMethodBody
(
rva
);
visualizer
.
VisualizeMethodBody
(
body
,
methodHandle
);
var
method
=
mdReader
.
GetMethodDefinition
(
methodHandle
);
var
rva
=
method
.
RelativeVirtualAddress
;
if
(
rva
!=
0
)
{
var
body
=
generation
.
PEReaderOpt
.
GetMethodBody
(
rva
);
visualizer
.
VisualizeMethodBody
(
body
,
methodHandle
);
}
}
}
}
else
if
(
generation
.
DeltaILOpt
!=
null
)
{
fixed
(
byte
*
deltaILPtr
=
generation
.
DeltaILOpt
)
else
if
(
generation
.
DeltaILOpt
!=
null
)
{
f
oreach
(
var
generationHandle
in
mdReader
.
MethodDefinitions
)
f
ixed
(
byte
*
deltaILPtr
=
generation
.
DeltaILOpt
)
{
var
method
=
mdReader
.
GetMethodDefinition
(
generationHandle
);
var
rva
=
method
.
RelativeVirtualAddress
;
if
(
rva
!=
0
)
foreach
(
var
generationHandle
in
mdReader
.
MethodDefinitions
)
{
var
body
=
MethodBodyBlock
.
Create
(
new
BlobReader
(
deltaILPtr
+
rva
,
generation
.
DeltaILOpt
.
Length
-
rva
));
visualizer
.
VisualizeMethodBody
(
body
,
generationHandle
,
generationIndex
);
var
method
=
mdReader
.
GetMethodDefinition
(
generationHandle
);
var
rva
=
method
.
RelativeVirtualAddress
;
if
(
rva
!=
0
)
{
var
body
=
MethodBodyBlock
.
Create
(
new
BlobReader
(
deltaILPtr
+
rva
,
generation
.
DeltaILOpt
.
Length
-
rva
));
visualizer
.
VisualizeMethodBody
(
body
,
generationHandle
,
generationIndex
);
}
}
}
}
}
catch
(
BadImageFormatException
)
{
visualizer
.
WriteLine
(
"<bad metadata>"
);
}
}
private
static
readonly
string
[]
s_PEExtensions
=
new
[]
{
"*.dll"
,
"*.exe"
,
"*.netmodule"
,
"*.winmd"
};
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录