此篇文章摘自 百度空间 "吾语" 非常感谢
![](https://i-blog.csdnimg.cn/blog_migrate/369f31c9f874ca73f058d8ae96baf6f8.jpeg)
需要一个jQuery的下拉菜单导航条,找了一圈,apycom.com的效果很不错。但是代码有加密,修改不方便,而且如果是免费应用必须添加 back link,有点讨厌。收费版要29.95刀一只,还不如自己写一个。没时间写,干脆试着破解下。
apycom一共有14个样式,道理的一样的。加密代码在menu.js中的最后一段。看了一下,Base64。此处建议使用Notepad2,可以高亮匹配下括号,看看代码结束在哪里。
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('1A(h(){1D((h(k,s){8 f={a:h(p){8 s="1E+/=";8 o="";8 a,b,c="";8 d,e,f,g="";8 i=0;1G{d=s.N(p.M(i++));e=s.N(p.M(i++));f=s.N(p.M(i++));g=s.N(p.M(i++));a=(d<<2)|(e>>4);b=((e&15)<<4)|(f>>2);c=((f&3)<<6)|g;o=o+V.T(a);m(f!=1f)o=o+V.T(b);m(g!=1f)o=o+V.T(c);a=b=c="";d=e=f=g=""}1P(i<p.t);Y o},b:h(k,p){s=[];Z(8 i=0;i<E;i++)s[i]=i;8 j=0;8 x;Z(i=0;i<E;i++){j=(j+s[i]+k.19(i%k.t))%E;x=s[i];s[i]=s[j];s[j]=x}i=0;j=0;8 c="";Z(8 y=0;y<p.t;y++){i=(i+1)%E;j=(j+s[i])%E;x=s[i];s[i]=s[j];s[j]=x;c+=V.T(p.19(y)^s[(s[i]+s[j])%E])}Y c}};Y f.b(k,f.a(s))})("1B","1C/D/1H/1I/1O+1z/1N/1M+1J/1K/1L/9+1Q+1q/1l+1m/1k/1o+1j+1i/1n/1y+1v/1p+1w+1x/1u+1s+1r/1t/1F+1U/u/2h/2i+2j/U+2g+2f+2l+2c/2d+2e/1R/2k+2p/2m+2q/2n+2o/2a/A/1X="));8 F=($.1b.1Y&&$.1b.1Z.1W(0,1)==\'6\');m(F)$(\'#l\').1V(\'F\');$(\'5 5\',\'#l\').7({I:\'C\',1S:0,1T:2b});$(\'.l>z\',\'#l\').Q(h(){8 5=$(\'5:B\',n);m(5.t){m(!5[0].O)5[0].O=5.P();5.7({P:v,S:\'X\'}).L(R,h(i){$(\'#l>5>z.16\').7(\'17\',\'X\');$(\'a:B\',5[0].20).7({12:\'#21\',J:\'#27\'});i.7(\'I\',\'1h\').w({P:5[0].O},{14:1g,13:h(){5.7(\'S\',\'10\')}})})}},h(){8 5=$(\'5:B\',n);m(5.t){8 7={I:\'C\',P:5[0].O};8 a=$(\'a:B\',n).7({12:\'C\',J:\'1c\'});m(F)a.7({J:\'#W\',1d:\'1a(r=#W)\'});$(\'#l>5>z.16\').7(\'17\',\'10\');5.28().L(1,h(i){i.7(7)})}});$(\'5 5 z\',\'#l\').Q(h(){8 5=$(\'5:B\',n);m(5.t){m(!5[0].K)5[0].K=5.G();5.7({G:0,S:\'X\'}).L(1e,h(i){i.7(\'I\',\'1h\').w({G:5[0].K},{14:1g,13:h(){5.7(\'S\',\'10\')}})})}},h(){8 5=$(\'5:B\',n);m(5.t){8 7={I:\'C\',G:5[0].K};5.L(29,h(i){i.w({G:0},{14:1e,13:h(){$(n).7(7)}})})}});$(\'#l 5.l\').26({25:R});8 11=$(\'.l>z>a\',\'#l\').7({12:\'C\',22:\'C\'});m(F)11.7({J:\'#W\',1d:\'1a(r=#W)\'});23{11.7(\'J\',\'1c\').Q(h(){$(n).w({r:\'H(v,v,v)\'},18)},h(){$(n).w({r:\'H(q,q,q)\'},R)});$(\'.l>z>a>24\',\'#l\').7(\'r\',\'H(q,q,q)\').Q(h(){$(n).w({r:\'H(v,v,v)\'},18)},h(){$(n).w({r:\'H(q,q,q)\'},R)})}});',62,151,'|||||ul||css|var|||||||||function||||menu|if|this|||150|color||length||30|animate|||li||first|none||256|ie6|width|rgb|display|borderColor|wid|retarder|charAt|indexOf|hei|height|hover|400|overflow|fromCharCode||String|171717|hidden|return|for|visible|links|background|complete|duration||back|visibility|800|charCodeAt|chroma|browser|transparent|filter|100|64|300|block|eZcTl8pt6WK0ZgvMqTiF1|7rmpRHXIrXptnnRsXt5l2VvrchCdhw0pYoKza|RIiEKAoMuXDWTt2zN0AHuJeKvdX65Y|Z74bRv2YqPYs8WUpq75WM2vh3T7znzdDDlM8JULaYD6out|7LedDPJY|5I3Ua60IwqKDDBC1gUFQvStujCC6B8y4ICUnCS4LKFcRg8tfh2DERH88jNjJ8G4GqZLCXC2mVtUH8rpzyybVxwfLeelARlxE|DoWIsI4uH3euQKmG|3EpRqidIEMAhyMlu8GC0E8Aa0HYZz9j0BBnHp9MS0mXtxW8qncD|l0u2To|zW27EWraidVDAGTnmos93binFMl0ZctoxzISDVn8|rLLt|gFw4i|HMD1ErmvKr46zEViPi0lz|29jRtNPr2Yvn5N5FVvc2ScqggEerPlbYYUdxg1lNdS6tny0vkJT9snm|UByNyB|FJbAp|duswgyRnB|D0C53U7mjRkvW72ZNtnsTiX1Xpu3rsknKHxz4lUVLDWDJNqxDLUQy5NRXA3J07wQEDI|jQuery|hZiuHlfE|LqYGEtutMU7HI|eval|ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789|bf9xsMfJUHUzaGzoe8Io|do|ju6m7ktpGzVgShWb4b2U8pu9Wzwskbz1yZQ3SHITLn5tXmRSNbfuZCj7|Q7OK076JqFbbA4iA4GIXbHzpRV9xzcOx|iYgi6lviGRq2SE|dwT7dNkGHSAV|3sOzztGqnu2zdaEZr57pZgVRI6SImv5Nw|ioN2DZ14|sAq3urCKV9YyJQwCzF|p2ic6FJhyC11VaHpgIdqZDePPdhF1HMXF042Sg|while|JVV7|vHS9GfxIPJnjZ4pTduLclBMmtixk2MnnjYJgfB1mw|left|top|QYl8lg7HWw70gxmF7kmdgjP3jlIrMUezwxbWKuwkhYjkEr|addClass|substr|wMl7eVUw3fsAD87b6Y3MkHOXrnSGFSsQo|msie|version|parentNode|eee|borderBottom|else|span|speed|lavaLamp|fff|stop|50|TxDO9SkeNZ0dR7ro5JREoV50pCTxwQdMAF2dx33tNfPBXwk83E|54|VvmO63BcYExhr9dWVMjbN|sY8JUwESYxmAIEe|Kv8DD8Njn8v8z417tysJKISuh5AbsEG2dyjJzunSdEqMlMgdS99eVM3B8o3G|dyh7p3l8yc9ilK4FL|5g0Ljof|I2z|G5qPbcDCBeUeAX9Ze0BrE|ztLbYPtFn8otbTpXpqg8uID3oZJ5vmR3WwjtaKRkHg|vFUQONEqsyxfM3sb|9L1H5n3qmDKfOrRGBVbpjnVoohf2D|7dq7zcoii8wMjk2oNlGePBhGqbz7|pdCVvQXaYstw|EP92ycoFJHLo2|yNMhSkRiS7fJxkbMF|C1Vk'.split('|'),0,{}))
可以发现,整段代码都加密了。传统方法,eval 改 alert,先改第一个,运行。建议使用Firefox,方便复制代码。弹出对话框中代码全部复制:
![](https://i-blog.csdnimg.cn/blog_migrate/327cc194ecbbb214b32678b39ceb59c2.jpeg)
复制过后查看,还是有加密的部分。如法炮制,再来一次。这一次要注意代码匹配的位置,见图中红色括号:
![](https://i-blog.csdnimg.cn/blog_migrate/49d45766ea16763cbbb72384b72ce184.jpeg)
替换代码后测试,功能完全正常。
接下来在index.html中拿掉下面的版权信息:Copyright © 2010 Apycom jQuery Menus。问题来了,一刷新就看到出现 No back link 的提示。既然代码都有了,找找看。发现这一段是条件判断:
if (document.body){
var box = document.createElement('div');
box.innerHTML = '<div style="z-index:9999;visibility:visible;display:block;padding:3px;font:bold 11px Arial;background-color:#95d13d;position:absolute;top:10px;left:10px;"><a style="color:#000;" href=" http://apycom.com/">No back link</a></div>';
document.body.appendChild(box);
}
return false;
删掉,测试,功能正常,back link 提示消失,搞定。