R语言的应用

Python010

R语言的应用,第1张

软件破解,加密解密,代码速度优化,底层开发(例如DSP,BIOS,EC,嵌入式开发)等等

汇编的优势:代码占用空间小,速度快,代码可硬件定位(上电开机代码都必须用汇编写),对于特定CPU优化好,可以直接使用CPU特性(直接操作IO,memory,MSR寄存器等),例如MMX,浮点运算

你的代码解密后的内容如下:

var preClassName=""function list_sub_detail(Id,item){if(preClassName!=""){getObject(preClassName).className="left_back"}if(getObject(Id).className=="left_back"){getObject(Id).className="left_back_onclick"outlookbar.getbyitem(item)preClassName=Id}}function getObject(objectId){if(document.getElementById&&document.getElementById(objectId)){return document.getElementById(objectId)}else if(document.all&&document.all(objectId)){return document.all(objectId)}else if(document.layers&&document.layers[objectId]){return document.layers[objectId]}else{return false}}function outlook(){this.titlelist=new Array()this.itemlist=new Array()this.addtitle=addtitlethis.additem=additemthis.getbytitle=getbytitlethis.getbyitem=getbyitemthis.getdefaultnav=getdefaultnav}function theitem(intitle,insort,inkey,inisdefault){this.sortname=insortthis.key=inkeythis.title=intitlethis.isdefault=inisdefault}function addtitle(intitle,sortname,inisdefault){outlookbar.itemlist[outlookbar.titlelist.length]=new Array()outlookbar.titlelist[outlookbar.titlelist.length]=new theitem(intitle,sortname,0,inisdefault)return(outlookbar.titlelist.length-1)}function additem(intitle,parentid,inkey){if(parentid>=0&&parentid<=outlookbar.titlelist.length){insort="item_"+parentidoutlookbar.itemlist[parentid][outlookbar.itemlist[parentid].length]=new theitem(intitle,insort,inkey,0)return(outlookbar.itemlist[parentid].length-1)}else additem=-1}function getdefaultnav(sortname){var output=""for(i=0i<outlookbar.titlelist.lengthi++){if(outlookbar.titlelist[i].isdefault==1&&outlookbar.titlelist[i].sortname==sortname){output+="<div class=list_tilte id=sub_sort_"+i+" onclick=\"hideorshow('sub_detail_"+i+"')\">"output+="<span>"+outlookbar.titlelist[i].title+"</span>"output+="</div>"output+="<div class=list_detail id=sub_detail_"+i+"><ul>"for(j=0j<outlookbar.itemlist[i].lengthj++){output+="<li id="+outlookbar.itemlist[i][j].sortname+j+" onclick=\"changeframe('"+outlookbar.itemlist[i][j].title+"','"+outlookbar.titlelist[i].title+"','"+outlookbar.itemlist[i][j].key+"')\"><a href=#>"+outlookbar.itemlist[i][j].title+"</a></li>"}output+="</ul></div>"}}getObject('right_main_nav').innerHTML=output}function getbytitle(sortname){var output="<ul>"for(i=0i<outlookbar.titlelist.lengthi++){if(outlookbar.titlelist[i].sortname==sortname){output+="<li id=left_nav_"+i+" onclick=\"list_sub_detail(id,'"+outlookbar.titlelist[i].title+"')\" class=left_back>"+outlookbar.titlelist[i].title+"</li>"}}output+="</ul>"getObject('left_main_nav').innerHTML=output}function getbyitem(item){var output=""for(i=0i<outlookbar.titlelist.lengthi++){if(outlookbar.titlelist[i].title==item){output="<div class=list_tilte id=sub_sort_"+i+" onclick=\"hideorshow('sub_detail_"+i+"')\">"output+="<span>"+outlookbar.titlelist[i].title+"</span>"output+="</div>"output+="<div class=list_detail id=sub_detail_"+i+" style='display:block'><ul>"for(j=0j<outlookbar.itemlist[i].lengthj++){output+="<li id="+outlookbar.itemlist[i][j].sortname+"_"+j+" onclick=\"changeframe('"+outlookbar.itemlist[i][j].title+"','"+outlookbar.titlelist[i].title+"','"+outlookbar.itemlist[i][j].key+"')\"><a href=#>"+outlookbar.itemlist[i][j].title+"</a></li>"}output+="</ul></div>"}}getObject('right_main_nav').innerHTML=output}function changeframe(item,sortname,src){if(item!=""&&sortname!=""){window.top.frames['mainFrame'].getObject('show_text').innerHTML=sortname+" <img src=images/slide.gif broder=0 /> "+item}if(src!=""){window.top.frames['manFrame'].location=src}}function hideorshow(divid){subsortid="sub_sort_"+divid.substring(11)if(getObject(divid).style.display=="none"){getObject(divid).style.display="block"getObject(subsortid).className="list_tilte"}else{getObject(divid).style.display="none"getObject(subsortid).className="list_tilte_onclick"}}function initinav(sortname){outlookbar.getdefaultnav(sortname)outlookbar.getbytitle(sortname)window.top.frames['manFrame'].location="manFrame.html"}document.write("<script src=js/nav.js></"+"script>")

