[Powershell] Import kernel32.dll/ ReadProcessMemory


#1
Moin,

seit einer weile beschäftige ich mich nun intensiv mit der Programmierung für Powershell. Dabei würfe ich gerne die Funktion "ReadProcessMemory" benutzen, die sofern ich alles richtig verstanden habe in der kernel32.dll sein sollte.
Allerdings bin ich nach 2 Tagen quer durch Google und inzwischen immer weniger werdenden kreativen Stichworten nach wie vor noch nicht in der Lage die kernel32.dll zu laden.

Kann mir einer sagen wie falsch ich mit meinem Ansatz bin, bzw. mir Tutorials/ Links/ Suchbegriffe nahelegen?

Gruß Ian
 
#3
Hallo ComFreek,

danke für deine schnelle Antwort. Auf den ersten Link bin ich bereits gestoßen. Wie ich mittels dieser Informationen jedoch ein Modul bzw. eine Cmdlet daraus baue bleibt mir verborgen.

Zumal ich jedesmal, folgendes um die Ohren geschlagen bekommen:

In Zeile:1 Zeichen:1
+ [DllImport("kernel32.dll")]
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
Unerwartetes Attribut "DllImport".
 

ComFreek

Mod | @comfreek
Moderator
#4
DllImport ist selbst kein PowerShell, du musst dies so schreiben:
(Quelle: http://blogs.technet.com/b/heyscrip...-to-interact-with-the-windows-api-part-1.aspx)

Code:
$MethodDefinition = @'

[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]

public static extern bool CopyFile(string lpExistingFileName, string lpNewFileName, bool bFailIfExists);

'@

$Kernel32 = Add-Type -MemberDefinition $MethodDefinition -Name 'Kernel32' -Namespace 'Win32' -PassThru

# You may now call the CopyFile function

# Copy calc.exe to the user's desktop

$Kernel32::CopyFile("$($Env:SystemRoot)\System32\calc.exe", "$($Env:USERPROFILE)\Desktop\calc.exe", $False)
 
#5
Hey,

danke das bringt mich wieder ein gutes Stück weiter besonderst der Link :)

Bevor man das hier als erledigt schließen kann, nur noch eine Frage am rande.
Dir ist nicht zufällig noch eine Funktion bekannt "Binär2String", wie man sie aus anderen Sprachen kennt?

Gruß Ian