[Powershell] Import kernel32.dll/ ReadProcessMemory


Entwickler-Ian

Mitglied
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
 

Entwickler-Ian

Mitglied
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
DllImport ist selbst kein PowerShell, du musst dies so schreiben:
(Quelle: http://blogs.technet.com/b/heyscriptingguy/archive/2013/06/25/use-powershell-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)
 

Entwickler-Ian

Mitglied
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