一:最简单的加密解密

大家对于JAVASCRIPT函数escape()和unescape()想必是比较了解啦(很多网页加密在用它们),分别是编码和解码字符串,比如例子代码用escape()函数加密后变为如下格式:

alert%28%22%u9ED1%u5BA2%u9632%u7EBF%22%29%3B

如何?还看的懂吗?当然其中的ASCII字符"alert"并没有被加密,如果愿意我们可以写点JAVASCRIPT代码重新把它加密如下:

%61%6C%65%72%74%28%22%u9ED1%u5BA2%u9632%u7EBF%22%29%3B

呵呵!如何?这次是完全都加密了!

当然,这样加密后的代码是不能直接运行的,幸好还有eval(codeString)可用,这个函数的作用就是检查JavaScript代码并执行,必选项 codeString 参数是包含有效 JavaScript 代码的字符串值,加上上面的解码unescape(),加密后的结果如下:

<SCRIPT LANGUAGE="JavaScript">

var code=unescape("%61%6C%65%72%74%28%22%u9ED1%u5BA2%u9632%u7EBF%22%29%3B")

eval(code)

</SCRIPT>

是不是很简单?不要高兴,解密也就同样的简单,解密代码都摆给别人啦(unescape())!呵呵

二:转义字符"\"的妙用

大家可能对转义字符"\"不太熟悉,但对于JavaScript提供了一些特殊字符如:\n (换行)、 \r (回车)、\' (单引号 )等应该是有所了解的吧?其实"\"后面还可以跟八进制或十六进制的数字,如字符"a"则可以表示为:"1"或"\x61"(注意是小写字符"x"),至于双字节字符如汉字"黑"则仅能用十六进制表示为"\u9ED1"(注意是小写字符"u"),其中字符"u"表示是双字节字符,根据这个原理例子代码则可以表示为:

八进制转义字符串如下:

<SCRIPT LANGUAGE="JavaScript">

eval("14524\u9ED1\u5BA2\u9632\u7EBF")

</SCRIPT>

十六进制转义字符串如下:

<SCRIPT LANGUAGE="JavaScript">

eval("\x61\x6C\x65\x72\x74\x28\x22\u9ED1\u5BA2\u9632\u7EBF\x22\x29\x3B")

</SCRIPT>

这次没有了解码函数,因为JavaScript执行时会自行转换,同样解码也是很简单如下:

<SCRIPT LANGUAGE="JavaScript">

alert("\x61\x6C\x65\x72\x74\x28\x22\u9ED1\u5BA2\u9632\u7EBF\x22\x29\x3B")

</SCRIPT>

就会弹出对话框告诉你解密后的结果!

三:使用Microsoft出品的脚本编码器Script Encoder来进行编码

工具的使用就不多介绍啦!我是直接使用JavaScript调用控件Scripting.Encoder完成的编码!代码如下:

<SCRIPT LANGUAGE="JavaScript">

var Senc=new ActiveXObject("Scripting.Encoder")

var code='<SCRIPT LANGUAGE="JavaScript">\r\nalert("《黑客防线》")\r\n<\/SCRIPT>'

var Encode=Senc.EncodeScriptFile(".htm",code,0,"")

alert(Encode)

</SCRIPT>

编码后的结果如下:

<SCRIPT LANGUAGE="JScript.Encode">#@~^FgAAAA==@#@&lsDD`J黑客防线r#p@#@&FgMAAA==^#~@</SCRIPT>

够难看懂得吧?但相应的解密工具早已出来,而且连解密网页都有!因为其解密网页代码过多,我就不多说拉!给大家介绍一下我独创的解密代码,如下:

<SCRIPT LANGUAGE="JScript.Encode">

function decode(){

#@~^FgAAAA==@#@&lsDD`J黑客防线r#p@#@&FgMAAA==^#~@

}

alert(decode.toString())

</SCRIPT>

咋样?够简单吧?它是原理是:编码后的代码运行前IE会先对其进行解码,如果我们先把加密的代码放入一个自定义函数如上面的decode()中,然后对自定义函数decode调用toString()方法,得到的将是解码后的代码!

如果你觉得这样编码得到的代码LANGUAGE属性是JScript.Encode,很容易让人识破,那么还有一个几乎不为人知的window对象的方法execScript(),其原形为:

