У меня проблемы с пониманием того, как это будет оцениваться, это из-за вредоносного кода, который я анализирую, так что будьте осторожны.
Я удалил ascii giberish и целые числа в цикле foor, который, вероятно, содержит вредоносные инструкции.Так что все должно быть в порядке, я могу предоставить его, если это необходимо.
Если я урежу код, который позволяет мое основное понимание, он пытается передать это:
cmd.exe /c CmD /V/C"set foo=ASCIIgibberish bazz=moreASCIIgibberish&&for %f in (BunchOfIntegers)do set bar=!bar!!foo:~%f,1!&&if %f == 88 powershell.exe "!bar:~6!""
Кому:
Interaction.Shell(`here`,0)
Итак, я не уверен, как cmd и powershell будут разрешать кавычки или имена переменных, так как я не очень знаком с приоритетами powershell и cmd.
Что бы я хотелзнать,
будет ли cmd интерпретировать !
как логическое нет?
если так, то как cmd или powershell оценивают отрицание литерального значения ?, я хочу предположить, что он видитзначение ascii и логически отрицает его (0001 становится 1110), но не уверен.
Правильно ли я считаю, что это просто запутанный способ сказать powershell.exe barSubstringStartingAt6
, потому что, как я вижу, bar
назначается только символ 88 из foo
длиной 79 символов, поэтому невозможно узнать, что будет в bar
[6].
Они просто пытаются отправить переполненный адрес в powershell?