win32asm写的红警2的修改器

本文介绍了如何使用win32asm来编写针对《红色警戒2:尤里的复仇》的游戏修改器。通过动态跟踪找到保存金钱的内存地址,利用跳转指令将地址保存到固定位置,实现每次按Alt+1增加50000金钱的功能。代码适用于WinXP系统,主要涉及汇编语言、内存操作和Windows API调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

from http://zerray.com/

 

由于红警2中保存金钱的位置每次载入都不一样,所以不能简单的 WriteProcessMemory 就行了。不过办法当然还是有的。查到一次的地址,然后在地址处下个断点,动态跟踪一下就会发现,代码中有一处 push eax 是用来给出保存金钱的地址的。在该处下断点,每次 eax 的值加 2E8h 刚好是保存金钱的地址。嘿嘿,那只要在这里做一些手脚不就搞定了?在进程的空间中找一处空闲的地方,例如地址A和其不远出的B,然后把push eax 的地方改成 jmp B 在B那里写上 mov A, eax 这样就把这个值保存在了一个固定的地方,然后再在B后面写上被破坏的几条指令,并最后jmp回原来的地址。OK了,现在我们只要去A处取地址,加上 2E8h 就能得到金钱的地址了,就又能改钱了,哈哈!至于改别的,我没有试,大概方法都差不多。

下面是代码,只适用于winxp,并且是针对尤里的复仇的。每次按下alt+1加50000的money。

.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

WM_SHELLNOTIFY equ WM_USER + 5
IDI_TRAY equ 0
YuriIcon equ 10000
HotKeyID equ 0ABC0h

.const
    AppMutex db 'FixYuriMutex', 0
    AlreadyRun db 'FixYuri is already running!', 0
    AppName db 'FixYuri', 0
    ClassName db 'FixYuriClass', 0
    TargetTitle db 'Yuri''s Revenge', 0
    HintText db 'press Alt+1 add 50000$', 0
    YuriNotFound db 'Yuri'

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值