window.execScript( sExpression, sLanguage )

参数:

sExpression:  必选项。字符串(String)。要被执行的代码。

sLanguage :  必选项。字符串(String)。指定执行的代码的语言。默认值为 Microsoft JScript

使用时,前面的"window"可以省略不写!

利用它我们可以很好的运行编码后的JavaScript代码,如下:

<SCRIPT LANGUAGE="JavaScript">

execScript("#@~^FgAAAA==@#@&lsDD`J黑客防线r#p@#@&FgMAAA==^#~@","JScript.Encode")

</SCRIPT>

你可以利用方法二对其中的""号内的字符串再进行编码,使得"JScript.Encode"以及编码特征码"#@~^"不出现,效果会更好!

四:任意添加NUL空字符(十六进制00H)

一次偶然的实验,使我发现在HTML网页中任意位置添加任意个数的"空字符",IE照样会正常显示其中的内容,并正常执行其中的JavaScript 代码,而添加的"空字符"我们在用一般的编辑器查看时,会显示形如空格或黑块,使得原码很难看懂,如用记事本查看则"空字符"会变成"空格",利用这个原理加密结果如下:(其中显示的"空格"代表"空字符")

<S C RI P T L ANG U A G E =" J a v a S c r i p t ">

a l er t (" 黑 客 防 线")

</ SC R I P T>

如何?是不是显得乱七八糟的?如果不知道方法的人很难想到要去掉里面的"空字符"(00H)的!

五:无用内容混乱以及换行空格TAB大法

在JAVASCRIPT代码中我们可以加入大量的无用字符串或数字,以及无用代码和注释内容等等,使真正的有用代码埋没在其中,并把有用的代码中能加入换行、空格、TAB的地方加入大量换行、空格、TAB,并可以把正常的字符串用"\"来进行换行,这样就会使得代码难以看懂!如我加密后的形式如下:

<SCRIPT LANGUAGE="JavaScript">

"xajgxsadffgds"1234567890

625623216var $=0alert//@$%%&*()(&(^%^

//cctv function//

(//hhsaasajx xc

/*

asjgdsgu*/

"黑\

\

客\

防线"//ashjgfgf

/*

@#%$^&%667r45fggbhytjty

*/

//window

)

"#@$#%@#432hu"212351436

</SCRIPT>

至少如果我看到这样的代码是不会有心思去分析它的,你哪?

六:自写解密函数法

这个方法和一、二差不多,只不过是自己写个函数对代码进行解密,很多VBS病毒使用这种方法对自身进行加密,来防止特征码扫描!下面是我写的一个简单的加密解密函数,

加密代码如下(详细参照文件"加密.htm"):

<SCRIPT LANGUAGE="JavaScript">

function compile(code)

{

var c=String.fromCharCode(code.charCodeAt(0)+code.length)

for(var i=1i<code.lengthi++){

c+=String.fromCharCode(code.charCodeAt(i)+code.charCodeAt(i-1))

}

alert(escape(c))

}

compile('alert("《黑客防线》")')

</SCRIPT>

运行得到加密结果为:

o%CD%D1%D7%E6%9CJ%u9EF3%uFA73%uF1D4%u14F1%u7EE1Kd

相应的加密后解密的代码如下:

<SCRIPT LANGUAGE="JavaScript">

function uncompile(code)

{

code=unescape(code)

var c=String.fromCharCode(code.charCodeAt(0)-code.length)

for(var i=1i<code.lengthi++){

c+=String.fromCharCode(code.charCodeAt(i)-c.charCodeAt(i-1))

}

return c

}

eval(uncompile("o%CD%D1%D7%E6%9CJ%u9EF3%uFA73%uF1D4%u14F1%u7EE1Kd"))

</SCRIPT>

七:错误的利用

利用try{}catch(e){}结构对代码进行测试解密,虽然这个想法很好(呵呵,夸夸自己),因为实用性不大,我仅给个例子

<SCRIPT LANGUAGE="JavaScript">

var a='alert("《黑客防线》")'

var c=""

for(var i=0i<a.lengthi++){

c+=String.fromCharCode(a.charCodeAt(i)^61)}

alert(c)

//上面的是加密代码,当然如果真正使用这个方法时,不会把加密写上的

//现在变量c就是加密后的代码

//下面的函数t()先假设初始密码为0,解密执行,

//遇到错误则把密码加1,然后接着解密执行,直到正确运行

var d=c//保存加密后的代码

var b=0//假定初始密码为0

t()

function t(){

try{eval(c)}catch(e){

c=""

for(var i=0i<d.lengthi++){

c+=String.fromCharCode(d.charCodeAt(i)^b)}

b+=1

t()

//setTimeout("t()",0)

}

}

</SCRIPT>