Провожу тесты своего морфера/обфускатора для пш. Весь код под хайд.
$x = ‘hello, xss’
Write-Host $x
Write-Host [Math]::Pow(2,2)
Давай для примера это.
$aJjbuqEmipohvTexRGW = $(rsXWaBJpB $([char]$([int]::Parse("97")) + "" + [char]$([int]::Parse("71")) + "" + [char]$([int]::Parse("86")) + "" + [char]$([int]::Parse("115")) + "" + [char]$([int]::Parse("98")) + "" + [char]$([int]::Parse("71")) + "" + [char]$([int]::Parse("56")) + "" + [char]$([int]::Parse("115")) + "" + [char]$([int]::Parse("73")) + "" + [char]$([int]::Parse("72")) + "" + [char]$([int]::Parse("104")) + "" + [char]$([int]::Parse("122")) + "" + [char]$([int]::Parse("99")) + "" + [char]$([int]::Parse("119")) + "" + [char]$([int]::Parse("61")) + "" + [char]$([int]::Parse("61")) + ""))
W'r'ite-'H'o's't $aJjbuqEmipohvTexRGW
W'r'i't'e-H'o'st $aJjbuqEmip([Math]::Pow(2,2))
Function rsXWaBJpB([string]$aJjbuqEmipText)
{
$aJjbuqEmipsDecodedString=[Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($aJjbuqEmipText))
return $aJjbuqEmipsDecodedString
}
Над этим ещё работаю.Апи вызовы дотнета не морфит.
Морфит только строки, мат. операции с числами ещё пишуИ аргументы вызовов не трогает тоже
Все имена рандомные3) ренейм переменных. Как он у тебя работает? Рандомные префиксы приписываются? Или все имя рандомное?
Разные имена переменных, функций, разные числа(при конкатенации строк), рандом удаление префикса "System.",Насколько они будут уникальны?
Вот тут кстати баг, имя должно быть рандомное.дут после рандомного префикса $aJjbuqEmipsDecodedString. Такая тема сигнатурится.
Это уже будет зависеть от кол-ва вызовов дотнет методов. Сверю, как только допишу морф для вызовов.Насколько они будут уникальны? Код полиморфен или выдаёт каждый раз одно и то же при одном и том же исходнике?
function foo{
param($x, $y)
return $X + $Y
}
$(foo -x 6 -y 6) | Out-File -FilePath "here.result"
Ты прав, нашёл баги, спасибо. Всё потому-что код считает, что $x и $X разные переменные, иду фикситьРандомизация имён не такая простая в пш как может показаться.
например, обфусцируй этот кусок кода(сделай ренейминг переменных) своим движком. На 99% уверен, что найдёшь у себя баги на этом кейсе.
Код:function foo{ param($x, $y) return $X + $Y } $(foo -x 6 -y 6) | Out-File -FilePath "here.result"