fennek11
Goto Top

Powershell: De-Obsfuccation

Hallo,

wenn dieser Code ausgeführt wird:

('{2}{0}{1}{3}'-f 'ar','IA','seT-v','blE')  

ist das Ergebnis 'seT-varIAblE'

Nun sollen in einem komplexen Code diese Formate durch den Klartext ersetzt werden:

$Tx = "qwe.('{2}{0}{1}{3}'-f 'ar','IA','seT-v','blE')  
 tJ4 ('{0}{3}{1}{2}' -f 'sys','C','onvERt','tem.') asd ) ;"  

$re = $Tx | select-string -Pattern '\(.*?-f.*?\)' -AllMatches  

foreach ($rr in $re.Matches) {
    invoke-command -scriptblock { $rr.value }
}

Der Regex findet die Format-Ausdrücke in Klammern, aber es wird nicht in den Klartext gewandelt.

Danach sollte ein Replace-Befehl ausgeführt werden:

$Tx = $Tx.replace("('{2}{0}{1}{3}'-f 'ar','IA','seT-v','blE')", "set-variable")  

Wie könnte das gehen?

Content-Key: 579418

Url: https://administrator.de/contentid/579418

Printed on: April 26, 2024 at 11:04 o'clock

Mitglied: 144260
Solution 144260 Jun 15, 2020 updated at 11:31:50 (UTC)
Goto Top
Wie könnte das gehen?
Mit Invoke-Expression face-wink
$Tx = "qwe.('{2}{0}{1}{3}'-f 'ar','IA','seT-v','blE')
 tJ4 ('{0}{3}{1}{2}' -f 'sys','C','onvERt','tem.') asd ) ;"

$result = [regex]::replace($Tx,'(?is)\(.*?-f.*?\)',{param($m) iex $m.Value})
$result
Member: Fennek11
Fennek11 Jun 15, 2020 at 11:34:27 (UTC)
Goto Top
Vielen Dank,

auch der erste Ansatz geht (weniger elegant)

$Tx = "qwe.('{2}{0}{1}{3}'-f 'ar','IA','seT-v','blE')  
 tJ4 ('{0}{3}{1}{2}' -f 'sys','C','onvERt','tem.') asd ) ;"  

$re = $Tx.ToLower() | select-string -Pattern '\(.*?-f.*?\)' -AllMatches  

foreach ($rr in $re.Matches) {
    $neu =  invoke-expression  $rr.value
    $Tx = $Tx.tolower().Replace($rr.Value, $neu)
}
$Tx