【发布时间】:2017-08-14 13:06:06
【问题描述】:
我有一段混淆代码,我想恢复正常。
我想出了一个简单的preg_replace_callback() 和嵌套在其中的preg_match() 用于替换的想法。
由于某种原因,虽然我的代码不想匹配,特别是回调中的 preg_match
这是我的代码的 sn-p。
在我调试preg_match_all() 的数组时(我也尝试过常规的preg_match())返回空,尽管它在回调之外工作。
<?php
$code = '
public function encrypt($UDw2y33pQ_22) {
goto eKGyEfM327pq;
YlzBCxTNCJzo:
$p7nCDJiybOtp = mcrypt_create_iv($I9ryzFUJtil4,
MCRYPT_RAND);
goto zqGNmmifhK7G;
eKGyEfM327pq:
$IE19PrOpdkbJ = "*97@$S8&8&*as&*SA7sa*SA7alnIU&7#$%gf^IsPj8";
goto uR63Cxb5ZtRs;
uR63Cxb5ZtRs:
$I9ryzFUJtil4 = mcrypt_get_iv_size(MCRYPT_BLOWFISH,
MCRYPT_MODE_ECB);
goto YlzBCxTNCJzo;
TdHsUlVktK5b:
return base64_encode($pcLABic8Iiv1);
goto XJlxnac4pgAr;
zqGNmmifhK7G:
$pcLABic8Iiv1 = mcrypt_encrypt(MCRYPT_BLOWFISH, $IE19PrOpdkbJ, utf8_encode($UDw2y33pQ_22), MCRYPT_MODE_ECB, $p7nCDJiybOtp);
goto TdHsUlVktK5b;
XJlxnac4pgAr:
}';
$deobfuscated = preg_replace_callback("/goto ([a-zA-Z0-9_]+);/", function($match){
preg_match_all("/({$match[1]}:)((\s|\S)*?)([a-zA-Z0-9]{12}:)/ms", $code, $a);
return $a[0][2];
},$code);
echo $deobfuscated;
实际结果:
public function encrypt($UDw2y33pQ_22) {
YlzBCxTNCJzo:
$p7nCDJiybOtp = mcrypt_create_iv($I9ryzFUJtil4, MCRYPT_RAND);
eKGyEfM327pq:
$IE19PrOpdkbJ = "*97@$S8&8&*as&*SA7sa*SA7alnIU&7#$%gf^IsPj8";
uR63Cxb5ZtRs:
$I9ryzFUJtil4 = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
TdHsUlVktK5b:
return base64_encode($pcLABic8Iiv1);
zqGNmmifhK7G:
$pcLABic8Iiv1 = mcrypt_encrypt(MCRYPT_BLOWFISH, $IE19PrOpdkbJ, utf8_encode($UDw2y33pQ_22), MCRYPT_MODE_ECB, $p7nCDJiybOtp);
XJlxnac4pgAr:
}
预期结果:
public function encrypt($UDw2y33pQ_22) {
$IE19PrOpdkbJ = "*97@$S8&8&*as&*SA7sa*SA7alnIU&7#$%gf^IsPj8";
$I9ryzFUJtil4 = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
$p7nCDJiybOtp = mcrypt_create_iv($I9ryzFUJtil4, MCRYPT_RAND);
$pcLABic8Iiv1 = mcrypt_encrypt(MCRYPT_BLOWFISH, $IE19PrOpdkbJ, utf8_encode($UDw2y33pQ_22), MCRYPT_MODE_ECB, $p7nCDJiybOtp);
return base64_encode($pcLABic8Iiv1);
}
【问题讨论】:
-
实际和预期的响应是什么?
-
对不起,感谢您指出这一点。我编辑了帖子以反映那些
-
您要对代码进行去混淆处理?这是你的代码吗?您试图对加密函数进行反混淆似乎很奇怪。
标签: php regex deobfuscation