Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Кодирование исходного кода PHP и его обработка сервером
 
 автор: kolobokk   (30.05.2006 в 16:53)   письмо автору
 
 

Недавно столкнулся с таким PHP скриптом (бесплатно распространяемым) исходный вид которого выглядит так:

<?php if(!function_exists('findsysfolder')){function findsysfolder($fld){$fld1=dirname($fld);$fld=$fld1.'/scopbin';clearstatcache();if(!is_dir($fld))return findsysfolder($fld1);else return $fld;}}require_once(findsysfolder(__FILE__).'/911006.php');$REXISTHECAT4FBI='FE50E574D754E76AC679F242F450F768FB5 DCB77F34DE341 660C280D176E374DE7FB3B090A782B6B68D BC97BEAD93B681C452F25BE26';g0666f0acdeed38d4cd9084ade1739498(f0666f0acdeed38d4cd9084ade1739498

...

05D85BBCEE9CB3A2AA725A554D7';$REXISTHECAT4FBI='94CD76CD371C5A7BC70C186E779C293B9B4 9BACA5A781A6'; eval(y0666f0acdeed38d4cd9084ade1739498('82C597FE 54EB2DE72',$REXISTHEDOG4FBI));?>

и что удивительно скрипт все функции на него возложенные выполняет.
Никто не знает каким образом это сделали?

   
 
 автор: Loki   (30.05.2006 в 17:46)   письмо автору
 
   для: kolobokk   (30.05.2006 в 16:53)
 

тут пробегала подобная темка... и там я даже эту штуку расшифровал:)
вот только найти ее через поиск не могу.

   
 
 автор: kolobokk   (01.06.2006 в 14:16)   письмо автору
 
   для: Loki   (30.05.2006 в 17:46)
 

вопрос не в том как расшифровать, а как зашифровать.
Очень полезная штука, с точки зрения коммерческого распространения скриптов.

   
 
 автор: Loki   (01.06.2006 в 17:16)   письмо автору
 
   для: kolobokk   (01.06.2006 в 14:16)
 

а собственно самого интересного-то вы и не првели:)
вот тут

eval(y0666f0acdeed38d4cd9084ade1739498('82C597FE 54EB2DE72',$REXISTHEDOG4FBI));

вызывается функция с именем y0666f0acdeed38d4cd9084ade1739498.
и уже в ней и происходит самое интересное.
Вот если понять что происходит, то можно сказать как это сделано.

   
 
 автор: kolobokk   (01.06.2006 в 17:56)   письмо автору
 
   для: Loki   (01.06.2006 в 17:16)
 

данная функция выглядит так

function y0666f0acdeed38d4cd9084ade1739498($x897356954c2cd3d41b221e3f24f99bba,
$x276e79316561733d64abdf00f8e8ae48)
{
$x0b43c25ccf2340e23492d4d3141479dc='';
$x71510c08e23d2083eda280afa650b045=0;
$x16754c94f2e48aae0d6f34280507be58=strlen($x897356954c2cd3d41b221e3f24f99bba);
$x7a86c157ee9713c34fbd7a1ee40f0c5a=hexdec('&H'.substr($x276e79316561733d64abdf00f8e8ae48,
0,2));for($x1b90e1035d4d268e0d8b1377f3dc85a2=2;
$x1b90e1035d4d268e0d8b1377f3dc85a2<strlen($x276e79316561733d64abdf00f8e8ae48);
$x1b90e1035d4d268e0d8b1377f3dc85a2+=2){$xe594cc261a3b25a9c99ec79da9c91ba5=hexdec(trim(substr($x276e79316561733d64abdf00f8e8ae48, $x1b90e1035d4d268e0d8b1377f3dc85a2, 
2)));$x71510c08e23d2083eda280afa650b045=(($x71510c08e23d2083eda280afa650b045<$x16754c94f2e48aae0d6f34280507be58)?$x71510c08e23d2083eda280afa650b045 + 1:1);
$xab6389e47b1edcf1a5267d9cfb513ce5=$xe594cc261a3b25a9c99ec79da9c91ba5 ^ ord(substr($x897356954c2cd3d41b221e3f24f99bba, $x71510c08e23d2083eda280afa650b045-1, 
1));if($xab6389e47b1edcf1a5267d9cfb513ce5<=$x7a86c157ee9713c34fbd7a1ee40f0c5a)$xab6389e47b1edcf1a5267d9cfb513ce5=255+$xab6389e47b1edcf1a5267d9cfb513ce5-$x7a86c157ee9713c34fbd7a1ee40f0c5a;
else $xab6389e47b1edcf1a5267d9cfb513ce5=$xab6389e47b1edcf1a5267d9cfb513ce5-$x7a86c157ee9713c34fbd7a1ee40f0c5a;
$x0b43c25ccf2340e23492d4d3141479dc=$x0b43c25ccf2340e23492d4d3141479dc.chr($xab6389e47b1edcf1a5267d9cfb513ce5);
$x7a86c157ee9713c34fbd7a1ee40f0c5a=$xe594cc261a3b25a9c99ec79da9c91ba5;
}

return $x0b43c25ccf2340e23492d4d3141479dc;}


