|
|
|
| Недавно столкнулся с таким 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));?>
|
и что удивительно скрипт все функции на него возложенные выполняет.
Никто не знает каким образом это сделали? | |
|
|
|
|
|
|
|
для: kolobokk
(30.05.2006 в 16:53)
| | тут пробегала подобная темка... и там я даже эту штуку расшифровал:)
вот только найти ее через поиск не могу. | |
|
|
|
|
|
|
|
для: Loki
(30.05.2006 в 17:46)
| | вопрос не в том как расшифровать, а как зашифровать.
Очень полезная штука, с точки зрения коммерческого распространения скриптов. | |
|
|
|
|
|
|
|
для: kolobokk
(01.06.2006 в 14:16)
| | а собственно самого интересного-то вы и не првели:)
вот тут
eval(y0666f0acdeed38d4cd9084ade1739498('82C597FE 54EB2DE72',$REXISTHEDOG4FBI));
|
вызывается функция с именем y0666f0acdeed38d4cd9084ade1739498.
и уже в ней и происходит самое интересное.
Вот если понять что происходит, то можно сказать как это сделано. | |
|
|
|
|
|
|
|
для: 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;}
|
но что-то мне это не о чем не говорит :( | |
|
|
|
|
|
|
|
для: kolobokk
(01.06.2006 в 17:56)
| | Вместо
eval(y0666f0acdeed38d4cd9084ade1739498('82C597FE 54EB2DE72',$REXISTHEDOG4FBI));
напишите
print(y0666f0acdeed38d4cd9084ade1739498('82C597FE 54EB2DE72',$REXISTHEDOG4FBI));
и увидите код | |
|
|
|
|
|
|
|
для: Саня
(01.06.2006 в 21:51)
| | Да там наверняка почти такой же вложенный eval, а внутри еще и еще.
Когда вся эта луковая шелуха слезет, небось, останется скрипт, отфтрматированный в режиме программирования квадратиком, да еще с идентификаторами, сгенерированными с помощью функции rand(). Не двоичый код, конечно, но и недалеко от него ушел. | |
|
|
|
|
|
|
|
для: Trianon
(01.06.2006 в 22:12)
| | А вот и она, самая интересная функция:
<?php
function y0666f0acdeed38d4cd9084ade1739498($arg1, $arg2) {
$str = '';
$num = 0;
$len = strlen($arg1);
$hexdec1 = hexdec('&H'.substr($arg2, 0, 2));
for($i = 2; $i < strlen($arg2); $i += 2) {
$hexdec2 = hexdec(trim(substr($arg2, $i, 2)));
$num = ( ($num < $len) ? $num + 1 : 1 );
$byte_or = $hexdec2 ^ ord(substr($arg1, $num - 1, 1));
if( $hexdec ) {
$byte_or = 255 + $byte_or - $hexdec1;
} else {
$byte_or = $byte_or - $str = $str.chr($byte_or);
}
$hexdec = $hexdec2;
}
return $str;
}
?>
|
| |
|
|
|
|
|
|
|
для: 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, $var7, 2)));
$var4=(($var4<$var5)?$var4 + 1:1);
$var9=$var8 ^ ord(substr($var2, $var4-1, 1));
if($var9<=$var6)
$var9=255+$var9-$var6;
else
$var9=$var9-$var6;$var1=$var1.chr($var9);
$var6=$var8;
}
return $var1;
}
?>
|
Так понятнее?:)
Хотя, придумка определенно забавная... но к защите это отножение имеет лишь отдаленное. | |
|
|
|
|
|
|
|
для: Loki
(01.06.2006 в 23:22)
| | >Так понятнее?:)
>
Да, спасибо огромное. Все оказывается не так уж и страшно :)
>Хотя, придумка определенно забавная... но к защите это
>отножение имеет лишь отдаленное.
Ну не все web - программисты настолько хорошо разбираются в PHP как вы ;)
и не у всех есть желание и время переворачивать все скрипты "с головы на ноги" | |
|
|
|