win32asm写的红警98修改器
from http://zerray.com/
前段时间写的,感觉比较完善了。能锁定金钱,电量和用电量,并能增加建造速度。并可以工作在win98和winxp两种平台上。
.386
.model flat, stdcall
option casemap: none
include /masm32/include/windows.inc
include /masm32/include/kernel32.inc
include /masm32/include/user32.inc
include /masm32/include/shell32.inc
includelib /masm32/lib/kernel32.lib
includelib /masm32/lib/user32.lib
includelib /masm32/lib/shell32.lib
WinMain proto :DWORD, :DWORD, :DWORD, :DWORD
KeyProc proto :DWORD, :DWORD, :DWORD
GetOsVersion proto
WM_SHELLNOTIFY equ WM_USER + 5
IDI_TRAY equ 0
RaIcon equ 10000
TimerID equ 1
ButtonID1 equ 1
ButtonID2 equ 2
ButtonID3 equ 3
ButtonID4 equ 4
HotKeyID1 equ 0ABC1h
HotKeyID2 equ 0ABC2h
HotKeyID3 equ 0ABC3h
HotKeyID4 equ 0ABC4h
.const
AppMutex db 'racheatmutex', 0
AlreadyRun db 'RA cheater is already running!', 0
AppName db 'RA cheater', 0
ClassName db 'racheaterclass', 0
TargetTitle db 'Red Alert', 0
ButtonClass db 'Button', 0
Button1 db 'lock money(Alt+1)', 0
Button2 db 'lock used power(Alt+2)', 0
Button3 db 'lock power(Alt+3)', 0
Button4 db 'speed up(Alt+4)', 0
Value1 dd 30000
Value2 dd 0
Value3 dd 500
Value4 dd 0F0h
.data
flag1 db 0
flag2 db 0
flag3 db 0
pid dd 0
hd dd 0
.data?
inst HINSTANCE ?
cmd LPSTR ?
note NOTIFYICONDATA <?>
ico dd ?
OsVer dd ?
hHook dd ?
Addr1 dd ?
Addr2 dd ?
Addr3 dd ?
Addr4 dd ?
hwnd HWND ?
.code
start:
invoke CreateMutex, NULL, FALSE, addr AppMutex
invoke GetLastError
.IF eax == ERROR_ALREADY_EXISTS
invoke MessageBox, NULL, addr AlreadyRun, addr AppName, MB_OK or MB_ICONWARNING
invoke ExitProcess, 0
.ENDIF
invoke GetOsVersion ; 判断系统类型
mov OsVer, eax
.IF OsVer == VER_PLATFORM_WIN32_NT ; 根据系统类型赋不同的地址,也许在你的机器上和我的不一样,FPE搜一下就知道了。
mov Addr1, 0A431D17h
mov Addr2, 0A431D67h
mov Addr3, 0A431D63h
mov Addr4, 0A431D53h
.ELSE
mov Addr1, 01C31D17h
mov Addr2, 01C31D67h
mov Addr3, 01C31D63h
mov Addr4, 0A431D53h
.ENDIF
invoke GetModuleHandle, NULL
mov inst, eax
invoke GetCommandLine
mov cmd, eax
invoke WinMain, inst, NULL, cmd, SW_MINIMIZE
invoke ExitProcess, eax
WinMain proc hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdShow:DWORD
LOCAL wc:WNDCLASSEX
LOCAL msg:MSG
mov wc.cbSize, SIZEOF WNDCLASSEX
mov wc.style, CS_HREDRAW or CS_VREDRAW
mov wc.lpfnWndProc, OFFSET WndProc
mov wc.cbClsExtra, NULL
mov wc.cbWndExtra, NULL
push hInst
pop wc.hInstance
mov wc.hbrBackground, COLOR_WINDOW
mov wc.lpszMenuName, NULL
mov wc.lpszClassName, OFFSET ClassName
invoke LoadIcon, hInst, RaIcon
mov wc.hIcon, eax
mov wc.hIconSm, eax
mov ico, eax
invoke LoadCursor, NULL, IDC_ARROW
mov wc.hCursor, eax
invoke RegisterClassEx, addr wc
invoke CreateWindowEx, NULL,/
addr ClassName,/
addr AppName,/
WS_OVERLAPPEDWINDOW and not WS_MAXIMIZEBOX and not WS_SIZEBOX,/
CW_USEDEFAULT,/
CW_USEDEFAULT,/
200,/
225,/
NULL,/
NULL,/
hInst,/
NULL
mov hwnd, eax
invoke ShowWindow, hwnd, CmdShow
invoke UpdateWindow, hwnd
.WHILE TRUE
invoke GetMessage, addr msg, NULL, 0, 0
.BREAK .IF (!eax)
invoke TranslateMessage, addr msg
invoke DispatchMessage, addr msg
.ENDW
mov eax, msg.wParam
ret
WinMain endp
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.IF uMsg == WM_CREATE
invoke SetTimer, hWnd, TimerID, 500, NULL
.IF OsVer == VER_PLATFORM_WIN32_NT
invoke RegisterHotKey, hWnd, HotKeyID1, MOD_ALT, VK_1
invoke RegisterHotKey, hWnd, HotKeyID2, MOD_ALT, VK_2
invoke RegisterHotKey, hWnd, HotKeyID3, MOD_ALT, VK_3
invoke RegisterHotKey, hWnd, HotKeyID4, MOD_ALT, VK_4
.ELSE ; 由于win98下注册的快捷键进游戏后就失效了,只好用钩子实现快捷键。
invoke SetWindowsHookEx, WH_JOURNALRECORD, addr KeyProc, inst, NULL
mov hHook, eax
.ENDIF
invoke CreateWindowEx, NULL, addr ButtonClass, addr Button1,/
BS_PUSHBUTTON or WS_VISIBLE or WS_CHILD, 0, 0, 195, 50,/
hWnd, ButtonID1, inst, NULL
invoke CreateWindowEx, NULL, addr ButtonClass, addr Button2,/
BS_PUSHBUTTON or WS_VISIBLE or WS_CHILD, 0, 50, 195, 50,/
hWnd, ButtonID2, inst, NULL
invoke CreateWindowEx, NULL, addr ButtonClass, addr Button3,/
BS_PUSHBUTTON or WS_VISIBLE or WS_CHILD, 0, 100, 195, 50,/
hWnd, ButtonID3, inst, NULL
invoke CreateWindowEx, NULL, addr ButtonClass, addr Button4,/
BS_PUSHBUTTON or WS_VISIBLE or WS_CHILD, 0, 150, 195, 50,/
hWnd, ButtonID4, inst, NULL
.ELSEIF uMsg == WM_SIZE
.IF wParam == SIZE_MINIMIZED
mov note.cbSize, SIZEOF NOTIFYICONDATA
push hWnd
pop note.hwnd
mov note.uID, IDI_TRAY
mov note.uFlags, NIF_ICON or NIF_MESSAGE or NIF_TIP
mov note.uCallbackMessage, WM_SHELLNOTIFY
push ico
pop note.hIcon
invoke lstrcpy, addr note.szTip, addr AppName
invoke ShowWindow, hWnd, SW_HIDE
invoke Shell_NotifyIcon, NIM_ADD, addr note
.ENDIF
.ELSEIF uMsg == WM_SHELLNOTIFY
.IF wParam == IDI_TRAY
.IF lParam == WM_LBUTTONDOWN
invoke Shell_NotifyIcon, NIM_DELETE, addr note
invoke ShowWindow, hWnd, SW_RESTORE
invoke SetForegroundWindow, hWnd
.ENDIF
.ENDIF
.ELSEIF uMsg == WM_TIMER
.IF hd == 0
invoke FindWindow, 0, addr TargetTitle
.IF eax != 0
invoke GetWindowThreadProcessId, eax, addr pid
invoke OpenProcess, PROCESS_ALL_ACCESS, FALSE, pid
mov hd, eax
.ENDIF
.ENDIF
.IF flag1 == 1
invoke WriteProcessMemory, hd, Addr1, addr Value1, SIZEOF Value1, NULL
.IF eax == 0
mov hd, 0
.ENDIF
.ENDIF
.IF flag2 == 1
invoke WriteProcessMemory, hd, Addr2, addr Value2, SIZEOF Value2, NULL
.IF !eax
mov hd, 0
.ENDIF
.ENDIF
.IF flag3 == 1
invoke WriteProcessMemory, hd, Addr3, addr Value3, SIZEOF Value3, NULL
.IF !eax
mov hd, 0
.ENDIF
.ENDIF
.ELSEIF uMsg == WM_COMMAND
mov eax, wParam
.IF ax == ButtonID1
xor flag1, 1
.ELSEIF ax == ButtonID2
xor flag2, 1
.ELSEIF ax == ButtonID3
xor flag3, 1
.ELSEIF ax == ButtonID4
.IF hd
mov edx, Addr4
invoke WriteProcessMemory, hd, edx, addr Value4, SIZEOF Value4, NULL
add edx, 4
invoke WriteProcessMemory, hd, edx, addr Value4, SIZEOF Value4, NULL
add edx, 4
invoke WriteProcessMemory, hd, edx, addr Value4, SIZEOF Value4, NULL
add edx, 4
invoke WriteProcessMemory, hd, edx, addr Value4, SIZEOF Value4, NULL
.ENDIF
.ENDIF
.ELSEIF uMsg == WM_HOTKEY
.IF wParam == HotKeyID1
xor flag1, 1
.ELSEIF wParam == HotKeyID2
xor flag2, 1
.ELSEIF wParam == HotKeyID3
xor flag3, 1
.ELSEIF
.IF hd
mov edx, Addr4
invoke WriteProcessMemory, hd, edx, addr Value4, SIZEOF Value4, NULL
add edx, 4
invoke WriteProcessMemory, hd, edx, addr Value4, SIZEOF Value4, NULL
add edx, 4
invoke WriteProcessMemory, hd, edx, addr Value4, SIZEOF Value4, NULL
add edx, 4
invoke WriteProcessMemory, hd, edx, addr Value4, SIZEOF Value4, NULL
.ENDIF
.ENDIF
.ELSEIF uMsg == WM_SYSKEYDOWN
.IF lParam == VK_1
xor flag1, 1
.ELSEIF lParam == VK_2
xor flag2, 1
.ELSEIF lParam == VK_3
xor flag3, 1
.ENDIF
.ELSEIF uMsg == WM_DESTROY
.IF OsVer == VER_PLATFORM_WIN32_NT
invoke UnregisterHotKey, hWnd, HotKeyID1
invoke UnregisterHotKey, hWnd, HotKeyID2
invoke UnregisterHotKey, hWnd, HotKeyID3
.ELSE
invoke UnhookWindowsHookEx, hHook
.ENDIF
invoke PostQuitMessage, NULL
.ELSE
invoke DefWindowProc, hWnd, uMsg, wParam, lParam
ret
.ENDIF
xor eax, eax
ret
WndProc endp
KeyProc proc nCode: DWORD, wParam: WPARAM, lParam: LPARAM
.IF nCode == HC_ACTION
mov edx, lParam
assume edx: PTR EVENTMSG
.IF [edx].message == WM_SYSKEYDOWN
mov eax, [edx].paramL
.IF al == VK_1
invoke PostMessage, hwnd, WM_SYSKEYDOWN, NULL, VK_1
.ELSEIF al == VK_2
invoke PostMessage, hwnd, WM_SYSKEYDOWN, NULL, VK_2
.ELSEIF al == VK_3
invoke PostMessage, hwnd, WM_SYSKEYDOWN, NULL, VK_3
.ENDIF
.ENDIF
.ENDIF
invoke CallNextHookEx, hHook, nCode, wParam, lParam
ret
KeyProc endp
GetOsVersion proc
LOCAL ovi:OSVERSIONINFO
mov ovi.dwOSVersionInfoSize, SIZEOF OSVERSIONINFO
invoke GetVersionEx, addr ovi
mov eax, ovi.dwPlatformId
ret
GetOsVersion endp
end start
由于红警98中金钱等信息的地址在每次载入时都是固定的,所以这个程序可以得逞,要是换红警2,就得用另一种方法了。
win32asm写的红警98修改器相关推荐
- 写一个杀戮尖塔存档修改器
软件及源码下载 1. 前言 之前杀戮尖塔打折了,然后 买了这个游戏,游戏很好玩,所以我简单研究了一下游戏.游戏是java写的,那么几乎可以看到他的完整源码了. 这个软件前前后后我差不多我写了一周了.所 ...
- VB写的红警内存辅助-反汇编无限金币
Private Sub Command1_Click()'004E48F9 - 2B C7 - sub eax,edi;'直接NOP掉即可破 , 即向 代码地址 004E48F9 写入2个NOP指令即 ...
- QT5.10+VS写的高仿CE修改器的内存视图控件
支持变动数据高亮提示,内存修改(可用快捷键撤销或重做),复制粘贴等等... 代码地址:QT5.10+VS写的高仿CE进程内存视图源码-C++文档类资源-CSDN下载
- 很懒了不爱写,一个狮心王的修改器...就写了2个功能,今天有朋友要至少把MP锁了,就再加一项吧..今天修改器写完了,可以下了
将442E66 连续2字节修改为 90 90就可以锁定技能点,怎么加也够了....培养个全能吧 将5FFF5C 连续2字节修改为 01 ED就可以随意买东西..根本不花钱,不过物品栏金钱显示也变0了. ...
- 红警2你值得拥有(游戏人生)
前言:红色警戒是我第一款接触的电脑游戏,当年玩红警98杀得天昏地暗的情况还历历在目,小时候听不懂语音,现在大部分是可以听得懂了,不过下面仍然是转载的... ⊙﹏⊙,出处已经不明.这款神作的语音也非常经 ...
- 红警自建服务器,20年前占据中国网吧的红警,现在被老外做成页游,服务器多次被挤爆!...
大家好,这里是正惊游戏,我是正惊小弟. 如果你在2000年左右进入网吧,或许你会看到这样一幅场景,在他们的电脑显示屏上,常会看到满屏闪着红光的坦克,如潮水般扑向围满了光棱塔的基地,一时间爆炸火光四起, ...
- 汉化版植物大战僵尸修改器
1,自己用c#调用api写了一个植物大战僵尸修改器: 2,可以修改阳光值,金钱,花肥,杀虫剂,树肥,巧克力等属性: 3,自动拾取(冒险模式有效),无等待建造: 4,可以选择不同模式的跳关: 5,僵尸游 ...
- 手把手教你写游戏修改器
转载请注明出处!!!谢谢!!! 在玩游戏的时候,很多人还是喜欢用修改器的(本人一样哈)但是很多网上下的修改器,要么不能用,要么有毒,很不爽,因此还是自己动手丰衣足食吧.下面就以植物大战僵尸为例,一 ...
- 为英雄无敌3写个游戏修改器
我是比较铁杆的英雄无敌3的fans,在网上看到这样的文章:http://game.china.com/zh_cn/play/10002765/20021113/11362720.html 就是让我方英 ...
- 抖音怎么上热门网红 火山小视频md5修改器
抖音怎么上热门网红 火山小视频md5修改器 除了电商和新零售之外,抖音在社交领域的尝试让我们看到了短视频在社交化道路上的诸多可能性.可以预见的是未来随着基于短视频 ...
最新文章
- C与C++之间相互调用
- java中gson的简单使用
- mysql 创建用户远程连接
- linux中python编译器的配置_linux下配置python3详解
- 网络:TCP协议3次握手4次挥手
- 前后端分离项目后端向前端返回压缩包的方法实现java版
- 15拆分成3个不同的自然数_15个小时搜救破拆,他磨破3双手套营救出4个生还者...
- 移除指定 global using 命名空间
- jvm需要多长时间才能进行转义分析? 可能比您想象的要长。
- 背景图处理,这是个好东西记录一下
- 机器学习(3)——K-近邻算法改进约会网站的配对效果实例
- 在linux中用高斯09优化分子结构,高斯09的优化 - 量子化学 - Gaussian - 小木虫论坛-学术科研互动平台...
- ctf 逆向 回顾与总结
- Bootstrap-table 如何合并相同单元格
- 【本周日城市沙龙】相约上海,共话互动媒体技术产品新趋势
- IP地址和子网掩码的作用是什么
- 【IoT】产品设计:包装盒型设计
- python出行轨迹记录软件_看看过去跑过哪些地方,用Python和高德API绘制跑步轨迹...
- 网页代码扒ppt_在网页中在线浏览ppt文档
- 小白学习Linux命令