以英文版v7.80.8.218来研究,这个应该是目前最新的公开发布的版本了。

安装程序是最新的Inno Setup 5.2.2制作的安装程序,Inno Setup是用Delphi 2编译的,因此与Delphi做的应用软件是很配的,就如用C++做的程序喜欢用NSIS打包一样。Inno Setup 5.2.2也是目前发布的最新版本了,最近的几次更新,Inno Setup也是一直在改进对于Vista系统的支持。Inno Setup还有一个优点,就是可以设置压缩方式为lzma/ultra,这样可以生成最小的安装包,节约用户的下载时间。

接下来就开始解剖安装程序,请出Universal Extractor这个工具(当然直接用命令行工具innounp.exe也可以),解包完成,来看看解出来的文件。

Setup.e32 真正的安装执行文件,作用相当于Installshield的Engine了
    flist.bin   看起来像是script.bin的索引文件
    script.bin 脚本编译后的二进制文件,重点来看看这个文件

看到安装开始就删除了不少的中文的快捷方式,可能是方便那些测试人员,免得他们一会装中文版,一会装英文版,开始菜单和桌面上出现一堆重复的快捷方式。然后我看到了有一个网址:http://login.wopti.net/install.php?Ver=7.80.8.218.5,相信是用来记录联网用户的软件安装情况的以便统计分析。接下来就是往系统复制文件了,其中{sys}\Iosubsys\Smartvsd.vxd是只有在Win9x下才会安装,{app}\WoptiDefrag.dll是在非Win9x和非Vista下才会安装,{app}\WoptiDefragVista.dll是在Vista下才会安装。{tmp}\WoptiInfo.dll其实原本叫SendInfoDLL的,其作用就是发出一个HTTP Request到之前我提到的那个网址。(因为这是一个Delphi编译的DLL,并且引用了WinInet这个单元)

{sys}\Iosubsys\Smartvsd.vxd是支持SMART IOCTL接口的虚拟设备驱动程序,因为Windows被设计为应用程序不能直接访问底层硬件,因此需要从设备驱动中获取相关硬件信息。Win9x可以直接使用Smartvsd.vxd即可访问硬盘信息;Windows NT及以后的操作系统,管理员是可以管理硬件设备的,因此可以用ATA/APAPI的IDENTIFY DEVICE来取得所需信息,但是考虑到用户权限不一定是管理员,所以在WinNT/2K/XP下非管理员用户可以用SCSI后门的方式读取IDE硬盘信息(Vista下面这招就不灵了)。

{app}下的所有执行文件和DLL都做了数字签名,这应该是国际化的需要吧,毕竟国外更看重这一点。签名是用的WoSign(深圳沃通)的证书,好像也不便宜,1年要1000多。不知为什么,WoptiDefragVista.dll没有版本信息,WoptiUpdate.exe的描述竟然是中文,天呐,不会没有专门做英文版的升级程序吧,看起来像是如此。版本信息里的公司有的是SSN,有的是Wopti,版权信息也是不一致,有的产品名称里还是中文名称。且有的[语言]是中文,有的[语言]是英文,这说明一点,发布出去的产品的文件并不是全在同一台机器上编译的。

LIGHTMAP.PNG应该是作为Texture,与D3DX81ab.dll一起来完成图形显示(DirectX)性能的检测。

UpdateServer.ini是一个配置文件,定义了升级服务器地址,看得出这样可以支持以后加入多台升级服务器以满足用户数增长后的升级需求。

PortsList.inf这个定义文件定义了常见服务的端口使用情况,可以不断补充新的定义。

ActiveXImmunity.ini (ActiveX插件免疫数据库) 这个文件是收集的插件的CLSID,让用户可以有选择的免疫插件以防中招。

SelfRegChg.ini这个文件是原来存放自定义优化设置,默认带2个设置,一个是支持Win2000使用超过137G大硬盘,另一个是取消磁盘容量警告的设置,应该是让用户将自己特殊的优化设置定义后在软件中应用。

Empty.ico 是用来隐藏快捷方式上的箭头的透明图标。

WoptiHWDetect.sys 就是原来的gwiopm.sys,是用来在NT下做I/O端口操作的服务程序。

WoptiHelp.chm 帮助文件,是用Help & Manual(专业的帮助制作工具,虽然安装程序不到30M,可比起Adobe RoboHelp来说算是苗条多了)制作的,里面没有一副图片,所以帮助文件才100多K。
    Big5.dat, Devs.Dat, JEDEC.dat, MonV.Dat 开始我还以为是什么加密格式,后来仔细一看,文件开头的两个字节"78 DA"(最大压缩率), "78 9C"不是标准的ZLib压缩格式的标志吗,显然这里的压缩也起到了一定的加密效果(因为没有文件头,所以压缩工具都不能打开文件)。这些Dat文件会在运行后需要时自动解压为同名的.tmp临时文件。MonV.Dat解压生成MonV.tmp后,又迅速的被删除了。
    Devs.tmp (芯片检测数据库) 临时文件,打开是一个文本文件,里面是设备ID与名称的对照表。
    JEDEC.tmp (SPD 厂商数据库) 临时文件?
    [ 注:JEDEC = Joint Electron Device Engineering Council (电子元件工业联合会) ]
    Big5.dat 应该是注册验证需要的东西吧。
    MonV.Dat 不知道干什么用的,也是注册验证需要的东西?

