教你如何破解各种网络验证.docx
《教你如何破解各种网络验证.docx》由会员分享,可在线阅读,更多相关《教你如何破解各种网络验证.docx(4页珍藏版)》请在冰点文库上搜索。
![教你如何破解各种网络验证.docx](https://file1.bingdoc.com/fileroot1/2023-6/15/2f61c3b5-226d-438d-8730-84ff8ac219ca/2f61c3b5-226d-438d-8730-84ff8ac219ca1.gif)
教你如何破解各种网络验证
教你如何破解各种网络验证
教你如何破解各种网络验证
文件夹内有几个文件,分别是main.dat,start.exe
OD加载start.exe,退出,弹出软件窗口,OD下断CreateProcess,发现其打开的是main.dat,用UE查看main.dat,原来是个可执行文件被改名了,于是改名为main.exe。
PE查壳ASPack2.12->AlexeySolodovnikov
直接cooldumper搞定
开始分析
点击登录,出现MessageboxW,未注册用户,窃喜,bpMessageBoxW.
果断断住,看堆栈调用情况
0013F550 0065A066 /CALL到MessageBoxW
0013F554 007802CC |hOwner=007802CC('三国哈哈1.17',class='TLoginForm',parent=018803B2)
0013F558 00C6F33C |Text="?
B4,"",D7,"",A2,"",B2,"嵊?
BB,"?
0013F55C 00C76544 |Title=""D7,"",A2,"意"
0013F560 00000000 \Style=MB_OK|MB_APPLMODAL
0013F564 0013F93C 指向下一个SEH记录的指针
0013F568 00546D1F SE处理程序
0013F56C 0013F5F8
0013F570 0013F798
0013F574 0044E700 dumped_.0044E700
0013F578 00BC67C0 ASCII"pkD"
0013F57C 00000000
0013F580 00000000
0013F584 00000000
0013F588 00000000
0013F58C 00000000
0013F590 00000000
0013F594 00000000
0013F598 00000000
0013F59C 00000000
0013F5A0 00C6F33C ASCII"*g鑜孮(u7b"
0013F5A4 00C76544
0013F5A8 00000000
0013F5AC 00000000
0013F5B0 00C8AA7C UNICODE"d00b-207dcdd2"
0013F5B4 00C8AA1C UNICODE"D00B-207DCDD2"
0013F5B8 00C8AA4C UNICODE"d00b-207dcdd2"
0013F5BC 00C8EC14 UNICODE"D:
\sg117\script\"
0013F5C0 00000000
0013F5C4 00000000
0013F5C8 00000000
0013F5CC 00000000
0013F5D0 00CA581C UNICODE"D:
\sg117\upup.exe"
0013F5D4 00000000
0013F5D8 00CA57E4 UNICODE"D:
\sg117\start.exe"
0013F5DC 00C8EC14 UNICODE"D:
\sg117\script\"
0013F5E0 00000000
0013F5E4 00CA5774 UNICODE"D:
\sg117\updata.exe"
0013F5E8 00000000
0013F5EC 00000000
0013F5F0 00C8A9EC UNICODE"D00B-207DCDD2"
看到最后面几行有D00b什么的,是软件上提示的机器码。
其他没什么营养,先放住不管。
可能我才疏学浅,认为这种外挂一定是网络验证的,所以也没去深究这个D00B什么的,既然MessageBox没看出什么端倪,换方法。
bpsend,bprecv全部打好断点
点击登录。
断下在bpsend,看发包data,是明文,如下
0013F2A8 |00C214F8 ASCII"GETHttp:
//60.190.222.188:
8000/wglog...09C85&port=8020HTTP/1.1",CR,LF,"Host:
60.190.222.188",CR,LF,"Connection:
Ke"...
好长的一段串啊,不管它查下堆栈很容易发现它的组包过程。
几个Unicode串摆在堆栈里面,是由之前的D00B-207DCDD2+我硬盘号+我MAC地址+一个时间数,然后看长度好像将这些参数组合进行了一次SHA运算,得出的这个串.当然这只是猜想,我认为没必要去跟组包的算法。
毕竟网络验证都是通过回包的信息进行各种跳,各种逻辑的。
直接F9跑到recv这里看看,收包明文,如下
0013F274 |0110A048 ASCII"HTTP/1.1200OK",CR,LF,"Connection:
keep-alive",CR,LF,"Content-Type:
text/html",CR,LF,"Content-Length:
20",CR,LF,"Server:
Indy/9.00.10",CR,LF,CR,LF,"REG:
AAEDGWE29AB8C"
恩服务器回来的包很短REG:
AAEDGWE29AB8C
分析一下发包的包值吧,每次发包相同值都是9D1669ADA23091A6F454E45991E4EB2258E2B2DF5B591B
不同点的地方在于后面,如果我每次把不同的值记录下来,发一样的,服务器是否会给我回一样的包呢,测试一下。
使用一次截获的包进行测试F7A78CB1449ADBF6DC2C2DECE8F09C85
013F2A8 |00C214F8 ASCII"GETHttp:
//60.190.222.188:
8000/wglog...BF6DC2C2DECE8F09C85
服务器回的
结果两次完全一致
0013F274 |0110A048 ASCII"HTTP/1.1200OK",CR,LF,"Connection:
keep-alive",CR,LF,"Content-Type:
text/html",CR,LF,"Content-Length:
20",CR,LF,"Server:
Indy/9.00.10",CR,LF,CR,LF,"REG:
AAED1FAE8829AB8C"
0013F274 |0110A048 ASCII"HTTP/1.1200OK",CR,LF,"Connection:
keep-alive",CR,LF,"Content-Type:
text/html",CR,LF,"Content-Length:
20",CR,LF,"Server:
Indy/9.00.10",CR,LF,CR,LF,"REG:
AAED1FAE8829AB8C"
由此断定,服务器那边并没有随机算法。
客户端和服务器端只有一方进行了随机处理,外挂并没有做双面的随机同步。
那么请各位大牛帮小弟分析一下这样做是否可行?
hook其SendApi,修改验证服务器地址,改写为本地
购买一个正版KEY,截获正确的发包收包的数据,记录
然后每次hookSend将包重组,发给本地服务器,本地服务器返回刚才截获到的正确回包值,是否就可以破解。
追到了一个地方,那个地方将Reg后面的值push进去,但是在里面没进行什么操作就ret了。
不知道是不是关键点。
00426FB5 85C0 test eax,eax
00426FB7 7405 je short00426FBE
00426FB9 83E804 sub eax,4
00426FBC 8B00 mov eax,dwordptr[eax]
00426FBE 8BD8 mov ebx,eax
00426FC0 85DB test ebx,ebx
00426FC2 7416 je short00426FDA
00426FC4 8BCB mov ecx,ebx
00426FC6 03C9 add ecx,ecx
00426FC8 8B55E0 mov edx,dwordptr[ebp-20] ;将服务器返回信息给edx
00426FCB 8B45F8 mov eax,dwordptr[ebp-8]
00426FCE E881C4FDFF call 00403454
下了内存访问断追到这里。
EDX里面保存着服务器返回REG后面的信息,但是不知如何追到比对算法。