Hi, ich versuche gerade ein kleines Tool das in AutoIT geschrieben wurde (um genau zu sein der Loader von lolkop für private Silkroadserver) zu übersetzen und komme da an einer Stelle nicht weiter. Es geht um diesen Abschnitt:
Hier noch die Funktionen 'memread' und 'memwrite':
- Func memread($mid, $adress, $type = 'dword')
- Local $struct = DllStructCreate($type)
- DllCall($kernel32, 'int', 'ReadProcessMemory', 'int', $mid, 'int', $adress, 'ptr', DllStructGetPtr($struct), 'int', DllStructGetSize($struct), 'int', '')
- Return DllStructGetData($struct, 1)
- EndFunc ;==>memread
- Func memwrite($mid, $adress, $hex)
- Local $struct = DllStructCreate('byte[' & BinaryLen('0x' & $hex) & ']')
- For $i = DllStructGetSize($struct) To 1 Step - 1
- DllStructSetData($struct, 1, BinaryMid('0x' & $hex, $i, 1), $i)
- Next
- Local $x = DllCall($kernel32, 'int', 'VirtualProtectEx', 'int', $mid, 'ptr', $adress, 'int', DllStructGetSize($struct), 'dword', 0x40, 'dword*', 0)
- DllCall($kernel32, 'int', 'WriteProcessMemory', 'int', $mid, 'int', $adress, 'ptr', DllStructGetPtr($struct), 'int', DllStructGetSize($struct), 'int', 0)
- DllCall($kernel32, 'int', 'VirtualProtectEx', 'int', $mid, 'ptr', $adress, 'int', DllStructGetSize($struct), 'dword', $x[5], 'dword*', 0)
- EndFunc ;==>memwrite
Mir würde auch erstmal reichen, wenn ich nur das erste schaffen würde zu übersetzen, also die 1. Zeile (If memread($mid...)).
Anstatt memwrite($mid...)) habe ich zum Test eine MsgBox eingefügt und nun ist es so, dass wenn ich das Spiel starte, die MsgBox sofort angezeigt wird.
Nun, habe ich das gleiche in VB.NET versucht, jedoch kommt bei mir keine MsgBox:
- Dim meinProzess As Process() = Process.GetProcessesByName("sro_client")
- Dim Silkroad_Online As Process = meinProzess(0)
- Dim mid As IntPtr = OpenProcess(&H10, False, CUInt(Silkroad_Online.Id))
- Dim bytes As Byte() = New Byte(2) {}
- If ReadProcessMemory(mid, &H633D00, bytes, 2, 0) = &H7547 Then
- MsgBox("blubb")
- End If
Woran liegt das? Ist mein Code komplett falsch? Hoffe mir könnte da jemand helfen der sich vielleicht mit beiden Sprachen auskennt..
Natürlich kann es dann auch C# sein, das ist mir egal, da sich beide sehr ähneln und außerdem gibts ja auch Converter.
Vielen Dank schonmal!