Snoop介绍
Snoop 是一款开源的 WPF 监视工具,它能够监视或浏览任何正在运行的 WPF 应用程序的可视化、逻辑和自动化树(无需调试器),还可以更改属性值、查看触发器、在属性更改时设置断点等。
项目地址:https://github.com/snoopwpf/snoopwpf
运行
可以到github release下载已经编译的二进制文件。
不同的snoop版本对应不同的.NET/.Net Framework版本,根据自己的需求下载对应的版本使用
Snoop | .NET Framework | .NET |
---|---|---|
3.0 | 4.0 | 3.0 |
4.0 | 4.5.1 | 3.0 |
5.0 | 4.5.2 | 3.1 |
6.0 | 4.6.2 | 6.0 |
也可以直接导入代码编译。
注意,这里有一个限制:不支持自包含的单个文件应用程序,因为没有可靠的方法来获取 .NET 运行时的句柄
软件原理
关于软件原理,我没有仔细的去读软件的源码,最近也比较忙。
当我用Snoop spy一个WPF程序时,在ProcessMonitor里查看进程模块时,会看到Snoop.Core.dll,如下 所示:
所以我猜想也是利用注入的原理。
在win32里,可以通过SetWindowHookEx/注入+HookApi之类的方式捕获调用进行spy。
但是WPF没有句柄,所以这里确实是有点强大了,不知道内部是如何实现的,等后面有时间的时候再去深入了解原理。
软件界面介绍
如何Spy WPF程序
我们这里以开源软件WindowsX为例
首先我们运行ScreenToGif和Snoop,然后通过上图6的按钮(或者在下列列表选中,再单击上图5的按钮),将鼠标光标拖动到WindowsX的界面上
Snoop的主界面主要由如下几部分组成
左边是树列表,可以切换显示Visual Tree/LogicalTree
右边上半部分是控件的一些参数,包括属性/数据上下文/事件/触发器等。
右边下半部分可以看到诊断日志和控件预览。
如何快速定位到控件
例如在WindowsX界面上有一个按钮,我们想快速定位到它,并查看相关参数。
我们只需要按住Ctrl+Shift键,然后移动鼠标到控件上即可,Snoop的可视化树会自动选中对应的控件
如何查看/保存控件缩略图
把鼠标放在可视化树上,可以看到控件的缩略图
如果我们想保存缩略图,在可视化树上选中后,在右下角的Preview页,单击【保存】按钮即可
标签:反编译,界面,Snoop,控件,可视化,WPF,NET From: https://www.cnblogs.com/zhaotianff/p/18233083