今年年初,本站用了某兄弟写的Wordpress Open Social 付费版插件,但是该插件和我的网站的另外一个QA插件有冲突,需要注释 Open Social 插件的其中一行代码。以前都是岁月静好,可是从4.0版本开始,原作者对PHP文件源码做了简易的混淆处理。把页面中的字符串转换成了16进制和8进制,导致我升级插件后找不到需要注释的代码行。
都是同行,何必相互为难?
我的目标就是要把PHP源文件中的字符串从16进制和8进制转换成原始字符串。
比如要把:“\x3c\151\x6e\x70\165\x74\x20\x74\x79\160\x65\x3d\x22\x68\x69\x64\x64\x65\x6e\x22\x20\x69\144\x3d\x22”
转换成:
“<input type=”hidden” id=””
字符串是以”\x或者\数字开始,\x打头的是16进制,\数字打头的是8进制
# # 解密委托 # $DecodeEvaluator = { param([string]$Str) $Str = $Str.Substring(1,$Str.Length-2) $tokens = $str -split '\\' | select -Skip 1 $result = $tokens | foreach { $char = $_ if($char -like 'x*') { [char]([convert]::ToInt32("0"+$char,16)) } else { [char]([convert]::ToInt32([int]$char,8)) } } $result = '"{0}"' -f ( $result -join '') $result } $ErrorActionPreference = 'stop' # 读取源文件 $text = Get-Content D:\test.php -Raw # 正在替换,并保存新文件 [regex]::Replace($text, '"(\\(x|\d)).*?"', $DecodeEvaluator) | Out-File D:\test2.php
解密前 解密后
本文链接: https://www.pstips.net/regex-replace.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!