alphasec academy

Kolejny sposób blokowania ekranu PowerShellem: (Add-Type -m '[DllImport("user32.dll")]public static extern bool LockWorkStation();' -Name "Lock" -pas)::LockWorkStation()

Dodatkowe informacje

Alternatywna wersja protipa aptm.in/protip/0082 czyli blokowania ekranu PowerShellem. Różnica polega na tym, że zamiast tworzyć nową klasę cmdletem
Add-Type
z kodem źródłowym przekazanym do parametru
-TypeDefinition
, wykorzystujemy parametr
-MemberDefinition
(w skrócie
-m
), który pozwoli nam uzyskać dostęp do natywnych ("niezarządzalnych" - ang. unmanaged) funkcji biblioteki napisanej w dowolnym języku. Dla chcących zgłębić temat, wykorzystywany jest mechanizm P/Invoke.
Parametr
-pas
czyli
-PassThru
spowoduje, że
Add-Type
zwróci nam obiekt reprezentujący dodane typy, przec co możemy od razu się do niego odwołać (
::LockWorkStation()
) bez konieczności tworzenia dodatkowej zmiennej.
Być może nieco bardziej czytelną formą będzie:
$sig = '[DllImport("user32.dll")]public static extern bool LockWorkStation();'
$User32LockWorkStation = Add-Type -MemberDefinition $sig -Name "Lock" -PassThru
$User32LockWorkStation::LockWorkStation()
Ponownie warto pamiętać, że w tle uruchomi się kompilator
csc.exe
, zgodnie z tym co omawialiśmy przy okazji protipa aptm.in/protip/007f.

Przydatne linki


Subskrybuj

Jeśli chcesz otrzymywać nowe, mięsiste protipy na maila, a także zostać czasem powiadomiony o wartościowych wydarzeniach - dołącz do subskrybentów.