查看: 9353|回复: 52
收起左侧

[讨论] 浅谈对已安装浏览器的识别问题及功能实现

  [复制链接]
langsileaa
发表于 2011-4-29 13:21:39 | 显示全部楼层 |阅读模式
本帖最后由 langsileaa 于 2011-4-29 13:23 编辑

       对其它程序的识别,我想让各位童鞋记忆深刻的应该还是安软对安软的识别吧?
       当一款安软A存在检测其它杀软的功能模块,并且未正常识别出B安软,如果AB不同国籍,这件事不会引起多少人重视。但是一旦AB同属国内安软,铺天盖地的什么“暗杀”,什么“流氓”...就来了。我想很多童鞋并不了解检测其它安软是如何进行的。拿XP来说,采用系统WMI 名称空间就能够枚举所有的杀毒软件信息。当然,前提是要检测是安软必须在系统安全中心注册成功。
       当然,这个帖子不是讨论安软识别的。而是浏览器识别。个人实在没想到连对浏览器的识别,都存在理解上的差异。而本帖所要讨论的重点也是基于浏览器的识别,原因起源于:

SP7.1不能识别世界之窗极速4.0.3.402,添加了还是不能识别
http://bbs.kafan.cn/thread-971646-1-1.html

这里想让大家思考下,如果自己去实现浏览器的识别,会如何进行呢?进程检测?dll线程注入?还是其它方法?

       每个软件在安装时,都会在系统进行注册。也就是注册表内存放的相关信息。因此,对浏览器识别,仅仅需要收集下
每款浏览器写入注册表的位置和键值,再做对应读取就行。对于世界之窗极速4.0.3.402的识别,同样可以如此。下面就演示下该方法是如何的简答:

一、检测世界之窗极速4.0.3.402写入注册表的位置和键值信息。
这里采用InCtrl5 对安装过程进行追踪,并找出安装前后差异。从而确定想要的结果。
(1)InCtrl5 程序图:



(2)InCtrl5 记录软件安装前系统信息:




(3)InCtrl5 开始世界之窗安装:



(4)InCtrl5 世界之窗安装完成:



(5)InCtrl5 快照对比找出差异 :



(6)InCtrl5 差异后的日志输出:



(7)InCtrl5 世界之窗写入注册表对应日志:




(8)InCtrl5 对应注册表位置:



       通过InCtrl5 对安装过程的分析,我们可以知道世界之窗极速浏览器把相关信息注册到了下面的注册表位置:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall\TheWorld Chrome
这里我们需要里面的三个值就可以了:安装路径,浏览器标题,程序版本。

默认浏览器设置对应注册表位置:
HKEY_CLASSES_ROOT\HTTP\shell\open\ddeexec\Application  :默认键值,对应浏览器标题
HKEY_CLASSES_ROOT\HTTP\shell\open\command :默认键值,对应程序路径。



二、实现代码。(仅为简单测试,所以容错不做过多考虑。)
1.程序读取代码:
  1. procedure TFmain.BtnreadClick(Sender: TObject);  {读取世界之窗极速版信息}
  2. var
  3.   XReg: TRegistry;
  4. begin
  5.   XReg := TRegistry.Create;
  6.   with XReg do begin
  7.     RootKey := HKEY_CURRENT_USER;
  8.     if OpenKey('Software\Microsoft\Windows\CurrentVersion\Uninstall\TheWorld Chrome',false)=false then begin
  9.       Einfo.Lines.Add('未检测到系统存在世界之窗极速版浏览器相关信息,请确认已安装软件!');
  10.       exit;
  11.     end;
  12.     Einfo.lines.add('浏览器:'+ReadString('DisplayName'));
  13.     Einfo.lines.add('版  本:'+ReadString('Version'));
  14.     Einfo.lines.add('安装路径:');
  15.     Einfo.lines.add(ReadString('DisplayIcon'));
  16.     Pxcaption:=ReadString('DisplayName');
  17.     Pxpath:=ReadString('DisplayIcon');
  18.     Pxver:=ReadString('Version');
  19.   end;
  20.   XReg.CloseKey;
  21.   XReg.Free;
  22. end;
复制代码


程序读取图:




