我有这个问题:
我的网站的各个页面(简称:html,php和js)受特洛伊木马(基于NOD32扫描的JS / Kryptik.ADZ)的影响。
每种类型页面中的代码都是这样的:
PHP:
#336988#
echo "<script type=\"text/javascript\" language=\"javascript\" > CODE OF MALWARE </script>";
#/336988#
JS:
/*336988*/
CODE OF MALWARE
/*/336988*/
HTML:
<!--336988-->
<script type="text/javascript" language="javascript" >CODE OF MALWARE</script>
<!--/336988-->
所以我使用Notepad ++和regex用空白文本替换恶意软件。
我的正则表达式是:(<!--|\#|/\*)336988.+/336988(-->|\#|\*/)
但此表达式只能找到HTML。为什么呢?
我不明白。
如果我的英语和我对正则表达式的了解很差,我很抱歉。
由于
卡罗
答案 0 :(得分:0)
试试这个:
'^.*336988.*[\s\S]*.*336988.*$'
答案 1 :(得分:0)
尝试这个,我遇到了同样的问题并且有效。
/#336988#(.*?)#\/336988#/ism
答案 2 :(得分:0)
Here修复336988,68c8c7,8f4d8e,a59dc4的脚本。
答案 3 :(得分:0)
今天我遇到了同样的问题,但代码不同。此代码影响了aspx,asp,htdocs,html,htm和js文件。在我的Powershell代码下面修复这些文件。对于JS文件,您需要更改行:
$regex = New-Object System.Text.RegularExpressions.Regex "<!--68c8c7-->((.|\n)*)<!--/68c8c7-->"
到:
$regex = New-Object System.Text.RegularExpressions.Regex "/\*68c8c7\*((.|\n)*)68c8c7\*/"
和行
Get-ChildItem . -Recurse -Include *.aspx,*asp,*.html,*.htm | where-object {$_.lastwritetime –gt $DateToCompare} | %{Write-Host Examining file: $_.fullname; $_} | ForEach-Object { DoWork $_.Name $_.DirectoryName}
为:
Get-ChildItem . -Recurse -Include *.js | where-object {$_.lastwritetime –gt $DateToCompare} | %{Write-Host Examining file: $_.fullname; $_} | ForEach-Object { DoWork $_.Name $_.DirectoryName}
下面的代码(这个脚本将创建Backup_ *文件,毕竟你可以删除这些文件):
function tryFixFile($filepath, $filepathBackup)
{
$infile = [string]::join([environment]::newline, (get-content -path $filepath))
$regex = New-Object System.Text.RegularExpressions.Regex "<!--68c8c7-->((.|\n)*)<!--/68c8c7-->"
if($regex.IsMatch($infile))
{
$intAnswer = $WScriptObject.popup("File needs to be change: " + $filepath + " do you want to continue?", 0,"Change File",4)
If ($intAnswer -eq 6)
{
Write-Host " Creating backup for file: " $filepath
Copy-Item $filepath $filepathBackup
$replace = $regex.Replace($infile,"")
$replace | out-file $filepath
} else
{
$a.popup("File " + $filepath + " won't be changed.")
}
}
}
function DoWork($filename, $directory)
{
$filepath = $directory + '\' + $filename
$filepathBackup = $directory + '\' + "Backup_" + $filename
$WScriptObject = new-object -comobject wscript.shell
tryFixFile $filepath $filepathBackup
}
$pathToCheck = Read-Host 'WARNING!! Path to check/change?'
if (Test-Path $pathToCheck)
{
Set-Location $pathToCheck
#files were affected no longer that 2 days ago, you can change this
$DateToCompare = (Get-date).AddDays(-2)
Get-ChildItem . -Recurse -Include *.aspx,*asp,*.html,*.htm | where-object {$_.lastwritetime –gt $DateToCompare} | %{Write-Host Examining file: $_.fullname; $_} | ForEach-Object { DoWork $_.Name $_.DirectoryName}
}else
{
write-host "Path doesn't exist"
}