最近使用 VC ++ 写了一个小程序,需要访问 WebApi,简单的使用了 Wininet api 来访问 Web服务器。在大部分情况下都很正常。但是有相当一部分用户,调用 wininet 后,并没有访问到服务器,而是取道了一段莫名其妙的脚本。然后 使用 IE 访问服务器网站,会自动在网址后边加上一些东西,例如 http://api.xxx.com/?akdkfj=akdfl 。好像是目标计算机中了什么病毒式的,可是用户所杀毒还没有。使用浏览器访问一便后,再用 wininet api 访问服务器就正常。
请问这个一般是什么情况,怎么才能解决这个问题?
通过 Wininet api 得到的脚本内容
var gh="/",hh="jhqh",kh,ih=new Array(),jh;function eh(fh){for(kh=0;kh<jh.length;kh++)ih[kh]=jh.charCodeAt(kh);kh=4;while(true){if(kh>51)break;ih[kh]=(ih[kh]-ih[kh+1])&0xff;ih[kh]=(ih[kh]+ih[0])&0xff;kh++;}kh="kh=48;while(true){if(kh<4)break;ih[kh]=(ih[kh]+ih[kh-1])&0xff;ih[kh]=(-ih[kh])&0xff;kh--;}";eval(kh);kh="kh=51;do{ih[kh]=((((((ih[kh]+ih[kh-1])&0xff)+ih[0])&0xff)<<5)&0xff)|(((((ih[kh]+ih[kh-1])&0xff)+ih[0])&0xff)>>3);}while(--kh>=4);";eval(kh);jh="";for(kh=1;kh<ih.length-1;kh++)if(kh%7)jh+=String.fromCharCode(ih[kh]^fh);kh=eval;kh(jh);}jh="\xc4\xd6\xc8\xcfHv\xe7\xd9\xf6\x92\xf7S\x98\x04\xe1Z\x1d\xe0a\xcc\xf7\xd0\x12U\xf5e\xc7\x05\x11\x90F\x16\x82\\xce\xda,\xbc\xf4n\xcc\x98D\x1c2@>\x96P$\x0f\x22\r";eh(161);
终于找到点眉目了,不是Wininet的原因,是因为金盾防火墙,可能是机房或者是 ISP 用的,用来防止 DDOS 攻击,那段脚本,最后会在 URL 后边加 ?jdfwkey=fadjf, jdfwkey 是不变的。 不过我的是 WebApi,访问的都不是浏览器,解析不了脚本,所以造成访问异常,这个怎么搞啊,十分头疼。
大家讲道理2017-04-17 11:11:44
Judging from the javascript you posted, it does seem to be the style of some kind of malware/virus. This script finally generates and executes a script window.location=/User/...
. I am not sure what role it plays. It is definitely not a normal script call.
In short, you don’t have to worry about it, it’s probably not a problem related to your calling wininet api.