2.程序设置默认浏览器代码:
  1. procedure TFmain.BtnsetClick(Sender: TObject);
  2. var
  3.   HReg: TRegistry;
  4. begin
  5.     HReg := TRegistry.Create;
  6.     HReg.RootKey := HKEY_CLASSES_ROOT;
  7.     if HReg.OpenKey('HTTP\shell\open\ddeexec\Application',false) then begin
  8.       HReg.WriteString('',PxCaption);
  9.       HReg.CloseKey;
  10.     end;
  11.     if HReg.OpenKey('HTTP\shell\open\command',false) then begin
  12.       HReg.WriteString('',Pxpath);
  13.     end;
  14.     HReg.CloseKey;
  15.     HReg.Free;
  16.     Einfo.Lines.Add('设置默认浏览器成功!');
  17.   end;
复制代码


如此简单的代码即可完成对世界之窗极速4.0.3.402 的识别和默认浏览器设置操作。而不需要去写进程检测,dll注入
等。如果不能正确识别,在反馈的帖子内,请官人告诉大家真相!

程序完成界面:





程序完整代码(容错部分可自行补充):
  1. unit Ubw;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs, StdCtrls,ShellAPI,Registry;
  6. type
  7.   TFmain = class(TForm)
  8.     Einfo: TMemo;
  9.     Btnread: TButton;
  10.     Btnset: TButton;
  11.     Btntest: TButton;
  12.     procedure FormCreate(Sender: TObject);
  13.     procedure BtntestClick(Sender: TObject);
  14.     procedure FormShow(Sender: TObject);
  15.     procedure BtnreadClick(Sender: TObject);
  16.     procedure BtnsetClick(Sender: TObject);
  17.   private
  18.     { Private declarations }
  19.   public
  20.     { Public declarations }
  21.   end;
  22. var
  23.   Fmain: TFmain;
  24.   PisEdit:boolean;
  25.   Pypath,Pycaption,Pxpath,Pxcaption,Pxver:String;
  26. implementation
  27. {$R *.dfm}
  28. procedure TFmain.FormCreate(Sender: TObject);
  29. begin
  30.   PisEdit:=false;
  31. end;
  32. procedure TFmain.BtntestClick(Sender: TObject); {采用默认浏览器打开百度}
  33. begin
  34.   ShellExecute(Handle,nil,PChar('http://www.baidu.com'),nil,nil,SW_SHOWNORMAL);
  35. end;
  36. procedure TFmain.FormShow(Sender: TObject); {读取默认浏览器信息}
  37. var
  38.   YReg: TRegistry;
  39. begin
  40.   YReg := TRegistry.Create;
  41.   YReg.RootKey := HKEY_CLASSES_ROOT;
  42.   if YReg.OpenKey('HTTP\shell\open\ddeexec\Application',false) then begin
  43.     Einfo.lines.add('浏览器:'+YReg.ReadString(''));
  44.     Pycaption:=YReg.ReadString('');
  45.     YReg.CloseKey;
  46.   end;
  47.   if YReg.OpenKey('HTTP\shell\open\command',false) then begin
  48.     Einfo.lines.add('当前默认浏览器路径:');
  49.     Einfo.lines.add(YReg.ReadString(''));
  50.     Pypath:=YReg.ReadString('');
  51.   end;
  52.   YReg.CloseKey;
  53.   YReg.Free;
  54. end;
  55. procedure TFmain.BtnreadClick(Sender: TObject);  {读取世界之窗极速版信息}
  56. var
  57.   XReg: TRegistry;
  58. begin
  59.   Einfo.clear;
  60.   Einfo.lines.add('');
  61.   Einfo.lines.add('---------------------- 读 取 ---------------------');
  62.   Einfo.lines.add('');
  63.   XReg := TRegistry.Create;
  64.   with XReg do begin
  65.     RootKey := HKEY_CURRENT_USER;
  66.     if OpenKey('Software\Microsoft\Windows\CurrentVersion\Uninstall\TheWorld Chrome',false)=false then begin
  67.       Einfo.Lines.Add('未检测到系统存在世界之窗极速版浏览器相关信息,请确认已安装软件!');
  68.       exit;
  69.     end;
  70.     Einfo.lines.add('浏览器:'+ReadString('DisplayName'));
  71.     Einfo.lines.add('版  本:'+ReadString('Version'));
  72.     Einfo.lines.add('安装路径:');
  73.     Einfo.lines.add(ReadString('DisplayIcon'));
  74.     Pxcaption:=ReadString('DisplayName');
  75.     Pxpath:=ReadString('DisplayIcon');
  76.     Pxver:=ReadString('Version');
  77.   end;
  78.   XReg.CloseKey;
  79.   XReg.Free;
  80. end;
  81. procedure TFmain.BtnsetClick(Sender: TObject);
  82. var
  83.   HReg: TRegistry;
  84. begin
  85.   if btnset.Caption='设置为默认' then begin
  86.      if Pxpath='' then begin
  87.        Einfo.Lines.Add('请先进行浏览器信息读取!');
  88.        exit;
  89.      end;
  90.     HReg := TRegistry.Create;
  91.     HReg.RootKey := HKEY_CLASSES_ROOT;
  92.     if HReg.OpenKey('HTTP\shell\open\ddeexec\Application',false) then begin
  93.       HReg.WriteString('',PxCaption);
  94.       HReg.CloseKey;
  95.     end;
  96.     if HReg.OpenKey('HTTP\shell\open\command',false) then begin
  97.       HReg.WriteString('',Pxpath);
  98.     end;
  99.     HReg.CloseKey;
  100.     HReg.Free;
  101.     Einfo.Lines.Add('设置默认浏览器成功!');
  102.     btnset.Caption:='恢复默认';
  103.     exit;
  104.   end;
  105.   if btnset.Caption='恢复默认' then begin
  106.     if Pypath='' then begin
  107.       Einfo.Lines.Add('初始化默认浏览器参数异常,操作中止!');
  108.       exit;
  109.     end;
  110.     HReg := TRegistry.Create;
  111.     HReg.RootKey := HKEY_CLASSES_ROOT;
  112.     if HReg.OpenKey('HTTP\shell\open\ddeexec\Application',false) then begin
  113.       HReg.WriteString('',PyCaption);
  114.       HReg.CloseKey;
  115.     end;
  116.     if HReg.OpenKey('HTTP\shell\open\command',false) then begin
  117.       HReg.WriteString('',Pypath);
  118.     end;
  119.     HReg.CloseKey;
  120.     HReg.Free;
  121.     Einfo.Lines.Add('恢复默认浏览器成功!');
  122.     btnset.Caption:='设置为默认';
  123.   end;
  124. end;
  125. end.
复制代码


源码及程序下载:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x

评分

参与人数 2魅力 +1 人气 +1 收起 理由
皇甫暮云 + 1 版区有你更精彩: )
sli + 1 老板V5 这个要加魅力的 .

查看全部评分

-oAo-
发表于 2011-4-29 14:32:32 | 显示全部楼层
看不太明白
nkspark
发表于 2011-4-29 14:56:09 | 显示全部楼层
langsileaa 发表于 2011-4-29 13:21
对其它程序的识别,我想让各位童鞋记忆深刻的应该还是安软对安软的识别吧?
       当一款安软A存在 ...


不错,比口水贴强多了,赞一个。

这才是正确的态度,坚持下去,总有一天你会赶上本首席的。
qwe12301
发表于 2011-4-29 14:57:06 | 显示全部楼层
说白了,一个想做一个不想做的缘故
nkspark
发表于 2011-4-29 15:13:56 | 显示全部楼层
langsileaa 发表于 2011-4-29 13:21
对其它程序的识别,我想让各位童鞋记忆深刻的应该还是安软对安软的识别吧?
       当一款安软A存在 ...


langsileaa同学对InCtrl5使用得非常熟练啊,http://bbs.360.cn/4071464/31983373.html,学习中。
sli
头像被屏蔽
发表于 2011-4-29 15:29:45 | 显示全部楼层
老板一直很V5 比某些强大多了
maomao110
发表于 2011-4-29 15:30:33 | 显示全部楼层
厉害厉害
nkspark
发表于 2011-4-29 15:43:51 | 显示全部楼层
sli 发表于 2011-4-29 15:29
老板一直很V5 比某些强大多了


本首席刚刚看了langsileaa同学在360论坛的一些帖子,原先也是一个挺好的孩子啊。为啥现在在卡饭的表现和从前判若两人呢?不是被sli同学捧杀的吧?
堕落爱国者
发表于 2011-4-29 15:44:45 | 显示全部楼层
看不懂。看来的确有些科技含量
sli
头像被屏蔽
发表于 2011-4-29 15:46:00 | 显示全部楼层
回复 8楼 nkspark 的帖子

对于你这种随便污蔑我和langsileaa是同一个马甲的人  根本没有必要与你回帖
你除了口水还会什么 ?  上次污蔑事件你还没有给我们一个说法 现在又来了?

评分

参与人数 1经验 -20 收起 理由
皇甫暮云 -20 当然,你也不够淡定

查看全部评分

您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-2-5 20:59 , Processed in 0.148480 second(s), 19 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表