让php程序可以自行扩展自己功能的代码初步分析

需要创建3个文件,分别命名为 r.php t.php w.php ,然后将以下代码保存到r.php文件中即可.


//生成需要执行的字符串

$s = array('+','-','*','/');

$dux = '

$myfile = fopen("w.php", "w") or die("Unable to open file!");

';

$duc = '$ttt='.mt_rand(1,10).$s[mt_rand(0,3)].mt_rand(1,10).';';

$duv = '

fwrite($myfile, $ttt);

fclose($myfile);

$myfile = fopen("w.php", "r") or die("Unable to open file!");

$du = fread($myfile,filesize("w.php"));

echo "读取文件:".$du;

fclose($myfile);

';

//将该字符串写入t文件,当然也可以不写入文件

$myfile = fopen("t.php", "w") or die("Unable to open file!");

fwrite($myfile, $dux);

fwrite($myfile, $duc);

fwrite($myfile, $duv);

fclose($myfile);

//读取t文件

$myfile = fopen("t.php", "r") or die("Unable to open file!");

$du = fread($myfile,filesize("t.php"));

fclose($myfile);

//执行t文件的代码

echo '本次算术php代码 : '.$duc.'
';

eval($du);

echo '
读取文件是已经执行代码后的结果
';

工作模式:

该程序有三个文件,分别为:

r.php 主程序,用来生成可执行代码并写入t文件;读取t文件的内容并执行,将执行结果写入w文件.

t.php文件 该文件内容不可执行,只能被其他文件读取.同样w.php文件用于保存r.php执行t.php后的结果

通过修改php文件,并使用eval函数执行修改后的代码,就可以实现原本没有设定的程序功能

如果程序足够聪明,能写出正确的php代码,那么它就可以自行扩展自己的能力,实现原本不可能完成的任务.

在本例中,r文件只做一件事,就是写文件和读取文件,并执行读取出来的内容.并没有对应的计算代码

你可以会说最终还是用eval执行了代码,其实也可以完全不用eval函数,在这里使用只是为了方便.我们完全可以将内容写进标签里去.

你可能感兴趣的:(让php程序可以自行扩展自己功能的代码初步分析)