wpf 反编译

15 篇文章 0 订阅

最近由于项目需要,boss想让我做一个类似Desktoplist的一个工具(Desktoplist 是微软内部的一个工作提醒的工具,PS,OutLook,CodeFlow等工具的提醒)。只要给我足够的时间我也能开发出一个类似的工具,但是boss没有给我那么多时间,而且功能要接近。我想,先去内网去搜下源码。要是拿到源码问题就好解决了,经过搜索以失败告终。这个时候,我想到了反编译这个工具。我首先用Reflector去反编译,但是它不能得到相应的.XAML文件。即使装上相依的插件(BamlViewer.dll,也许是我的方法不对)也不能正常工作。这个时候我下载了最新的反编译利器ILSpy_Master_2.1.0.1603_RTW。问题迎刃而解。下面我就详细的说一下如何反编译WPF的应用程序。

关于如何反编译引用WCFservice的工程,我稍后会加上。

1. 首先,手动创建一个WPF工程(WpfApplicationReflectorDemo)

2. 把生成的WpfApplicationReflectorDemo.exe 拖到ILSpy里

3.点击 File -> Save Code...: 相应的代码会生成到指定地方。

4. 打开应用程序,并且编译它,此时程序会报如下错误。主要原因是缺少相应的WPF所必备的DLL--WindowsBase和PresentationCore。添加这两个dll之后程序会编译通过。



5. 这时我们还需要把相应的.XAML添加到应用程序中,我们在WpfApplicationReflectorDemo这个目录下添加与MainWindow.cs相关的MainWindow.xaml并且修改MainWindow.cs -->MainWindow.xaml.cs.与WPF的风格保持一致。这个时候我们需要把第二步看到的mainwindow.baml.中的内容添加到刚刚加入的MainWindow.xaml

6. 这时我们需要到MainWindow.xaml.cs去删除一些多余反编译出来的属性,字段和方法。并且在public class MainWindow加访问修饰符 partial

[GeneratedCode("PresentationBuildTasks""4.0.0.0")]
internal TextBlock textBlock1;
private bool _contentLoaded;
public void InitializeComponent()
void IComponentConnector.Connect
7.添加App.xaml.去删除一些多余反编译出来的属性和方法.并且在public class App加访问修饰符 partial
[GeneratedCode("PresentationBuildTasks""4.0.0.0")]
public void InitializeComponent()
7.最后删掉mainwindow.baml。 大功告成。
这样反编译出来的的工程和们自己创建的工程基本一致。
 
 


  • 14
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值