fb:porticula NoPaste
memorycheat (sehr langsam).
| Uploader: |  Michael | 
| 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
	


			FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!



