<!-- 通过枚举KEY实现自动解密XOR shellcode -->
<!-- Written by glacier_lk -->
<!-- Build090515 -->
<title>XOR KEY Detective v1.0</title>
<center>
<input value="AutoDetection" type=button onclick=(txt.value=AutoXor())><br>
<font color="#FF0000">请输入完整的shellcode(至少确保链接部分的完整!):</font><br>
<textarea id=txt rows="33" cols="85"></textarea>
</center>
<script>
function AutoXor()
{
jnh=txt.value;//保存一份输入值。
for(j=0;j<255;j++)
{
if(j==0)
{
lk=shellcode();
}
else
{
lk=xorshellcode(jnh,j);
}
if(lk.search("http://")!=-1)//包含“http://”字符串。
{
txt.value=lk;
if(confirm("Abort Detecting?"))
{
txt.value=lk;
alert("Detected XOR KEY:0x"+j.toString(16));
return lk; //包含“http”且用户同意终止继续运行程序则返回结果。
}
else
{
txt.value=jnh;//包含“http://”但用户不允许终止程序,则替换掉刚才的解密结果。
}
}
}
}
function shellcode()
{
string=txt.value;
txt.value=""
ustr=unescape(string);
var code,str="";
var high,low=0;
glacierlk="";
for(var i=0;i<ustr.length;i++)
{
code=ustr.charCodeAt(i);
low=code%256;
high=(code-low)/256;
glacierlk+=(String.fromCharCode(low)+String.fromCharCode(high));
}
return glacierlk;
}
function xorshellcode(str,key)//带XOR密钥的shellcode解密
{
lk=str.split("%u");//去除“%u”并分解掉字符串。
glacierlk="";
for(i=0;i<lk.length;i++)//对字符串中的每个字段进行XOR处理。
{
glacierlk+=xors(lk,key);
}
glacierlk=replaceNull(glacierlk);//在转换为字符前,去掉空字符。
glacierlk=unescape(glacierlk);//转换字符。
return glacierlk;
}
function xors(strs,key)
{
str1=strs.substr(0,2);//shellcode低位
str2=strs.substring(2);//shellcode高位
str1=(parseInt(str1,16)^parseInt(key,10));
str1=str1.toString(16);
if(str1.length<2)
{
str1=new Array(3-str1.length).join("0")+str1;
}
str2=(parseInt(str2,16)^parseInt(key,10));
str2=str2.toString(16);
if(str2.length<2)
{
str2=new Array(3-str2.length).join("0")+str2;
}
strs="%"+str2+"%"+str1;
return strs;
}
function divide2(ss)
{
return ss.substring(2);
}
function replaceNull(strs)
{
Strstr = strs;
SourStr = ""
ObjStr = ""
strs = VBreplace(Strstr,SourStr,ObjStr);
return strs;
}
</script>
<script language="VBScript">
Function VBreplace(Strstr,SourStr,ObjStr)
VBreplace = replace(Strstr,SourStr,ObjStr)
End Function
</script>