NET软件 运行时自动检测NET环境 实现方式
这是一款NET程序。大名鼎鼎的订票助手。春节各浏览器的订票插件的核心代码都是出自他手。
这个程序已被和谐。所以只有研究价值,无法使用。
说正文。
这个程序启动的时候,会自动检测本机是否安装了.NET FW.弹出如下图的对话框。(为了截这个图,特地在虚拟机装了一个全新的XP)
很神奇的一个实现方式。以前没太注意。现在感觉很需要这个功能的实现方式。
不知道他加了那些壳。目前已知的是加了SmartAssembly。
但是印象中这是一款混淆工具。应该是没有检测NET版本的功能。
TMD加壳的时候,有个定制对话框的功能。估计就是靠类似与这个来实现的。
目前唯一的实现方式,感觉也就只有在运行这个程序前,用非托管的代码来判断本机的.NET FW。如果安装了就执行主程序。否则弹出对话框。
NET的初始化代码我也看了,从理论上来说.NET是不可能实现这个功能的。除非有我未知的方式。
没环境,程序都跑不起来,怎么去检测运行环境。反过来说,程序能跑起来,还需要检测个什么环境。
但是DUMP后,没发现什么有意义的DLL。
唯一一个不是.NET的DLL,dump10.dll 研究了下,没啥特别的。
求大神解惑。如何实现这种效果。
大多数开发者只能打包,用打包程序来检测环境。但是太麻烦了。
大家都喜欢免安装。
源程序:http://pan.baidu.com/share/link?shareid=342418&uk=2131650384
为了避免求脱求破嫌疑,以下是我脱壳后的程序。
http://pan.baidu.com/share/link?shareid=342422&uk=2131650384
[解决办法]
用VB C++ 或者delphi等语言来写,再用linker链接到托管程序的头部。