起因
先是看到git shell指向的是一个appref-ms文件。
找开目录,它未显示文件后缀名,显示的是一个叫application reference 的文件类型。
从来有见过这种类型,于是查了查
调查
它是一个叫clickonce技术的文件。
ClickOnce是微软公司开发的一门用于在网络上发布应用程序的技术 ClickOnce使得用户可以从支持ClickOnce的网页中点击一个链接来运行一个程序。 ClickOnce的设计目标是使得应用程序的启动和升级更加容易。 ClickOnce的安装是把文件复制到用户的配置文件下,所以不需要管理员权限,对系统的影响也比较小。 .Net对ClickOnce程序采取的安全策略是基于启动位置,在默认的安全设置下, 从Internet启动的程序较从本地启动的程序拥有较少的权限。 ClickOnce程序可以从程序的更新位置检查是否有更新版本,并且提示用户下载和安装新的版本。
参考:ClickOnce
如何找到appref-ms的目标exe文件:
The appref-ms file does not point to the exe. When you hit that shortcut, it invokes the deployment manifest at the deployment provider url and checks for updates. It checks the application manifest (yourapp.exe.manifest) to see what files to download, and this file contains the definition of the entry point (i.e. the exe).
.appref-ms不会指向exe文件。当我们点击.appref-ms文件时,会根据部署的url去启动部署文件(这个文件是服务端发布的assembly name.application文件?),然后检查部署文件是否有文件需要更新,这个部署文件也包含了exe文件的入口定义。
这个文件可以直接拖到文本编辑器中,主要由以下部分组成:
http://服务端发布地址/assembly name.application#assembly name.application,
Culture=neutral(是否一定是这个值不知道),
PublicKeyToken=xxxxxxxxxxxxxxxx
(一个解决方案产生的id,解决安全问题,确保该文件只能由作者修改,作者掌握私匙,并且颁布后没有被其他人篡改,作为公匙,和服务端进行验证,与证书挂钩,如果证书不改变token不改变),
processorArchitecture=cpu架构
使用clickonce部署怎么确保不被反编译
winform使用clickonce部署,所有的资源文件包括exe程序都下载到客户端,那客户端直接可以反编译了,有没有很安全的解决办法?
ClickOnce安装的程序的一般情况下都会放在这里
C\Documents and Settings\<username>\Local Settings\Apps\2.0
另外,也可以用WMI辅助得到进程的详细信息,运行WMIC即可弹出WMI的CommandLine对话框,找到你的进程的ID(如45),然后输入process 45,即可得到该进程的详细信息,包括进程所在路径
答案是,clickonce技术并不是解决反编译问题的一门技术,如果担心反编译,请考虑混淆或者商业加密。
--------------------- 作者:hackpig 来源:www.skcircle.com 版权声明:本文为博主原创文章,转载请附上博文链接!