Set.ini 运行后才会生成,里面是保存的用户设置,看起来所有的外置工具都是存取的这个设置文件。

Wopti.log 运行后才会生成,是记录的操作日志。

D3DX81ab.dll 这个文件被ASPack压缩过,可其他的exe和dll都没有被压缩。

WoptiDefrag.dll和WoptiDefragVista.dll (磁盘整理组件) 都是用VC的MIDL编译的,而且还是ActiveX控件。里面提供的是DefragControl Class。

WoptiCDRomContmenu.dll 也是可以注册的COM文件,但是是用Delphi开发的。作用是Context Menu Handler,就是利用Windows提供的接口做外壳扩展,为所有文件类型的右键菜单上增加2个项目,分别是打开光驱和关闭光驱。但是我这里选中菜单时下面的状态栏上会出现乱码(不知道是不是Delphi不支持Unicode的原因)。regsvr32 WoptiCDRomContmenu.dll 执行后则增加菜单,regsvr32 WoptiCDRomContmenu.dll /u 执行后则移除菜单。核心代码当然是对winmm.dll的mciSendCommand, mciSendString的调用。

Woptiglobe.dll 是用Delphi 7开发的,三个导出函数:WoptiChkFileIsOK,WoptiCtrlHomepage,WoptiSetMaxthon

WoptiP2P.dll (进程功能库) 是用Delphi 7开发的,也是三个导出函数:WomTerminateProFromName,WomTerminateProcess,GetPort2ProcessList

WoptiUtils.dll 是用VC7开发的,只有一个导出函数:ClearTracksForVista

WoptiMem.exe (内存整理) 是用Delphi 7开发的,可以看出整理内存还是采用的请求大内存迫使操作系统将不常用进程所占用的内容转移到虚拟内存,以达到整理内存碎片的作用。

WoptiProcess.exe (进程管理器) 是用Delphi 7开发的,静态链接了WoptiP2P.dll的GetPort2ProcessList函数。

WoptiUpdate.exe (在线升级) 是用Delphi 7开发的,升级信息地址是:http://liveupdate.wopti.net/updatefilelist.zip,奇怪的是定义了.zip后缀,返回的却是文本文件。这个文件只有中文信息,应该是放错了版本。

WoptiUtilities.exe (主程序) 是用Delphi 7开发的,静态链接了WoptiP2P.dll的GetPort2ProcessList函数。所用第三方控件大概如下:

Fast Memory Manager 优秀的内存管理程序,使用其带来的额外好处是可以很容易发现程序中代码引起的内存泄漏
TRegExpr  Delphi下唯一有公开源代码的正则表达式控件
SimpleTimer  轻量级的定时器,精度虽然与TTimer一样,但是它是从TObject继承下来的,而且多个实例可以共享同一句柄
MaxMem   内存深度整理
MiTeC System Information Component  系统信息检测
CoolTrayIcon  托盘控件
ActivePorts  查看系统端口的使用情况
DhCheckFolder  可供选择的系统目录及磁盘查看控件
TMS Components  一套功能很全的界面功能控件
APNetscapeLabel  仿Netscape Communicator的性能对话框的标签的控件,作标题栏用
mxOutlookBar Pro 左边的栏目选择组件
Virtual Treeview 功能强大的树形控件,也可以当作表格用
FlatStyle  按钮,输入框等平面风格控件
Magenta Systems WMI and SMART Component  通过WMI,SMART,SCSI获取更详细准确的系统信息
IPInfo   利用IP Helper API获取网络配置以及适配器信息
DelphiX   DirectX的Delphi接口控件
ZLib   提供压缩功能
Indy   网络通讯控件
TeeChart  用来显示饼图等
md5,Blowfish,FGIntRSA,RC6 都是密码学相关的算法实现单元,可以用到注册验证以及加密文件。

有开发人员是用微软拼音的,很容易就会把输入框控件的ImeName自动设置成"中文 (简体) - 微软拼音"。

可以肯定的是,注册验证一定是用到了RSA算法,没有对主程序做加壳等保护处理,就是说不太可能被人分析代码而写出注册机,但是被爆破还是难免的。曾经的敌人名单:-Arongsoft.com.htm,Keygen.exe,wom60_Keygen.exe依然在代码中定义着。

界面:

窗体的Tab键也没有设置按顺序跳转,ESC不能关闭对话框。APNetscapeLabel上实现的模拟标题栏的功能有点小问题:当在最大化双击恢复时会导致窗体位置被粘连。APNetscapeLabel没有实现右键菜单,左上角的图标没有实现双击事件关闭,这与普通的窗体行为不一致。

