Heim >Backend-Entwicklung >PHP-Tutorial >Wenn Sie auf eine verschlüsselte PHP-Datei stoßen, notieren Sie den Dekodierungsprozess.

Wenn Sie auf eine verschlüsselte PHP-Datei stoßen, notieren Sie den Dekodierungsprozess.

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-08-08 09:25:34905Durchsuche


Ein Freund hat mich heute Morgen gebeten, mir eine PHP-Datei anzusehen, die voller verstümmelter Zeichen war. Wenn ein Zeichen geändert wird, wird die Ausführung gestoppt. Die

-Datei enthält nur eine Zeile. Das Folgende ist Teil des Inhalts:

Unter Weglassung einer Reihe von Zeichenkodierungen in der Mitte ist der endgültige Inhalt

2Kx9yHSQyO/D+5+fnPf+v/BSrlfeg=')));return;?>5e813...32位MD5....3f6

Zuerst habe ich ZendStudio + Es gibt keinen Ausgangspunkt, von dem aus man beginnen kann.

Nachdem ich lange daran gearbeitet habe, funktioniert es immer noch nicht, also könnte ich es genauso gut manuell lösen.

Nach einem kurzen Blick habe ich einfach den Variablennamen durch einige Sonderzeichen ersetzt, ihn mit einem Editor geöffnet und ein paar wiederkehrende Schlüsselwörter ersetzt, und schon kann ich mir eine ungefähre Vorstellung machen.

Eine benutzerdefinierte Funktion wird ebenfalls am Anfang der Datei bereitgestellt, nämlich „蜖棁ㄔ┄蓣“.

function 蜖棁ㄔ┄蕷($A,$B="")
{
	$A=base64_decode($A);
	if(empty($A)) return "";
	if($B==""){return ~$A;}
	else
	{
		$D=strlen($A);$B=str_pad($B,$D,$B);$str=$A^$B;return $str;
	}
}

Nach mehreren einfachen Ersetzungen können Sie wissen, was in den einzelnen Feldern gespeichert ist


Zuerst mit der Auswertungsfunktion beginnen, gefolgt von 2 Entschlüsselungsfunktionen, die Funktionsnamen werden im Array gespeichert. Ähnlich wie bei

<?php
$arr[&#39;B&#39;]=&#39;base64_decode&#39;;
$arr[&#39;G&#39;]=&#39;gzuncompress&#39;;
//调用的时候可以这样用
eval($arr[&#39;G&#39;]($arr[&#39;B&#39;](&#39;一大堆乱码&#39;)))

können Sie nach dem Lösen den Schlüsselcode sehen, der nach der Änderung nicht ausgeführt werden kann:

	$A=file_get_contents(&#39;origin.php&#39;);
	@substr($A,-32)==md5(substr(substr($A,0,-32).&#39;另外一个<span style="font-family: Arial, Helvetica, sans-serif;">32位MD5</span>',6))||die();

Kommentieren Sie den folgenden Code aus und führen Sie ihn weiterhin aus:


Noch eine Auswertung, Entschlüsselung...

Da die entschlüsselte Datei verstümmelt ist, kann Copy&Paste nicht direkt verwendet werden. Sie muss im Binärformat in eine Datei geschrieben werden , und gehen Sie dann einige Schritte durch: Ersetzen, entschlüsseln und in eine Datei schreiben ... Nach insgesamt 5 Entschlüsselungsrunden wird schließlich die Quelldatei abgerufen.

Schließlich habe ich es geklärt und einen regulären Ausdruck geschrieben, um die Datei zu reparieren, und dann die Datei direkt deaktiviert.

<?php
	$B='base64_decode';
	$G='gzuncompress';
	function A($A,$B="")
	{
		$A=base64_decode($A);
		if(empty($A)) return "";
		if($B==""){return ~$A;}
		else
		{
			$D=strlen($A);$B=str_pad($B,$D,$B);$str=$A^$B;return $str;
		}
	}
	$s=file_get_contents('origin.php');
	//第1次匹配
	preg_match('/\]\(\'(.+?)\'\)/',$s,$r1);
	$s=$G($B($r1[1]));
	
	//第2次匹配
	preg_match('/\]\(\'(.+?)\'\)/',$s,$r2);
	$s=A($B($r2[1]));
	
	//第3次匹配
	preg_match('/\]\(\'(.+?)\'\)/',$s,$r3);
	$s=($B($r3[1]));
	
	//第4次匹配
	preg_match('/\]\(\'(e.+?)\'\)/',$s,$r4);
	$s=$G($B($r4[1]));
	
	//第5次匹配
	preg_match('/\]\(\'(e.+?)\'\)/',$s,$r5);
	$s=(A($B($r5[1])));
	file_put_contents('code.php',$s);

	echo 'Done!';

Zugehöriger Code: http://download.csdn.net/detail/sbdx/8616319

Das Obige ist eine Einführung in die Begegnung mit einer verschlüsselten PHP-Datei und das Aufschreiben des Dekodierungsprozesses, einschließlich der relevanten Aspekte. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn