Showing posts with label 教育网加速. Show all posts
Showing posts with label 教育网加速. Show all posts

Tuesday, September 8, 2009

腾讯TT教育网加速代理验证成功

写了个简单的php脚本,patch了webacc.exe,改了端口,去掉了进程检测。
<?php
$file = $_SERVER['argv'][1];
if (!file_exists($file)) {
 die('file not exists');
} else {
 $data = file_get_contents($file);
 $data = str_replace("\x91\x1f", "\xA1\x46", $data);
 $data = str_replace("\x92\x1f", "\xA2\x46", $data);
 $data = str_replace("\xE8\x10\x03\x00\x00", "\xB8\x01\x00\x00\x00", $data);
 file_put_contents($file.'.bak', $data);
}
vpn进学校,把服务跑在了16.4上,没有去改IP,有需要的另说吧
本地开端口
D:\>netstat -ano | find "3732"
  TCP    127.0.0.1:18081        0.0.0.0:0              LISTENING       3732
  TCP    127.0.0.1:18082        0.0.0.0:0              LISTENING       3732
直接连接本地的代理, localhost:18081
访问页面成功。
直接访问ip138,提示的是211.68段的教育网IP;
访问www.who.is,显示的是 Your IP is 211.68.2.18, 124.115.2.21
124.115.2.21 在ip138上查得是陕西电信的ip。
who.is这个站已经是在国外了,肯定不是免费模式能直接访问的。
测试了一下 www.hackthissite.org,成功。

注意了一下 netstat 的情况
D:\>netstat -ano | find "3732"
  TCP    10.1.16.4:3941         59.74.42.153:8080      ESTABLISHED     3732
  TCP    10.1.16.4:3944         59.74.42.153:8080      ESTABLISHED     3732
  TCP    10.1.16.4:3947         59.74.42.153:8080      ESTABLISHED     3732
  TCP    10.1.16.4:3948         59.74.42.153:8080      ESTABLISHED     3732
  TCP    10.1.16.4:3949         59.74.42.153:8080      ESTABLISHED     3732
  TCP    127.0.0.1:18081        0.0.0.0:0              LISTENING       3732
  TCP    127.0.0.1:18081        127.0.0.1:3940         ESTABLISHED     3732
  TCP    127.0.0.1:18081        127.0.0.1:3942         ESTABLISHED     3732
  TCP    127.0.0.1:18081        127.0.0.1:3943         ESTABLISHED     3732
  TCP    127.0.0.1:18081        127.0.0.1:3945         ESTABLISHED     3732
  TCP    127.0.0.1:18081        127.0.0.1:3946         ESTABLISHED     3732
  TCP    127.0.0.1:18082        0.0.0.0:0              LISTENING       3732
59.74.42.153 这个是解析出来的 edu_acc_userinfo.qq.com 的IP,正是昨天从od里看到的
直接访问这个ip的端口,能打开,设成代理,可用。

============================
刚才折腾了会儿,因为16.4打开那个端口没有任何返回,感觉不像是http协议
然后wireshark抓包分析,确认了,再试,结果就可以了
诡异啊

Monday, September 7, 2009

对腾讯TT代理webacc.exe的简单分析

联盟上domi发帖问“有没有对TT的教育网加速有兴趣的”
不想装软件,所以只是留了个邮箱,但是一直都没有人回复。

下了个tt,直接7zip解压,对出来的资源里的 [0] 再次用7zip解压,于是二进制文件资源拿到了

PEiD看了看\bin\webacc.exe,没有查出任何信息,从图标看,先是一个vs03以后的二进制文件默认图标,而且目录下还有vs8的runtime

OllyDBG载入。刚才PEiD没有任何信息,同样,这里看也没有加壳,直接查找资源,找到了127.0.0.1的字样,两处。
domi帖子里提到开的端口也是8081,直接转成16进制,1F91,搜常量
就在两个127.0.0.1的下边,就有 1F91 和 1F92 ,8081和8082 。。。

