koobi 7 发布之后, 我在第一时间得到了源码, 安装表现自不待说, 精彩非常, 是一个不可多得的CMS/onlineshop. 有兴趣可以看官网:dream4.de
细看源码, 发现商业保护采用的是内部编码加密的方式, 有这么几个文件加密:
/setup.php
/index.php
/lib/copyright.php
/admin/index.php
以copyright.php为例讲述我的反编码过程. 其中让我对原作者的奇思妙想大为佩服.
copyright.php加密后的编码如下:
<?php $_F=__FILE__;$_X='PzNhP21abWJ5eWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYnl5ND5ZWVdyNAoyNC00Lzc2NC00dFkKW1JxNll3W2xSCkIoSCk0VgpCUjdkKG4pNGJ5eTRQW1t0Onl5bGxsWFYKQlI3ZFhWQmJ5eWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYnl5NFIvUFtHRjkhYnl5NFZyQjZCCjR0Clk5ClI3Ny9ZVkI0cjZbNEcKUEIKCkIvUFtxci9QNDlCNi9QR0JbVVtieXk0VnJCNEcKUEJXQgoKQi9QW0I0cXJCOUJGNFdCcjRWQkY0fUJsQnJxcjlCRjRSR1tZCkJGWGJ5eTRSQkZWQgpHRjlCRjRyRjRWckI2Qgo0VlJbQnI0Qgp3WXE5QkY0Ukd3NEJyOUJGQjQ5QndSUAohYnl5NEI2NHI2WzRGci9QWzQ5QjZbUltbQlssNFZCRjQvWXRoCnI5UFtQckZsQnI2NFVHNFJCRlZCCkY0WVZCCjRVR2J5eTRCRlt3QgpGQkZYNEZHCjRsQkZGNDZyQjRCckZCNC9ZdGgKcjlQW1ByRmxCcjYtQkZbd0IKRkdGOTRXQjZbQnFxW2J5eTRQUldCRiw0VkdCCndCRjQ2ckI0VnJCNkJGNEJGW3dCCkZCRlhieXlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYnl5NFdCcjR3ClI5QkY0bEJGVkJGNDZyQjQ2ci9QNFdyW1tCNFJGOjQ+WUZbUj5bQFYKQlI3ZFhWQmJ5eWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYkVNdU9ETTQoJ3JfVnIKJyw0TG9uX25NbS4wSE0oIlxcIiwieSIsY01vSF1FKCkpKTtiQE9ESC5KRU0ocl9Wcgo0WDQneS5PQXlwTW5MT1NEWE9ET1htWm0nKTtiRU11T0RNKCcvWXRoRllbci9CJyw0J1ZPTUxNNDZNT29NNF1KbkVNNCBPbzQ+U1NBTzQnWGlCCjZyWUZYJzQnWD5ZWVdyX2lCCjZyWUZYJzRNbkxvTS4ubzQmSFNtNTs0czg4ei0nNFg0RTBvTSgnaCcpNFg0JzRhMDRvMG5jTW9mIl9BLjBEUSI0Wm5NdWYiWm9vbTp5eV1dXVhFbk0wIGRYRU15SCBMeSIzRW5NMCBkJm5NYztheTAzJyk7YkVNdU9ETSgnL1l0aEZZW3IvQl9SVjdyRicsNCc+U1NBTzQnNFg0NGlCCjZyWUY0WDQnNCc0WDQ+WVlXcl9pQgo2cllGNFg0J2FBbjR5MyZIU201OzRzODh6LSc0WDRFMG9NKCdoJyk0WDQnNGEwNG8wbmNNb2YiX0EuMERRIjRabk11ZiJab29tOnl5XV1dWEVuTTAgZFhFTXlIIEx5IjNFbk0wIGQmbk1jO2F5MDMnKTtiYnVKREhvT1NENGVqTHdWY091SnVPSkV1Sk9VVUdrMklqMklqMmoySU1FKCRTSm8pYktiCSR1T0RFX0g0ZjRMb25tU0woJFNKbyw0L1l0aEZZW3IvQik7YgliCU91KCR1T0RFX0g0ZmZmNHUwLkxNNCYmNEAkXwpCPEdCNltnJ20nTjQhZjQnIE9MSCc0JiY0IUVNdU9ETUUoJ0ZZWUdbJykpYglLYgkJTW5uU24oJz5TU0FPNEgwRERTbzRBTTRuSkQ0QU1IMEpMTTRTdTQgU0VPdTVPRGM0b1pNNHVPLk00YU0gMy5PQXlIU201bk9jWm9YbVptYXlNIDNYYUFuNHkzdC5NMExNNEpMTTRvWk00WW5PY09EMC4td08uTTQwREU0bS4wSE00b1pNNFswYzRhTSAzS0hTbTVuT2Nab1RheU0gMzQwbzRvWk00QkRFNFN1NDVTSm40UFs3cS1bTSBtLjBvTVgnKTtiCVQ0TS5MTTRLYgkJTUhaUzQkU0pvO2IJVGJUYmJ1SkRIb09TRDRtbk9Eb19IU201bk9jWm8oKWJLYgluTW9KbkQ0L1l0aEZZW3IvQjtiVGI/Mw==';$_D=strrev('edoced_46esab');eval($_D('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCdPL2JwdXcza002QjJ0eEQxLlJvWF1sVlkgPkpBRUdUZno3SwpRSD1qc31acVVjZTh2NW5tPFs5YTRpMENyV3tOZ2hkSUxQeVNGJywnaUMKdmZGPnplU0U3UDVucWxBdC53V0RPbUt1YmRVfT0zTXtSa2N4OTJKaExaZ1gwNnlycFFURzwgVmFqSUIxXVtZNDhzSC9vTicpOyRfUj1lcmVnX3JlcGxhY2UoJ19fRklMRV9fJywiJyIuJF9GLiInIiwkX1gpO2V2YWwoJF9SKTskX1I9MDskX1g9MDs='));?>一般人很容易分析到这一步:
$_X=base64_decode($_X);$_X=strtr($_X,'O/bpuw3kM6B2txD1.RoX]lVY >JAEGTfz7K
QH=js}ZqUce8v5nm<[9a4i0CrW{NghdILPySF','iC
vfF>zeSE7P5nqlAt.wWDOmKubdU}=3M{Rkcx92JhLZgX06yrpQTG< VajIB1][Y48sH/oN');$_R=ereg_replace('__FILE__',"'".$_F."'",$_X);eval($_R);$_R=0;$_X=0;按一般的加密编码思维, 只要按上面代码的意思, 将$_X base64反编码, 再把strtr函数的过程中的字串复制下来代回到$_X中即可. 然而在复制过程中就犯了一个原作者设下的误区. 在JAEGTfz7K和iC后面的换行符\n在windows下复制将产生错误, 最后导致对应替换出来的代码失真. 我的思路是, 既然反编码的关键在"复制"替换字串时出错, 那我何不避免"复制"?
一, 分析得到上述编码后, 不echo出来, 直接通过文件操作写入一个文件(暂叫他temp.php).
二, 将copyright.php中的$_F $_X变量复制到temp.php中, 删除eval($_R);$_R=0;$_X=0; .
三, 最后通过文件操作把$_R写入一个新文件crack_copyright.php, 即得到完全正确的源码.<?php
//=================================================================
// KOOBI R7 - CMS - PORTALSOFTWARE(c) DREAM4(r) 
// HTTP://WWW.DREAM4.DE
//=================================================================
// ACHTUNG!
// DIESER PROGRAMMCODE IST URHERRECHTLICH GESCHUETZT
// DIE URHEBERRECHTE LIEGEN BEI DEN JEWEILIGEN AUTOREN.
// AENDERUNGEN IN DIESER DATEI ERFOLGEN AUF EIGENE GEFAHR!
// ES IST NICHT GESTATTET, DEN COPYRIGHTHINWEIS ZU AENDERN ODER ZU
// ENTFERNEN. NUR WENN SIE EINE COPYRIGHTHINWEIS-ENTFERNUNG BESTELLT
// HABEN, DUERFEN SIE DIESEN ENTFERNEN.
//================================================================
// BEI FRAGEN WENDEN SIE SICH BITTE AN: [email protected]
//=================================================================
define ('I_DIR', str_replace("\\","/",getcwd()));
@include(I_DIR . '/lib/version.ini.php');
define('COPYNOTICE', 'Diese Seite wurde mit Koobi '.VERSION.' '.KOOBI_VERSION.' erstellt &copy; 2003-' . date('Y') . ' <a target="_blank" href="http://www.dream4.de/cms/">dream4&reg;</a>');
define('COPYNOTICE_ADMIN', 'Koobi ' .  VERSION . ' ' . KOOBI_VERSION . '<br />&copy; 2003-' . date('Y') . ' <a target="_blank" href="http://www.dream4.de/cms/">dream4&reg;</a>');function X9sFDgifufiudfuiZZUz7897897978ed($out)
{
$find_c = strpos($out, COPYNOTICE);

if($find_c === false && @$_REQUEST['p'] != 'misc' && !defined('NOOUT'))
{
error('Koobi cannot be run because of modifying the file <em>lib/copyright.php</em>.<br />Please use the Original-File and place the Tag <em>{copyright}</em> at the End of your HTML-Template.');
} else {
echo $out;
}
}function print_copyright()
{
return COPYNOTICE;
}
?>
夫复何求?
我看到网上有兄弟解密这种代码动用十六进制编辑器. 动作太大了, 亦不是一般程序员都懂编辑十六进制.
顺便说, 这种加密码是用一个叫byterun protector的软件产生的.
koobi 7的完整程序我就不放上来了.