下方的状态栏是自画Panel,实现了上下渐变效果。左边的mxOutlookBar被修改了源代码以实现项目与外部连成一体的效果以及圆角效果。VirtualStringTree被继承实现TWomccVT。FlatButton修改成更加平面与实现圆角效果。


我自己根据其执行文件,写了一个界面的演示(Source include):
   
http://files.cnblogs.com/Icebird/WoptiUtilitiesDemo.rar

转载于:https://www.cnblogs.com/Icebird/archive/2008/03/09/WoptiUtilitiesDemo.html

Windows优化大师的一点研究相关推荐

  1. (转)创建X509证书,并获取证书密钥的一点研究

    创建X509证书,并获取证书密钥的一点研究 作者:肖波 个人博客:http://blog.csdn.net/eaglet ; http://www.cnblogs.com/eaglet 2007/7 ...

  2. win10 SystemParametersInfo 设置屏保 不好使_win10优化软件用什么?来看一看这款:windows优化大师 win10...

    win10优化软件用什么?来看一看这款:windows优化大师 win10 win10 专业版新系统与其它系统相比,已做过很多优化了,但还有很多用户想让win10系统更快一点,windows10优化设 ...

  3. 关于windows优化大师设置导到系统乱码的解决

    现象:系统中所有标题栏中文字显示成方格,系统窗口中字体变大 解决办法: 全面更新windows/fronts下的字体文件,重新重动系统,错误被修复 之前真是相信windows优化大师,唉,现在看来,还 ...

  4. 利用windows优化大师软件卸载一手和清理一招

    清理功能: 首先用windows优化大师注册表清理功能清理一次系统注册表. 第二用windwos优化大师垃圾文件清理功能清理一次系统中的废文件. 通过这两步,可以很好地保持系统的干净,不易出现硬盘内无 ...

  5. 关于Unsafe类的一点研究

    转载自  关于Unsafe类的一点研究 Unsafe类是java中非常特别的一个类.它名字就叫做"不安全",提供的操作可以直接读写内存.获得地址偏移值.锁定或释放线程. 通过正常途 ...

  6. Windows优化大师已经成为“流氓大师”

    最近使用Windows优化大师,发现它经常强制性设置IE的搜索提供者,就算你设置了注册表键值相应权限限制它修改,流氓还是会还原注册表权限.还有一次不小心给安装上什么风行网络电视,什么烂鬼风行更流氓,无 ...

  7. Windows优化大师

    看了杨中科老师的<C语言也能干大事>中的自己动手开发Windows优化大师后有了写自己的优化大师的冲动,使用如鹏网的开发向导可以很轻松地搭建成如下图所示的图形界面 程序主模块: 系统信息模 ...

  8. Windows优化大师使用技巧

    很多人都用过Windows优化大师,但是很多人不知道Windows优化大师使用技巧,今天小编就来为大家总结Windows优化大师使用技巧让大家更好的使用Windows优化大师. 1.注册表清理和磁盘文 ...

  9. Windows优化大师7.96版下载

    Windows优化大师提供了全面且有效而简便安全的系统检测.系统优化.系统清理.系统维护四大功能模块以及数个附加的工具软件.它能够有效地帮助用户了解自己的计算机软硬件信息:简化操作系统设置步骤:提升计 ...

最新文章

  1. C++ 关键字new
  2. linux驱动中使用定时器
  3. 学习java前_学习java之前
  4. ShadeGraph教程之节点详解3:Input Nodes
  5. Qt TCP协议 传输简单字符串实例
  6. DOM获取元素、事件基础、操作元素、节点操作
  7. 怎么做301永久重定向
  8. 使用CHM文档 采集随笔(续)
  9. mui.ajax中文乱码
  10. 20200114每日一句
  11. 金融风控模型前世今生
  12. Android UsageStatsService(应用使用统计服务)的学习与调研
  13. 【最新首发】创维电视安装第三方软件教程
  14. 矩阵论知识整理(未完成,同步更新)
  15. 我当 DevOps 的一年
  16. 路由器和交换机的工作原理
  17. python练习题17
  18. vue element-ui引入第三方图标 在线版
  19. JavaScript自动触发事件
  20. Unity中让游戏对象消失或隐藏的几种方法

热门文章

  1. Qt Creator管理数据收集设置
  2. C++coin change 硬币找零(附完整源码)
  3. C语言实现malloc_dbg,calloc_dbg,free_dbg和printLeaks(附完整源码)
  4. C语言实现词典编排算法(附完整源码)
  5. C++赋值运算符和拷贝构造函数区别
  6. 经典C语言程序100例之六零
  7. linux存储库rep 61082,安装informatic过程中的错误
  8. 66.javac 编译与 JIT 编译\编译过程\javac 编译\词法、语法分析\填充符号表\语义分析\字节码生成\JIT 编译
  9. 13-19 Python Number、Python字符串、Python列表(List)、集合的基本操作、元组、字典Dicttionnary、日期和时间
  10. shell的输入和输出