ホームページ php教程 php手册 浅谈PHP神盾的解密过程

浅谈PHP神盾的解密过程

Jun 06, 2016 pm 07:53 PM
linux php コミュニティ 復号化 プロセス 入力

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 前些日子一个朋友丢了个shell给我,让我帮忙解密,打开源码看了下写着是 "神盾加密" , 其实网上早就有人分析过这个了,而且写成了工具、但是我测试了很多个,没一个能用,所以决定自己从头分析一遍。

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

  前些日子一个朋友丢了个shell给我,让我帮忙解密,打开源码看了下写着是 "神盾加密" , 其实网上早就有人分析过这个了,而且写成了工具、但是我测试了很多个,没一个能用,所以决定自己从头分析一遍。

  我们来做第一步解密处理吧。

  PS: 这只是我的解密思路,与大家分享一下,也许你有更好的方法还望分享

  

  $str = file_get_contents("1.php");

  // 第一步 替换所有变量

  // 正则 \$[a-zA-Z_\x7f-\xff][\w\x7f-\xff]*

  preg_match_all('|\$[a-zA-Z_\x7f-\xff][\w\x7f-\xff]*|', $str, $params) or die('err 0.');

  $params = array_unique($params[0]); // 去重复

  $replace = array();

  $i = 1;

  foreach ($params as $v) {

  $replace[] = '$p' . $i;

  tolog($v . ' => $p' . $i); // 记录到日志

  $i++;

  }

  $str = str_replace($params, $replace, $str);

  // 第二步 替换所有函数名

  // 正则 function ([a-zA-Z_\x7f-\xff][\w\x7f-\xff]*)

  preg_match_all('|function ([a-zA-Z_\x7f-\xff][\w\x7f-\xff]*)|', $str, $params) or die('err 0.');

  $params = array_unique($params[1]); // 去重复

  $replace = array();

  $i = 1;

  foreach ($params as $v) {

  $replace[] = 'fun' . $i;

  tolog($v . ' => fun' . $i); // 记录到日志

  $i++;

  }

  $str = str_replace($params, $replace, $str);

  // 第三步 替换所有不可显示字符

  function tohex($m) {

  $p = urlencode($m[0]); // 把所有不可见字符都转换为16进制、

  $p = str_replace('%', '\x', $p);

  $p = str_replace('+', ' ', $p); // urlencode 会吧 空格转换为 +

  return $p;

  }

  $str = preg_replace_callback('|[\x00-\x08\x0e-\x1f\x7f-\xff]|s', "tohex", $str);

  // 写到文件

  file_put_contents("1_t1.php", $str);

  function tolog($str) {

  file_put_contents("replace_log.txt", $str . "\n", FILE_APPEND);

  }

  ?>

  (其中有一个记录到日志的代码,这个在之后的二次解密时有用。)

  执行之后就会得到一个 1_t1.php 文件,打开文件看到类似这样的代码

  找个工具格式化一下,我用的 phpstorm 自带了格式化功能,然后代码就清晰很多了。

  进一步整理后得到如下代码:

  

  //Start code decryption《===

  if (!defined('IN_DECODE_82d1b9a966825e3524eb0ab6e9f21aa7')) {

  define('\xA130\x8C', true);

  function fun1($str, $flg="") {

  if(!$flg) return(base64_decode($str));

  $ret = '?';

  for($i=0; $i

  $c = ord($str[$i]);

  $ret .= $c136 ? chr($c/2) : $str[$i] ) : "";

  }

  return base64_decode($ret);

  }

[1] [2] 

浅谈PHP神盾的解密过程

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Apacheを始める方法 Apacheを始める方法 Apr 13, 2025 pm 01:06 PM

Apacheを開始する手順は次のとおりです。Apache(コマンド:sudo apt-get install apache2または公式Webサイトからダウンロード)をインストールします(linux:linux:sudo systemctl start apache2; windows:apache2.4 "serviceを右クリックして「開始」を右クリック) (オプション、Linux:Sudo SystemCtl

Apache80ポートが占有されている場合はどうすればよいですか Apache80ポートが占有されている場合はどうすればよいですか Apr 13, 2025 pm 01:24 PM

Apache 80ポートが占有されている場合、ソリューションは次のとおりです。ポートを占有するプロセスを見つけて閉じます。ファイアウォールの設定を確認して、Apacheがブロックされていないことを確認してください。上記の方法が機能しない場合は、Apacheを再構成して別のポートを使用してください。 Apacheサービスを再起動します。

PHPとPython:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPの永続的な関連性:それはまだ生きていますか? PHPの永続的な関連性:それはまだ生きていますか? Apr 14, 2025 am 12:12 AM

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

Apacheサーバーを再起動する方法 Apacheサーバーを再起動する方法 Apr 13, 2025 pm 01:12 PM

Apacheサーバーを再起動するには、次の手順に従ってください。Linux/MacOS:sudo systemctl restart apache2を実行します。 Windows:Net Stop apache2.4を実行し、ネット開始apache2.4を実行します。 Netstat -A |を実行しますサーバーのステータスを確認するには、STR 80を見つけます。

Debian syslogを学ぶ方法 Debian syslogを学ぶ方法 Apr 13, 2025 am 11:51 AM

このガイドでは、Debian SystemsでSyslogの使用方法を学ぶように導きます。 Syslogは、ロギングシステムとアプリケーションログメッセージのLinuxシステムの重要なサービスです。管理者がシステムアクティビティを監視および分析して、問題を迅速に特定および解決するのに役立ちます。 1. syslogの基本的な知識Syslogのコア関数には以下が含まれます。複数のログ出力形式とターゲットの場所(ファイルやネットワークなど)をサポートします。リアルタイムのログ表示およびフィルタリング機能を提供します。 2。syslog(rsyslogを使用)をインストールして構成するDebianシステムは、デフォルトでrsyslogを使用します。次のコマンドでインストールできます:sudoaptupdatesud

Apacheを開始できない問題を解決する方法 Apacheを開始できない問題を解決する方法 Apr 13, 2025 pm 01:21 PM

Apacheは、次の理由で起動できません。構成ファイル構文エラー。他のアプリケーションポートとの競合。権限の問題。メモリから。デッドロックを処理します。デーモン障害。 Selinux許可の問題。ファイアウォールの問題。ソフトウェアの競合。

PHP:インタラクティブなWebコンテンツを簡単に作成します PHP:インタラクティブなWebコンテンツを簡単に作成します Apr 14, 2025 am 12:15 AM

PHPにより、インタラクティブなWebコンテンツを簡単に作成できます。 1)HTMLを埋め込んでコンテンツを動的に生成し、ユーザー入力またはデータベースデータに基づいてリアルタイムで表示します。 2)プロセスフォームの提出と動的出力を生成して、XSSを防ぐためにHTMLSPECIALCHARSを使用していることを確認します。 3)MySQLを使用してユーザー登録システムを作成し、Password_HashおよびPreprocessingステートメントを使用してセキュリティを強化します。これらの手法を習得すると、Web開発の効率が向上します。

See all articles