| The Immortal Descendants | ||
| Level: Beginner | Date: Aug. 14, 2000 | |
| Training Arkanoid 2000 v1.5 | ||
| by Muad'Dib | The Immortal Descendants | 
 
 
 
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
MainDialog  PROTO   :DWORD,:DWORD,:DWORD,:DWORD
.data
OFFS_Points     dd  442F1Ch
OFFS_Balls      dd  444AAAh
ArkanoidWindow  db  "Arkanoid2000",0
Error_NoRun     db  "Arkanoid 2000 is not running...",0
Error_Write     db  "Error writing process memory!",0
Error           db  "ERROR:",0
About_Title     db  "About...",0
About           db  "Arkanoid 2000 v1.5 +2 Trainer by Muad'Dib/KNiFE",0dh,0ah,0dh,0ah
                db  "Greetings to OPTiCaL, Carpathia, CrackZ, sinn0r,",0dh,0ah
                db  "everyone in Pravus/Immortal Descendants and",0dh,0ah
                db  "everyone I know",0dh,0ah,0dh,0ah
                db  "-Muad'Dib / Aug. 4, 2000",0
.data?
hWnd_Arkanoid   dd  ?
pid_Arkanoid    dd  ?
process_Handle  dd  ?
number          dd  ?
hInst           dd  ?
.code
main:
    invoke  GetModuleHandle, 0
    mov     hInst, eax
    invoke  DialogBoxParam, hInst, 1, 0, OFFSET MainDialog, 0
MainDialog  PROC    hWnd:DWORD, uMsg:DWORD, wParam:DWORD, lParam:DWORD
    .if uMsg == WM_INITDIALOG
        invoke  FindWindow, 0, OFFSET ArkanoidWindow
        .if     eax == 0
            invoke  MessageBox, 0, OFFSET Error_NoRun, OFFSET Error, 0
            invoke  EndDialog, hWnd, 0
            ret
        .endif
        mov     hWnd_Arkanoid, eax
        invoke  GetWindowThreadProcessId, hWnd_Arkanoid, OFFSET pid_Arkanoid
        invoke  OpenProcess, PROCESS_ALL_ACCESS, 0, dword ptr [pid_Arkanoid]
        mov     process_Handle, eax
    .elseif uMsg == WM_COMMAND
        mov     eax, wParam
        .if eax == 100
            invoke  GetDlgItemInt, hWnd, 300, 0, 0
            mov     number, eax
            invoke  WriteProcessMemory, process_Handle, OFFS_Balls, OFFSET number, 4, 0
            .if     eax == 0
               invoke  MessageBox, 0, OFFSET Error_Write, OFFSET Error, 0
               invoke  EndDialog, hWnd, 0
               ret
            .endif                    
        .elseif ax == 101
            invoke  GetDlgItemInt, hWnd, 301, 0, 0
            mov     number, eax
            invoke  WriteProcessMemory, process_Handle, OFFS_Points, OFFSET number, 4, 0
            .if     eax == 0
               invoke  MessageBox, 0, OFFSET Error_Write, OFFSET Error, 0
               invoke  EndDialog, hWnd, 0
               ret
            .endif                    
        .elseif ax == 102
            invoke  ExitProcess, 0
            ret
        .elseif ax == 103
            invoke  MessageBox, hWnd, OFFSET About, OFFSET About_Title, 0
        .endif
    .elseif uMsg == WM_CLOSE
        invoke  EndDialog, hWnd, 0
    .endif
    ret
MainDialog  ENDP
end main