帖子里还提到,“进程里面只要有个叫TTraveler.exe的就可以用webacc.exe”
hmm, 再次搜索字符串资源,找到一个ttraveler.exe的,然后还有个 edu_acc_userinfo.qq.com 的字样。
还有个 %d.%d.%d.%d 显然是拼接ip,下边有个sprintf,上边有个 gethostbyname, 猜测可能是本地解析域名,然后以传参或者直接host的方式走代理吧。

暂时不管运作原理,先搞定进程检测的问题。
进入ttraveler.exe的地方。
直接下了个断点,但是貌似有反调试的部分,刚才od挂起时间有点长。重启,杀掉了sogou的进程

从 00401aa0开始的地方,是取出了进程列表,然后逐个比较进程名,看看有没有tt主进程的名称。
00401B0C   .  8D8424 201000>LEA EAX,DWORD PTR SS:[ESP+1020]
00401B13 > 68 A8834000 PUSH webacc.004083A8 ; ttraveler.exe
00401B18 . 50 PUSH EAX
00401B19 . FFD3 CALL EBX

这里进行了比较
在call之前断下来,一个一个看进程,看看哪个好改,突然发现了tsvncache.exe,长度一致,方便
直接 d eax,然后改内存。

在 代码结束之后,返回到上一级
0040160B   > \E8 10030000   CALL webacc.00401920
00401610 . 85C0 TEST EAX,EAX
00401612 . 74 07 JE SHORT webacc.0040161B
00401614 . E8 17000000 CALL webacc.00401630
00401619 .^ EB D6 JMP SHORT webacc.004015F1
0040161B > 6A 00 PUSH 0 ; /ExitCode = 0
0040161D . FF15 04804000 CALL DWORD PTR DS:[<&KERNEL32.ExitProces>; \ExitProcess

test eax, eax,然后je到了退出的地方。
于是测试一下00401612 : je -> jne
下个断点,重来。
上边的一个jmp回跳,应该是定时检查,没细看。
直接改动看看。
C:\Documents and Settings\Administrator>netstat -ano |find "8081"
TCP 127.0.0.1:8081 0.0.0.0:0 LISTENING 1028

C:\Documents and Settings\Administrator>netstat -ano |find "1028"
TCP 127.0.0.1:8081 0.0.0.0:0 LISTENING 1028
TCP 127.0.0.1:8082 0.0.0.0:0 LISTENING 1028


端口开了。基本可以认为进程检测过掉了,
测试浏览效果。
唔,不行,是一个squid的403页面。估计还是缺少什么头。
等啥时候弄一台机器有tt的,抓包试试吧。
基本改动的思路差不多了

不过,可以试试对刚才的进程检测的地方,直接把call改成mov eax, 1
再测试一下
C:\Documents and Settings\Administrator>netstat -ano |find "4136"
TCP 127.0.0.1:8081 0.0.0.0:0 LISTENING 4136
TCP 127.0.0.1:8082 0.0.0.0:0 LISTENING 4136


好吧,我试试改改端口。

我把 8081, 8082 改成 18081,18082,也就是46A1和46A2
0040559A  |.  66:C74424 48 >MOV WORD PTR SS:[ESP+48],1F91

004055B3  |.  66:C74424 48 >MOV WORD PTR SS:[ESP+48],1F92


C:\Documents and Settings\Administrator>netstat -ano |find "5192"
TCP 127.0.0.1:18081 0.0.0.0:0 LISTENING 5192
TCP 127.0.0.1:18082 0.0.0.0:0 LISTENING 5192



好吧,就这样吧
具体代理协议的验证细节,以后再说吧。

对端口的修改,请使用16进制编辑器,搜索 91 1f 和 92 1f,按你的需求改吧。(offset 0x559F, 0x55B8)

如果你愿意研究验证的部分,搜索 E8 10 03 00 00 改成 B8 01 00 00 00,就实现了刚才提到的call -> mov (offset 0x160a)
或者 je -> jnz 把紧下边的 74 07 改成 75 07 (offset 0x1612)

另外,我的webacc.exe 99656字节。

Thursday, April 23, 2009

Wine SogouExplorer as a Proxy Server

上一篇相关文章:http://blog.sskaje.name/2009/03/sogou.html
部分细节请翻阅此文


前些天把Ubuntu升级到了 9.04 beta,然后时不时去更新一下
之前企鹅也提出了,能不能在Ubuntu下wine一个sogou explorer来开代理
因为最早的方式是虚拟机和宿主机,用ssh tunnel的方式开代理
后来直接修改了sogounet.dll,把监听地址改成了0.0.0.0,直接对外开放服务

wubi装的ubuntu,直接把分区挂载了,进到sogou explorer的目录
wine配好
直接 ./SogouExplorer.exe 全是乱码
根据印象,把选项选了,然后打开,还是乱码

之前wine baidu hi的时候,配了riched32,当时换成中文环境,就可以正常显示了
结果现在,怎么弄都不成
索性就不考虑字体显示的问题了

直接 ./SogouExplorer.exe -proxy
sskaje@ubuntu:/media/App/Program Files/SogouExplorer$ ./SogouExplorer.exe  -proxy
fixme:mountmgr:harddisk_ioctl unsupported ioctl 74080
fixme:mountmgr:harddisk_ioctl unsupported ioctl 2d1400
fixme:mountmgr:harddisk_ioctl unsupported ioctl 2d0c10
fixme:mountmgr:harddisk_ioctl unsupported ioctl 74080
fixme:mountmgr:harddisk_ioctl unsupported ioctl 2d1400
fixme:mountmgr:harddisk_ioctl unsupported ioctl 2d0c10
PID:21
PORT:8081
CPORT:8082
PAC:http://127.0.0.1:8082/proxy.pac?t=71505
RET:SUCCESS
到这里就挂起了
而且还弹出了一个代理配置错误的msg box,跟之前在windows下一样

sudo netstat -anop | more
看了看,8081端口开了
tcp        0      0 0.0.0.0:8081            0.0.0.0:*               LISTEN      8445/wineserver  关闭 (0.00/0/0)
tcp 0 0 0.0.0.0:8082 0.0.0.0:* LISTEN 8445/wineserver 关闭 (0.00/0/0)

新开一个shell,直接测试
export http_proxy=http://localhost:8081
wget http://www.hackthissite.org/ -O /tmp/1.txt

果然,下载成功

wine下的 regedit 看了看那两个accelerator的选项,都为0
估摸着,这两个选项其实只是对标准的使用方式才有效吧

Sunday, March 29, 2009

【经验】Sogou 浏览器代理相关技巧整理

原创首发于 http://www.bitunion.org/thread-10132052-1-1.html


1 关于代理服务器
曾经尝试过跟sogou浏览器,但是后来放弃了
最开始也云把里边的pac脚本拿出来了(pac: proxy auto config 上网查查吧,用过ipcn.org的那个在线代理的肯定知道)
但是经测试,无效
于是也就没有继续尝试了
PAC脚本内容,来自 sogou浏览器根目录的 sogounet.dll


function FindProxyForURL(url, host){if(isPlainHostName(host)) return "DIRECT";if(!shExpMatch(url, "http*")) return "DIRECT";var ip = dnsResolve(host);// ipv6if(shExpMatch(ip, "*:*")) return "DIRECT"; // localif(isInNet(ip,"192.168.0.0","255.255.0.0")) return "DIRECT";else if(isInNet(ip,"10.0.0.0","255.0.0.0")) return "DIRECT";else if(isInNet(ip,"172.16.0.0","255.255.0.0")) return "DIRECT";else if(isInNet(ip,"169.254.0.0","255.255.0.0")) return "DIRECT";else if(isInNet(ip,"127.0.0.0","255.0.0.0")) return "DIRECT";// cernetelse if(isInNet(ip,"58.154.0.0","255.254.0.0")) return "DIRECT";else if(isInNet(ip,"58.192.0.0","255.240.0.0")) return "DIRECT";else if(isInNet(ip,"59.64.0.0","255.240.0.0")) return "DIRECT";else if(isInNet(ip,"113.54.0.0","255.254.0.0")) return "DIRECT";else if(isInNet(ip,"114.212.0.0","255.254.0.0")) return "DIRECT";else if(isInNet(ip,"114.214.0.0","255.255.0.0")) return "DIRECT";else if(isInNet(ip,"115.24.0.0","255.252.0.0")) return "DIRECT";else if(isInNet(ip,"115.154.0.0","255.254.0.0")) return "DIRECT";else if(isInNet(ip,"115.156.0.0","255.254.0.0")) return "DIRECT";else if(isInNet(ip,"115.158.0.0","255.255.0.0")) return "DIRECT";else if(isInNet(ip,"116.13.0.0","255.255.0.0")) return "DIRECT";else if(isInNet(ip,"116.56.0.0","255.254.0.0")) return "DIRECT";else if(isInNet(ip,"118.202.0.0","255.254.0.0")) return "DIRECT";else if(isInNet(ip,"118.228.0.0","255.254.0.0")) return "DIRECT";else if(isInNet(ip,"118.230.0.0","255.255.0.0")) return "DIRECT";else if(isInNet(ip,"120.94.0.0","255.254.0.0")) return "DIRECT";else if(isInNet(ip,"121.48.0.0","255.254.0.0")) return "DIRECT";else if(isInNet(ip,"121.52.160.0","255.255.224.0")) return "DIRECT";else if(isInNet(ip,"121.192.0.0","255.252.0.0")) return "DIRECT";else if(isInNet(ip,"121.248.0.0","255.252.0.0")) return "DIRECT";else if(isInNet(ip,"122.204.0.0","255.252.0.0")) return "DIRECT";else if(isInNet(ip,"125.216.0.0","255.248.0.0")) return "DIRECT";else if(isInNet(ip,"162.105.0.0","255.255.0.0")) return "DIRECT";else if(isInNet(ip,"166.111.0.0","255.255.0.0")) return "DIRECT";else if(isInNet(ip,"202.4.128.0","255.255.224.0")) return "DIRECT";else if(isInNet(ip,"202.38.64.0","255.255.192.0")) return "DIRECT";else if(isInNet(ip,"202.38.140.0","255.255.254.0")) return "DIRECT";else if(isInNet(ip,"202.38.184.0","255.255.248.0")) return "DIRECT";else if(isInNet(ip,"202.38.192.0","255.255.192.0")) return "DIRECT";else if(isInNet(ip,"202.112.0.0","255.248.0.0")) return "DIRECT";else if(isInNet(ip,"202.120.0.0","255.254.0.0")) return "DIRECT";else if(isInNet(ip,"202.127.216.0","255.255.248.0")) return "DIRECT";else if(isInNet(ip,"202.127.224.0","255.255.224.0")) return "DIRECT";else if(isInNet(ip,"202.179.240.0","255.255.240.0")) return "DIRECT";else if(isInNet(ip,"202.192.0.0","255.240.0.0")) return "DIRECT";else if(isInNet(ip,"203.91.120.0","255.255.248.0")) return "DIRECT";else if(isInNet(ip,"210.25.0.0","255.255.128.0")) return "DIRECT";else if(isInNet(ip,"210.25.128.0","255.255.192.0")) return "DIRECT";else if(isInNet(ip,"210.26.0.0","255.254.0.0")) return "DIRECT";else if(isInNet(ip,"210.28.0.0","255.252.0.0")) return "DIRECT";else if(isInNet(ip,"210.32.0.0","255.240.0.0")) return "DIRECT";else if(isInNet(ip,"211.64.0.0","255.248.0.0")) return "DIRECT";else if(isInNet(ip,"211.80.0.0","255.248.0.0")) return "DIRECT";else if(isInNet(ip,"218.192.0.0","255.248.0.0")) return "DIRECT";else if(isInNet(ip,"219.216.0.0","255.248.0.0")) return "DIRECT";else if(isInNet(ip,"219.224.0.0","255.248.0.0")) return "DIRECT";else if(isInNet(ip,"219.242.0.0","255.254.0.0")) return "DIRECT";else if(isInNet(ip,"219.244.0.0","255.252.0.0")) return "DIRECT";else if(isInNet(ip,"222.16.0.0","255.240.0.0")) return "DIRECT";else if(isInNet(ip,"222.192.0.0","255.240.0.0")) return "DIRECT";else return "PROXY " + host + ".local.acc.sogou.com:80; ";}


2 关于教育网限制

如果安装后的配置过程不选择启用那个代理功能,后来就没法再启用了
但是,注册表里
[code]HKEY_CURRENT_USER\Software\SogouExplorer\Accelerater[/code]
下边有两个值
VideoAccelerater
WebAccelerater
如果你的教育网加速功能不好使,那就把这个都设置成1

但是

sogou的ip检测有问题,尤其是学校这样的多出口的状态下,有时候会把代理加速功能给关掉


不过企鹅告诉了一个代理的使用方法:
命令行下,调用 SogouExplorer.exe -proxy 就会在本地开放一个端口,http代理,直接设置就行了

后来写bat,但是bat必须用 call 来调用,而不能直接开
内容如
reg add HKCU\Software\SogouExplorer\Accelerater /v VideoAccelerater /t REG_DWORD /d 1 /freg add HKCU\Software\SogouExplorer\Accelerater /v WebAccelerater /t REG_DWORD /d 1 /fcall "f:\Program Files\SogouExplorer\SogouExplorer.exe" -proxy

但是这个代理只是监听 127.0.0.1的8081端口,有时候会觉得很不方便

尝试着把监听的ip 127.0.0.1 改成 0.0.0.0,但是一直没有定位成功,于是放弃了


3 关于代理端口转发/共享
这是给*nix说的,或者说是有sshd的机器说的
因为昨天更新freebsd的虚拟机,结果嫌某个代理不好使,于是便想到了sogou的代理
但是这个只监听 127.0.0.1 的端口,怎么办?

SSH TUNNEL!

ssh -R 8080:127.0.0.1:8081 -l sskaje 192.168.181.130
连上去之后,ssh的那台服务器会开一个8080端口,所有发往这个端口的数据都会转发到本地的8081上
这样的话,
export http_proxy=http://localhost:8080cvsup -g -L 2 /etc/ports-supfile
于是就可以更新了


但是这个代理不是特别稳定,那没辙了



================ 更新 ==========================

4 关于sogou 浏览器 -proxy代理的监听IP的修改

之前想错了,居然忘记了代理不是在主程序里
于是刚才跟了下那个sogounet.dll
发现了几个127.0.0.1
都是push的
送进去的是同一个内存地址
hmm
修改
改成了 0.0.0.0

我的sogounet.dll版本是 1.0.1.105
数据的16进制 offset是 0x0007F9A4
注意
修改之后务必把后边的几位置成 0x00


==================================
UPDATE: Apr 15, 2009
临时扔到服务器上了,想测试一下修改后的sogounet.dll能扛多少连接
但是怕有BOF,于是 runas


reg add HKCU\Software\SogouExplorer\Accelerater /v VideoAccelerater /t REG_DWORD /d 1 /f
reg add HKCU\Software\SogouExplorer\Accelerater /v WebAccelerater /t REG_DWORD /d 1 /f
runas /user:services "E:\Progra~1\SogouExplorer\SogouExplorer.exe -proxy"
pause

加用户

但是,会报错
不影响使用