ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Раскодировка Perl-скриптов
  #1  
Старый 13.10.2007, 01:02
Аватар для Digimortal
Digimortal
Banned
Регистрация: 22.08.2006
Сообщений: 608
Провел на форуме:
6144796

Репутация: 1095


По умолчанию Раскодировка Perl-скриптов

меня уже два человека на этом форуме просили, чтоб я в подобростях рассказал, как можно раскодировать закодированный PERL-скрипт.. ок, опишу в мельчайших подробностях этот процесс (на примере DirectMailer)..

на самом деле, обычно раскодировка скриптов не представляет особой сложности.. достаточно иметь под рукой справочник по языку (если вы им не владеете), чтоб добраться до исходного кода.. итак, начнем.. : )

открыв файл dm.cgi, можно наблюдать примерно следущую картину:
Код:
#!/usr/bin/perl
my $vrm9Hox30068MVCy0;$vrm9Hox30068MVCy0.=$_ while(<DATA>);eval(unpack('u*',$vrm9Hox30068MVCy0));
__DATA__
M<W5B('932&U+34PX,2![;7D@)'932&U+34PX,3T\/"=V4TAM2TU,.#$G.PI-
M/%<U0B@G.4TL5DDA+"<D5C138%(H)TU-/C)@1#U&5%,Z1"10/#,Y,RPC*%TO

	... и т.д. ...
что делает данный код?
1. объявляется переменная $vrm9Hox30068MVCy0 :
Код:
my $vrm9Hox30068MVCy0;
2. в нее заносится весь текст скрипта, расположенный ниже __DATA__:
Код:
$vrm9Hox30068MVCy0.=$_ while(<DATA>)
3. содержимое переменной $vrm9Hox30068MVCy0, предаставляющее собой текст в кодировке uuencode (http://en.wikipedia.org/wiki/Uuencode), раскодируется с помощью функции unpack с шаблоном 'u*', а затем выполняется с помощью eval. Таким образом, функции eval передается уже раскодированный текст скрипта, а значит, заменив eval на print и запустив скрипт в интерепретаторе, мы получим вывод раскодированного текста скрипта:
Код:
eval(unpack('u*',$vrm9Hox30068MVCy0));
меняем на
Код:
print(unpack('u*',$vrm9Hox30068MVCy0));
затем запускаем перенаправляя вывод в файл dm2.txt:
Код:
perl dm.cgi > dm2.txt
открываем dm2.txt и видим в нем следущее:
Код:
sub vSHmKML81 {my $vSHmKML81=<<'vSHmKML81';
M<W5B('9M,VI!,'$V4S`R('MM>2`D=FTS:D$P<393,#(]/#PG=FTS:D$P<393
M,#(G.PI-/%<U0B@G.3DZ)T4J.R8\53!60%,H)TU-/C)@1#U%14@^-$E,.5,U

		...

M,&!@"G9M,VI!,'$V4S`R"GUS=6(@7W9M,VI!,'$V4S`R('ME=F%L*'5N<&%C
E:R@G=2HG+"9V;3-J03!Q-E,P,BDI.R9?=EEH>4IL9S5#:#,[?0``
vSHmKML81
}eval(unpack('u*',&vSHmKML81));&_vm3jA0q6S02;
итак, еще одна оберточка.. здесь нас уже пытаются слегка запутать, используя функцию, переменную и метку с одинаковыми именами, типа, элемент обфускации +).. просто нужно знать, что в PERL символ & предшествует вызываемой функции (до 5й версии PERL, в пятой это не обязательно).. т.о.
Код:
unpack('u*',&vSHmKML81)
распаковывает возвращаемое функцией vSHmKML81 значение (а возвращает эта функция значение переменной $vSHmKML81)..
опять же, меняем eval на print, а вот вызываемую далее функцию _vm3jA0q6S02 закомментим, т.к. она содержится в покодированном куске скрипта:
Код:
}print(unpack('u*',&vSHmKML81)); ## &_vm3jA0q6S02;
запускаем:
Код:
perl dm2.txt > dm3.txt
dm3.txt практически идентичен dm2.txt:
Код:
sub vm3jA0q6S02 {my $vm3jA0q6S02=<<'vm3jA0q6S02';
M<W5B('99:'E*;&<U0V@S('MM>2`D=EEH>4IL9S5#:#,]/#PG=EEH>4IL9S5#

		...

M9S5#:#,*?7-U8B!?=EEH>4IL9S5#:#,@>V5V86PH=6YP86-K*"=U*B<L)G99
-:'E*;&<U0V@S*2D[?0``
vm3jA0q6S02
}sub _vm3jA0q6S02 {eval(unpack('u*',&vm3jA0q6S02));&_vYhyJlg5Ch3;}
только в конце, eval находится внутри объявления функции _vm3jA0q6S02, вызов которой мы закомментили в dm2.txt.. убираем объявление этой функции и комментим _vYhyJlg5Ch3, не забыв заменить eval на print :
Код:
} print(unpack('u*',&vm3jA0q6S02)); ## &_vYhyJlg5Ch3;
запускаем, перенаправив вывод в dm4.txt..

аналогично в dm4.txt меняем
Код:
}sub _vYhyJlg5Ch3 {eval(unpack('u*',&vYhyJlg5Ch3));}
на
Код:
} print(unpack('u*',&vYhyJlg5Ch3));
в dm5.txt мы уже будем наблюдать исходный код скрипта, причем даже не обфусцированный..

p.s. а вот на просьбы занулить этот скрипт и вопросы по поводу места, где там осуществляется проверка - отвечать не буду, ищите сами.. ; )

p.p.s. если у кого возникнут какие-нить проблемы с раскодировкой скриптов (перл, пхп [тока не зенд], итд) - можете задавать в этой теме вопросы, по мере возможостей постараюсь на них ответить..

p.p.p.s ссылки на directmailer можно найти в этой темке : http://forum.antichat.ru/thread49975.html

Последний раз редактировалось Digimortal; 13.10.2007 в 01:08..
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Просьбы о написании скриптов на Php, Perl Piflit PHP, PERL, MySQL, JavaScript 22 23.09.2007 15:49
компилятор Perl скриптов??? jaim PHP, PERL, MySQL, JavaScript 13 17.05.2007 18:15
Books Perl FRAGNATIC PHP, PERL, MySQL, JavaScript 0 11.08.2005 16:58



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