最近研究了一下WCF的程序,学到了很多东西,比如silverlight的开发,WCF(Windows Communication Foundation)服务端和客户端的开发和配置,WPF(Windows Presentation Foundation)的开发,fiddler inspector插件的开发等等,虽然细节知识已经忘却,但是知识框架已然在心里已经形成了,拿到代码或者开发文档就可以研究了。
事件的起因是要对一个silverlight客户端软件进行黑盒安全测试。下载xap文件,将扩展名改为zip,解压得到程序运行文件(dll文件),用Reflector反编译程序主文件dll,得到silverlight的界面resources文件(xaml文件),对照着界面文件和反编译出来的代码可以对这个软件的框架和实现进行还原。
万幸这个silverlight采用的WCF服务是公开的,我用vs引用了WCF服务,通过重写silverlight客户端的调用方法和配置成功调用了服务端方法。至此WCF提供给silverlight的方法调用我都可以用自建的vs项目重写出来了,几乎包括所有功能(用户管理,业务单据,配置管理。。。。,好大一个漏洞)。然而这并不是测试的全部,为了进一步测试该软件功能细节,我需要对它进行截包(因为有些测试要修改request或者response)。
此采用了WCF和服务端进行通信,消息采用binary进行了编码,所以代理软件抓到的http包是乱码的。
我到telerik官网下载了WCF-Binary-Message-Inspector插件,这个插件比较厉害,可以将binary数据转化为xml数据,修改xml数据之后还可以转为binary数据继续发送给服务端。但是有点缺陷(1.切换tab之后,修改的内容会消失;2.response过来的包无法进行修改),我修改了这两个问题,在我这里使用的很ok,在这里分享给大家。
http://pan.baidu.com/s/1kU8Qsjd,可以在参照README进行配置,这是vs2010源码项目,如果有特殊需求可以自行修改。
先写到这里,如有问题,欢迎讨论。