日期:2014-05-20  浏览次数:20945 次

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链接到托管程序的头部。