分类: WINDOWS
2008-09-22 19:05:53
实例对象:Internet TV
工具:wpe0.9、个人WEB服务器v1.5
一个网络电视软件,想要VIP功能需要合法的账号。尝试解决。
一、 测试软件
运行软件,任意输入账号,如图:
二、 拦截数据
打开wpe0.9,选择对应进程,开始监视,如图,按下原程序中的登陆按钮,提示账号非法。
得到如下数据:
1 192.168.1.2:1364 195.47.247.125:80 182 Send
0000 47 45 54 20 2F 73 63 72 69 70 74 73 2F 74 76 2F GET /scripts/tv/
0010 6C 6F 67 69 6E 2E 70 68 70 3F 75 73 65 72 6E 61 login.php?userna
0020 6D 65 3D 6C 61 6F 6D 6D 73 2B 26 70 61 73 73 77 me=laomms+&passw
0030 6F 72 64 3D 31 30 61 31 31 36 33 65 32 39 39 64 ord=10a1163e299d
0040 39 38 36 37 32 34 62 66 30 66 35 65 31 35 61 36 986724bf0f5e15a6
0050 36 64 32 65 20 48 54 54 50 2F 31 2E 31 0D 0A 55 6d2e HTTP/1.1..U
0060 73 65 72 2D 41 67 65 6E 74 3A 20 49 4E 54 45 52 ser-Agent: INTER
0070 4E 45 54 54 56 0D 0A 48 6F 73 74 3A 20 77 77 77 NETTV..Host: www
0080 2E 6F 6E 6C 69 6E 65 2D 6D 65 64 69 61 2D 61 72 .online-media-ar
0090 63 68 69 76 65 2E 6E 65 74 0D 0A 43 61 63 68 65 chive.net..Cache
00A0 2D 43 6F 6E 74 72 6F 6C 3A 20 6E 6F 2D 63 61 63 -Control: no-cac
00B0 68 65 0D 0A 0D 0A he....
2 195.47.247.125:80 192.168.1.2:1364 181 Recv
0000 48 54 54 50 2F 31 2E 31 20 32 30 30 20 4F 4B 0D HTTP/1.1 200 OK.
0010 0A 44 61 74 65 3A 20 46 72 69 2C 20 31 38 20 4A .Date: Fri, 18 J
0020 75 6C 20 32 30 30 38 20 30 36 3A 34 38 3A 33 34 ul 2008 06:48:34
0030 20 47 4D 54 0D 0A 53 65 72 76 65 72 3A 20 41 70 GMT..Server: Ap
0040 61 63 68 65 0D 0A 58 2D 50 6F 77 65 72 65 64 2D ache..X-Powered-
0050 42 79 3A 20 50 48 50 2F 35 2E 32 2E 36 0D 0A 43 By: PHP/5.2.6..C
0060 6F 6E 6E 65 63 74 69 6F 6E 3A 20 63 6C 6F 73 65 onnection: close
0070 0D 0A 54 72 61 6E 73 66 65 72 2D 45 6E 63 6F 64 ..Transfer-Encod
0080 69 6E 67 3A 20 63 68 75 6E 6B 65 64 0D 0A 43 6F ing: chunked..Co
0090 6E 74 65 6E 74 2D 54 79 70 65 3A 20 74 65 78 74 ntent-Type: text
00A0 2F 68 74 6D 6C 0D 0A 0D 0A 35 20 20 0D 0A 46 41 /html....5 ..FA
00B0 4C 53 45 0D 0A LSE..
3 195.47.247.125:80 192.168.1.2:1364 5 Recv
0000 30 0D 0A 0D 0A 0....
从这些资料我们可以整理出软件的验证地址及返回结果等资料:
验证地址是,发送的数据是输入的用户名和密码的MD5数据:
我们如果连起来在浏览器中输入这个地址返回的是FALSE.
很容易猜,正确的数据可能是返回TRUE。
我们把显示FALSE的那个网页保存为index.html,然后在UltraEdit中编辑为TRUE后保存。
三、 修改hosts
打开C:\WINDOWS\system32\drivers\etc\hosts,增加验证的服务器地址:
127.0.0.1 localhost
127.0.0.1
四、 做本地验证
打开个人服务器WebMan, 设置好站点目录,比如D:\WebServer,那么D:\WebServer就成为WEB服务器目录,把修改后的index.html放入到这个目录,开启WEB服务。如图,这时再次来测试软件,输入任意账号后返回都是TRUE,因为验证的时候已经转到本地服务器,显示登陆成功。
当然,这只是个例子,因为正在这样做后,在同一个服务器地址中软件还有其他的验证,比如更新频道等,如果开着本地服务器,到时候都会转到本地服务器中,根本不可能得到更新信息。
我想,如果通过HOOK WSAConnect、WSASend、WSARecv、connect、send、recv等函数,过滤拦截到的数据,如果是注册码验证的就返回正确值,如果是更新软件信息的就不做处理。这样应该可以做到万无一失了。