『刨根问底のWPF学习』一个最简单的WPF应用的逆向分析记录

Posted fuhua

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了『刨根问底のWPF学习』一个最简单的WPF应用的逆向分析记录相关的知识,希望对你有一定的参考价值。

1.创建一个最简单的TestWpf项目,什么代码都不写,如下图所示:

技术图片

 

2.鄙人是那种喜欢知其然知其所以然的人,突然看到这一坨代码实在有点蛋疼。

   没办法,只能按照鄙人的学习习惯,一边查阅资料,一边通过逆向分析的方法弄明白这一坨代码究竟是怎么回事。

1.<Window x:Class="TestWpf.MainWindow"
2.        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3.        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4.        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
5.        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
6.        xmlns:local="clr-namespace:TestWpf"
7.        mc:Ignorable="d"
8.        Title="MainWindow" Height="450" Width="800">
9.     <Grid>    
10.    </Grid>
11.</Window>

 

3.首先来看最外面这个标签,就是一对<Window></Window>,似乎看上去也很简单嘛。Window,顾名思义就是程序创建了一个窗口呗。

   那么问题来了,这个Window是从哪里来的呢,就好比我们一个Int32这个类型,是属于System这个名称空间。

   那么这个Window,是属于哪个名称空间呢,是从哪里引用的呢,引用的是哪个dll的呢?

<Window>
</Window>

 

4.这还不简单,对着Window这个标签按F12,不就直接转到定义了吗,我们来看看。

   技术图片

 

   原来这个Window的名称空间是属于PresentationFramework.dll这个程序集下面的。

   绝对路径在:

C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.0PresentationFramework.dll

 

5.按照本屌的一贯作风,肯定是找到这个PresentationFramework.dll,反编译看一番再说。

   的确很快找到了System.Windows这个类。

技术图片

 

6.这就完了?当然不是,我们再来看看还有啥牛逼的信息没有。

   我们看到,这个程序集还写了一堆花里胡哨的东西,这些是什么东东?

   技术图片

 

7.带着第6点的疑问我们继续往下分析

 

以上是关于『刨根问底のWPF学习』一个最简单的WPF应用的逆向分析记录的主要内容,如果未能解决你的问题,请参考以下文章

WPFのDecorator Adorner和AdornerDecorator

WPFの触发器详解

WPFの静态资源(StaticResource)和动态资源(DynamicResource)

WPF窗体の投影效果

WPF自定义控件の用户控件(完结)

WPF学习第二十六章 Application类——应用程序的生命周期