fb:porticula NoPaste
memorycheat (sehr langsam).
Uploader: | ![]() |
Datum/Zeit: | 27.09.2007 13:50:22 |
#include "windows.bi"
#macro vergleiche(hproc, anz, mem1, mem2, act)
Scope
Dim As Integer dummy, counter
Dim As Integer tmp
For i As Integer = 0 To anz-1
If i mod 100 = 0 Then Locate 1, 10: Print (i / anz) * 100; "%";
ReadProcessMemory( _
hproc, _
Cast(any ptr, mem2(i)), _
@tmp, _
4, _
@dummy _
)
#if TypeOf(act) = Integer
If (tmp = act) Then
mem1(counter) = tmp
mem2(counter) = mem2(i)
counter += 1
End If
#else
'neuer wert - alter wert = (1), <> (2), < (3), <= (4), >= (5), > (6) wert (7)
#if act = "="
If (tmp = mem1(i)) Then
#elseif act = "<>"
If (tmp <> mem1(i)) Then
#elseif act = "<"
If (tmp < mem1(i)) Then
#elseif act = "<="
If (tmp <= mem1(i)) Then
#elseif act = ">="
If (tmp >= mem1(i)) Then
#elseif act = ">"
If (tmp > mem1(i)) Then
#endif
mem1(counter) = tmp
mem2(counter) = mem2(i)
counter += 1
End If
#endif
Next i
Redim Preserve mem1(counter-1)
Redim Preserve mem2(counter-1)
anz = counter
End Scope
#endmacro
Declare Function dumpmem(hproc As handle, daten() As Double, offset() As Integer) As Integer
ReDim memwerte(0) As Integer
ReDim memoffset(0) As Integer
Dim hwnd As hwnd, ProcessID As dword, processhandle As handle, anzahl As Integer
Dim As String fenstername
Dim As Integer auswahl, adresse, wert, dummy
Dim As Integer tmp
Screen 12, 24
Input "Fenstertitel: ", fenstername
hwnd = FindWindow(0, fenstername)
If (hwnd = 0) Then
Print "Konnte das Fenster nicht finden."
Sleep
End
End If
GetWindowThreadProcessId hwnd, @ProcessID
processhandle = OpenProcess(PROCESS_ALL_ACCESS, False, ProcessID)
If processhandle = 0 Then
Print "Prozesshandle konnte nicht ermittelt werden."
Sleep
End
End If
Do
Cls
Locate 1,1: Print anzahl; " "
Input "dumpen(1), wert aendern(2), vergleichen(3) oder speichern (4) ", auswahl
Select Case As Const auswahl
Case 1
anzahl = dumpmem(processhandle, memwerte(), memoffset())
Case 2
Input "Adresse: ", adresse
Input "Wert: ", wert
WriteProcessMemory( _
processhandle, _
Cast(any ptr, adresse), _
@wert, _
4, _
@dummy _
)
Case 3
Input "neuer wert - alter wert = (1), <> (2), < (3), <= (4), >= (5), > (6) wert (7) ", auswahl
Select Case auswahl
Case 1
vergleiche(processhandle, anzahl, memwerte, memoffset, "=" )
Case 2
vergleiche(processhandle, anzahl, memwerte, memoffset, "<>" )
Case 3
vergleiche(processhandle, anzahl, memwerte, memoffset, "<" )
Case 4
vergleiche(processhandle, anzahl, memwerte, memoffset, "<=" )
Case 5
vergleiche(processhandle, anzahl, memwerte, memoffset, ">=" )
Case 6
vergleiche(processhandle, anzahl, memwerte, memoffset, ">" )
Case 7
Input "Wert: ", tmp
vergleiche(processhandle, anzahl, memwerte, memoffset, tmp)
End Select
Case 4
Dim As String dateiname
Input "dateiname: ", dateiname
Open dateiname For Output As #1
For i As Integer = 0 To anzahl-1
Print #1, memoffset(i) & ": " & memwerte(i)
Next i
Close #1
Case 0
Exit Do
End Select
Print "fertig"
GetKey
Loop
CloseHandle processhandle
Function dumpmem(hproc As handle, daten() As Double, offset() As Integer) As Integer
Dim As MEMORY_BASIC_INFORMATION mbi
Dim As unsigned integer adress = &h000000
Dim As Integer start, ende, anz, dummy
Do
VirtualQueryEx( _
hproc, _
cast(any ptr,adress), _
@mbi, _
sizeof(MEMORY_BASIC_INFORMATION) _
)
If ((mbi.State = MEM_COMMIT) And (mbi.Protect = PAGE_READWRITE) And _
(mbi.Type = MEM_PRIVATE)) Then
start = Cast(uinteger, mbi.BaseAddress)
ende = Cast(uinteger, mbi.BaseAddress + mbi.RegionSize)
Locate 10, 1 : Print Using "#########.#####";mbi.RegionSize/8
Redim Preserve daten(anz + mbi.RegionSize/4)
Redim Preserve offset(anz + mbi.RegionSize/4)
For i As Integer = anz To anz + mbi.RegionSize/4
offset(i) = start + (i - anz)*4
Next i
ReadProcessMemory( _
hproc, _
Cast(any ptr, start), _
@daten(anz), _
mbi.RegionSize, _
@dummy _
)
Print "Bereich: " , hex(start), " - ", hex(ende)
anz += mbi.RegionSize/4
End If
adress += mbi.RegionSize
Loop While (adress < &h80000000)
Return anz
End Function