首页 > 其他分享 >WPF界面反编译神器Snoop使用介绍

WPF界面反编译神器Snoop使用介绍

时间:2024-06-05 16:45:21浏览次数:27  
标签:反编译 界面 Snoop 控件 可视化 WPF NET

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

相关文章

  • DevExpress WPF中文教程:Grid - 如何向项目添加GridControl并绑定到数据
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。无论是Office办公软件的衍伸产品,还是以数据为中心......
  • C#WPF数字大屏项目实战10--不良指标分页
    1、区域划分2、区域布局 3、视图模型  4、控件绑定5、运行效果 走过路过,不要错过,欢迎点赞,收藏,转载,复制,抄袭,留言,动动你的金手指,财务自由......
  • WPF datagrid scrolldown and change the marked the location in canvas
    <Windowx:Class="WpfApp134.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft......
  • 一款WPF的精简版MVVM框架——stylet框架(MVVM绑定、依赖注入等)
    今天偶然知道一款叫做stylet的MVVM框架,挺小巧的,特别是它的命令触发方式,简单粗暴,让人感觉很巴适,现在我做一个简单的demo来顺便来分享给大家。本地创建一个WPF项目,此处我使用.NET8来创建。然后引用stylet最新的nuget包。 然后删掉App.xaml里面自带的启动项删掉以后: sty......
  • 一款WPF的精简版MVVM框架——stylet框架的初体验(包括MVVM绑定、依赖注入等操作)
    今天偶然知道一款叫做stylet的MVVM框架,挺小巧的,特别是它的命令触发方式,简单粗暴,让人感觉很巴适,现在我做一个简单的demo来顺便来分享给大家。本地创建一个WPF项目,此处我使用.NET8来创建。然后引用stylet最新的nuget包。 然后删掉App.xaml里面自带的启动项删掉以后: styl......
  • 基于WPF开发动态可交互混淆矩阵
    最近在项目中,为了算法结果的可视化,需要用到混淆矩阵(ConfusionMatrix),而网上资源大多是基于Python绘制的混淆矩阵,并且是输出图片格式,并不能响应用户点击,今天以一个简单的小例子,简述如何通过WPF绘制混淆矩阵,并可响应用户点击事件,仅供学习分享使用,如有不足之处,还请指正。 什么......
  • WPF canvas mousewheel to zoom in or out
    <Windowx:Class="WpfApp133.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft......
  • WPF draw ellipse as array or matrix
    <Windowx:Class="WpfApp133.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft......
  • WPF DataGrid自动增长序号列
    ///<summary>///自动增长序号列///</summary>publicclassDataGridRowIndexColumn:DataGridTextColumn{///<summary>///可以指定开始序号///</summary>publicintStartIndex{get{return(int)GetValue(StartIndex......
  • WPF RenderTransform TransformGroup ScaleTransform TranslateTransform
    <Windowx:Class="WpfApp132.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft......