首页
社区
课程
招聘
[求助]《另类挂钩-RING3数据包监视》 -- 网址过滤 -- (浏览器异常)!!!
发表于: 2009-12-7 15:29 9215

[求助]《另类挂钩-RING3数据包监视》 -- 网址过滤 -- (浏览器异常)!!!

2009-12-7 15:29
9215
  
  根据论坛 MJ 提供的《另类挂钩-RING3数据包监视》和 木桩 提供的 基于《另类挂钩-RING3数据包监视》之HTTP301、我在调试期间遇到以下几个问题~ 请大家帮忙分析解决

  1、在对非法URL过虑期间、浏览器(IE6.0、腾讯TT最新版、傲游2.5)表现不稳定~

    多数据情况下↓
    a)、输入一个url过虑时、正常跳转到指定的网址页面(正常)

    少数据情况下↓
    b)、输入一个url过虑时、浏览器不会跳转(同时弹出对话框、提示保存文件、文件类型未知、文件名默认为 s )

    少数据情况下↓
    c)、输入一个url过虑时、浏览器不会跳转(同时在网页里面显示了大量的乱码的字符)

    另外我发现、如果电脑安装过讯雷下载软件、那么 异常情况(b)的弹出对话框 异常情况(c) 的网页乱码 几乎不发生,但是会自动弹出讯雷下载软件 提示保存一个名为s的文件~

  2、当对url过虑成功时(手动不停的刷新浏览器、或者进行一系列的web访问)、浏览器运行不到2分钟就自动关闭了~

  请大家帮忙看看、以上几个问题是如何造成的~ 提供排查思路及解决办法!

  ~谢谢

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 54
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
另外、直接挂勾这个 RING3数据包 加了两个分别取host和get的方法~~~

以下为取Host的原形(Buffer为缓冲区数据)

function GetHost(Buffer:PAnsiChar):String;
var
i:integer;
tmpResult:String;
strFilter:String;
begin
strFilter := 'Host: ';
i := Pos(strFilter, Buffer);
while (Buffer[i] <> #13) do
begin
  Inc(i);
  tmpResult  := tmpResult  + Buffer[i];
  Result := trim(StringReplace(tmpResult,'st: ','',[rfIgnoreCase]));  //过虑无用字符
  //Result := tmpResult;
end
end;

以下为取Get的原形(StrSource为转换过后的缓冲区数据)

function GetPara(StrSource,StrBegin,StrEnd:String):String;
var
in_star,in_end:integer;
begin
  in_star:=AnsiPos(StrBegin,StrSource)+length(StrBegin);
  in_end:=AnsiPos(StrEnd,StrSource);
  result:=copy(StrSource,in_star,in_end-in_star);
{
  函数里的AnsiPos和copy,都是系统定义的,可从delphi的帮助文件里找到相关说明,
  function AnsiPos(const Substr, S: string): Integer
  返回Substr在S中第一次出现的位置。
  function copy(strsource,in_star,in_end-in_star): string;
  返回字符串strsource中,从in_star(整型数据)开始到in_end-in_star(整型数据)结束的字符串。
}
end;

用OutputDebugString输出调试数据~~~~多次刷新浏览器后(浏览器直接自动关闭)

请指出问题所在!
2009-12-7 23:22
0
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
无话可说了,楼主还是去做JAVA吧!

说句实话,人家木桩 和MJ老师发代码,是为了给大家学习的,抄都抄了,还不会改,我改木桩老师的代码,怎么没发现这些问题的?
2009-12-8 10:47
0
雪    币: 54
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
调试期间一步步还原到最原版的代码了~ 

直接把这个dll挂起来跑~ 打开Dbgview进行观察~~~ 

不断使用和刷新浏览器 不出三分钟 就挂了
 
2009-12-8 12:48
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
5
重定向字节数控制好就没有问题。没啥复杂的~
2009-12-8 14:14
0
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
我把这个DLL挂到几个浏览器里面,看网页2个小时,都没挂,那是你自己没处理好而已。
2009-12-8 14:55
0
雪    币: 282
活跃值: (358)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
7
GET过程我拿来用在LSP上。没有发现有问题~
2009-12-8 16:04
0
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
8
自己不会改就不用嚷嚷了,人家介绍的是方法和思路,不是成品。
2009-12-8 20:24
0
雪    币: 54
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我在AFD_SEND中修改的是Redirect_String 的值、执行了 SessionList.Add(tmpStr);

与此同时在AFD_RECV中修改缓冲区内容为重定向字符串(CopyMemory(Buffer, @Redirect_String[1], Length(Redirect_String));)

整个过程、无非就是将木桩的Redirect_String常量、变成一个var 对Redirect_String 的值进行了http~301的数据重组!

并没有过多的改变代码~~~ 按理说应该正常呀!
2009-12-8 23:13
0
雪    币: 54
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
  当然是利用这个方法和思路呀 我什么时候说拿它当成品了???

  只不过是想请教一下~~~ 浏览器跑不了多久就自动关了~ 给个排查思路~
2009-12-8 23:16
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
11
就这还内核,我笑笑路过。
2009-12-8 23:26
0
雪    币: 393
活跃值: (100)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
12
kao您输入的信息太短,您发布的信息至少为 6 个字符
2009-12-9 00:37
0
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
13
很明显的 ring3 hook 楼主居然说成内核.
2009-12-9 08:24
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
2009-12-9 09:42
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
笑死了,LZ还是回去做JAVA吧。
2009-12-9 20:19
0
雪    币: 367
活跃值: (20)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
16
缓冲区长度是否足够,多线程是否安全
2009-12-11 09:03
0
雪    币: 54
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
~谢谢诸位、已解决!
2010-3-5 09:15
0
游客
登录 | 注册 方可回帖
返回
//