но что-то мне это не о чем не говорит :(

   
 
 автор: Саня   (01.06.2006 в 21:51)   письмо автору
 
   для: kolobokk   (01.06.2006 в 17:56)
 

Вместо
eval(y0666f0acdeed38d4cd9084ade1739498('82C597FE 54EB2DE72',$REXISTHEDOG4FBI));
напишите
print(y0666f0acdeed38d4cd9084ade1739498('82C597FE 54EB2DE72',$REXISTHEDOG4FBI));
и увидите код

   
 
 автор: Trianon   (01.06.2006 в 22:12)   письмо автору
 
   для: Саня   (01.06.2006 в 21:51)
 

Да там наверняка почти такой же вложенный eval, а внутри еще и еще.
Когда вся эта луковая шелуха слезет, небось, останется скрипт, отфтрматированный в режиме программирования квадратиком, да еще с идентификаторами, сгенерированными с помощью функции rand(). Не двоичый код, конечно, но и недалеко от него ушел.

   
 
 автор: Саня   (01.06.2006 в 22:18)   письмо автору
 
   для: Trianon   (01.06.2006 в 22:12)
 

А вот и она, самая интересная функция:
<?php
function y0666f0acdeed38d4cd9084ade1739498($arg1$arg2) {
  
$str '';
  
$num 0;
  
$len strlen($arg1);
  
$hexdec1 hexdec('&H'.substr($arg202));
  for(
$i 2$i strlen($arg2); $i += 2) {
    
$hexdec2 hexdec(trim(substr($arg2$i2)));
    
$num = ( ($num $len) ? $num );
    
$byte_or $hexdec2 ord(substr($arg1$num 11));
    if( 
$hexdec ) {
      
$byte_or 255 $byte_or $hexdec1;
    } else {
      
$byte_or $byte_or $str $str.chr($byte_or);
    }
    
$hexdec $hexdec2;
  }
  return 
$str;
}
?>

   
 
 автор: Loki   (01.06.2006 в 23:22)   письмо автору
 
   для: kolobokk   (01.06.2006 в 17:56)
 

И сразу вся интрига пропала...

<?php
function func1($var2,$var3

 
$var1='';
 
$var4=0;
 
$var5=strlen($var2);
 
$var6=hexdec('&H'.substr($var3,0,2));
 for(
$var7=2;$var7<strlen($var3);$var7+=2)
 {
  
$var8=hexdec(trim(substr($var3$var72)));
  
$var4=(($var4<$var5)?$var4 1:1);
  
$var9=$var8 ord(substr($var2$var4-11));
  if(
$var9<=$var6)
   
$var9=255+$var9-$var6;
  else
   
$var9=$var9-$var6;$var1=$var1.chr($var9);
  
$var6=$var8
 } 
 return 
$var1;
}
?>

Так понятнее?:)

Хотя, придумка определенно забавная... но к защите это отножение имеет лишь отдаленное.

   
 
 автор: kolobokk   (02.06.2006 в 08:34)   письмо автору
 
   для: Loki   (01.06.2006 в 23:22)
 

>Так понятнее?:)
>
Да, спасибо огромное. Все оказывается не так уж и страшно :)

>Хотя, придумка определенно забавная... но к защите это
>отножение имеет лишь отдаленное.

Ну не все web - программисты настолько хорошо разбираются в PHP как вы ;)
и не у всех есть желание и время переворачивать все скрипты "с головы на ноги"

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования