Доброго времени суток, уважаемые форумчане и гости DAMAGELAB!
Сегодня я хотел бы, вместе с вами, разобрать один интересный обфускатор .Как известно большинство из обфускаторов легко разбираються или снимаються "за пару секунд".
Но hivelogic enkoder не из их числа. От разработчиков :"...он предназначен для защититы адреса электронной почты, скрывая его от ботов...бла-бла-бла".
Мы же с вами преследуем более благие цели - разобрать и реализовать что-то подобное.
Итак вооружившись терпением и настойчивостью начнем исследование:
Вбиваем в форму
Код:
<script>alert('DaMaGeLaB');</script>

Код:
<script type="text/javascript">
//<![CDATA[
<!--
var x="function f(x,y){var i,o=\"\",l=x.length;for(i=0;i<l;i++){y%=127;o+=St" +
"ring.fromCharCode(x.charCodeAt(i)^(y++));}return o;}f(\"3#9;-342}8w\\030H\\" +
"031\\025\\005\\027F\\016D\\006WINA\\001\\003M\\t\\\\\\037\\021\\033\\021\\0" +
"03\\020U\\026F\\023\\021Ewikoa-~)kakyObjjQe:\\177;$%>9$.#5fjmYZZ\\010\\031]" +
"\\035K\\003\\024F\\020QNO[SY\\032V\\035NKJ^VH\\023U\\000R\\022qz+}yu}.edc0#" +
"fs7~2:2&\\024\\\"\\1771pa&.8**\\022\\017B\\014J\\026\\023\\005\\033\\035\\0" +
"30C\\\\A\\001\\003YJ\\017\\025\\\\W_FOU&YJMN\\\\]124YZ589VW:>>SL& #HIdKD\\\\"+
"E_EWJq|}\\025\\020\\024yz\\025\\033\\031vw\\032\\027wWkAfCvYy\\031\\027HK_\\"+
"016\\017\\016c\\034tqs\\030\\031\\002syy\\026\\027z}~\\023\\014dac\\010\\tf" +
"gh\\005\\006hnm\\002\\003URR?85.'XXZ70]__,-ECD)*CJI&'KSSv] _X?1:3&/'P/&im*}" +
"3zgcc}kg 5454Y\\t|\\nM\\rRfMMEh^LFL\\036I\\032VPZuEYQyVSOX\\021'/+10\\026{l" +
"'r}y}pk6kzy*}dak1q<2'tut\\tZ\\016_\\r^VZ\\001A\\030\\004\\nV\\006\\033\\027" +
"\\037\\027\\037Z\\rK\\033T%X'^@\\021,h\\\"qes}.q%r#j-``yeq}as4>\",85)" ;
while(x=eval(x));
//-->
//]]>
</script>
Видим Working...малзилла пытается выполнить скрипт.
Ок меняем
Код:
while(x=eval(x));
Код:
document.write(x);

Всмотревшись - видим что есть несколько слоев. Записуем результат вызова функции:
Код:
function f(x,y)
{
var i,o="",l=x.length;
for(i=0;i<l;i++)
{
y%=127;
o+=String.fromCharCode(x.charCodeAt(i)^(y++));
}
return o;
}
var x=f("3#9;-342}8w\030H\031\025\005\027F\016D\006WINA\001\003M\t\\\037\021\033\021\003\020U\026F\023\021Ewikoa-~)kakyObjjQe:\177;$%>9$.#5fjmYZZ\010\031]\035K\003\024F\020QNO[SY\032V\035NKJ^VH\023U\000R\022qz+}yu}.edc0#fs7~2:2&\024\"\1771pa&.8**\022\017B\014J\026\023\005\033\035\030C\\A\001\003YJ\017\025\\W_FOU&YJMN\\]124YZ589VW:>>SL& #HIdKD\\E_EWJq|}\025\020\024yz\025\033\031vw\032\027wWkAfCvYy\031\027HK_\016\017\016c\034tqs\030\031\002syy\026\027z}~\023\014dac\010\tfgh\005\006hnm\002\003URR?85.'XXZ70]__,-ECD)*CJI&'KSSv] _X?1:3&/'P/&im*}3zgcc}kg 5454Y\t|\nM\rRfMMEh^LFL\036I\032VPZuEYQyVSOX\021'/+10\026{l'r}y}pk6kzy*}dak1q<2'tut\tZ\016_\r^VZ\001A\030\004\nV\006\033\027\037\027\037Z\rK\033T%X'^@\021,h\"qes}.q%r#j-``yeq}as4>",85);
document.write(x);

таким же способом снимаем и этот слой
Код:
function f(x)
{
var i,o="",ol=x.length,l=ol;
while(x.charCodeAt(l/13)!=48)
{
try
{
x+=x;
l+=l;
}
catch(e)
{
}
}
for(i=l-1;i>=0;i--)
{
o+=x.charAt(i);
}
return o.substr(0,ol);}
var x= f(")17,\"600\\310\\200\\630\\720\\r\\E_DYJTn\\730\\230\\6:Yx[pTpBlO./qqd220\\530\\D410\\600\\530\\000\\320\\530\\PH@010\\010\\700\\420\\7.-v\"\\:7=;/%,\"(f};o nruter};))++y(^)i(tAedoCrahc.x(edoCrahCmorf.gnirtS=+o;721=%y;++y)17<i(fi{)++i;l<i;0=i(rof;htgnel.x=l,\"\"=o,i rav{)y,x(f noitcnuf");
document.write(x);

Далее так же.
Код:
function f(x,y)
{
var i,o="",l=x.length;
for(i=0;i<l;i++)
{
if(i<71)y++;
y%=127;
o+=String.fromCharCode(x.charCodeAt(i)^(y++));
}
return o;
}
var x=f(",%/;=7:\"v-.7\024\007\010\010@HP\035\023\000\035\006\014D\035\022dqq/.OlBpTp[xY:6\032\037\nTJYD_E\r\027\036\002\013\006",71);
document.write(x);

Вскрываем последний слой и вуаля=)
Код:
document.writeln("<script>alert('DaMaGeLaB');</script>");0;
Ну как и обещано-реализация.
[!]Так как одну часть полностью реализовать не удалось(в коде закомментирована), её было заменено на аналог.
Скачать
pass:damagelab
P.S. Реализацию разбирать не стану-там все понятно, но если будут вопросы-обращайтесь
[!]Так как одну часть полностью реализовать не удалось(в коде закомментирована), её было заменено на аналог.
Скачатьpass:damagelab
P.S. Реализацию разбирать не стану-там все понятно, но если будут вопросы-обращайтесь