扫雷游戏作弊逆向菜文

本文介绍了如何使用逆向工程技术在Win2000的扫雷游戏中作弊。通过分析Winmine.exe的代码,作者找到消息响应流程,并在其中添加作弊功能,实现点击菜单“过关”后自动扫雷并判断是否成功。作弊代码涉及到对内存中特定位置的字节进行操作,以改变游戏状态。
摘要由CSDN通过智能技术生成
【目标程序】:Win2000的 Winmine.exe        
             
【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
         
【调试环境】:Win2000、Ollydbg1.10、ExeScope

【逆向原因】:我有一舍友, 十分精于扫雷游戏,闲暇之时与其比试,总是败多胜少,遂逆

              向一热键作弊(本文改成了菜单)功能,后常胜 ^_^  。今日无事,逆向菜

              文一篇,希望能对刚入门的菜鸟朋友们有些许帮助。

【逆向过程】:

———————————————————————————————————————— 
一、分析

1、弄清程序的流程,将自己的处理代码,挂在消息响应流程中。

// 用DefWindowProcW下断,然后向上翻看,即可看到消息响应流程

// 点击菜单后,会来到如下代码处  

010019AD    > /8B4D 10           mov     ecx, dword ptr ss:[ebp+10]    ;  点击的菜单ID
010019B0    .  0FB7C1            movzx   eax, cx
010019B3    .  3D 0B020000       cmp     eax, 20B                    
010019B8    .  7F 76             jg      short winmine.01001A30       ;  大于 0x20B  跳到后边
010019BA    .  3D 09020000       cmp     eax, 209
010019BF    .  7D 2D             jge     short winmine.010019EE        
010019C1    .  2D FE010000       sub     eax, 1FE
010019C6    .  74 1C             je      short winmine.010019E4
010019C8    .  48                dec     eax
010019C9    .  48                dec     eax
010019CA    .  0F85 7C030000     jnz     winmine.01001D4C
010019D0    .  33FF              xor     edi, edi                      ;  Case 200 of switch 010019B3
010019D2    .  57                push    edi                           ; /ShowState => SW_HIDE
010019D3    .  FF35 A8520001     push    dword ptr ds:[10052A8]        ; |hWnd = NULL
010019D9    .  FF15 EC100001     call    dword ptr ds:[<&USER32.ShowWi>; /ShowWindow
010019DF    .  E9 A2000000       jmp     winmine.01001A86
010019E4    >  E8 26190000       call    winmine.0100330F              ;  Case 1FE of switch 010019B3
010019E9    .  E9 5E030000       jmp     winmine.01001D4C
010019EE    >  8D81 F7FDFFFF     lea     eax, dword ptr ds:[ecx-209]   ;  Cases 209,20A,20B of switch 010019B3
010019F4    .  66:A3 C0520001    mov     word ptr ds:[10052C0], ax
010019FA    .  0FB7C0            movzx   eax, ax
010019FD    .  8D0440            lea     eax, dword ptr ds:[eax+eax*2]
01001A00    .  C1E0 02           shl     eax, 2
01001A03    .  8B88 28500001     mov     ecx, dword ptr ds:[eax+100502>
01001A09    .  890D C4520001     mov     dword ptr ds:[10052C4], ecx
01001A0F    .  8B88 2C500001     mov     ecx, dword ptr ds:[eax+100502>
01001A15    .  8B80 30500001     mov     eax, dword ptr ds:[eax+100503>
01001A1B    .  890D C8520001     mov     dword ptr ds:[10052C8], ecx
01001A21    .  A3 CC520001       mov     dword ptr ds:[10052CC], eax
01001A26    .  E8 E4180000       call    winmine.0100330F
01001A30    > /B9 4E02000
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值