【破解】扫雷去除时间限制

前一篇文章 【逆向】扫雷算法分析 主要分析了 扫雷 的部分算法(绘制雷区和生成地雷),本篇文章开始着手对扫雷进行部分破解。

首先肯定要去除的就是时间校验了。 一般设置时间都会调用到SetTimer这个函数,直接找一下啊函数,果然发现程序有这个函数的调用,直接下断点

F9运行,当点击雷区的时候,程序断下

D |. |. |. FF35 dword ptr ds:[0x1005164],ebx; |0100384F |. FF15 B4100001 call dword ptr ds:[<&USER32.SetTimer>] ; \SetTimer

SetTimer函数的原型

UINT_PTR SetTimer(HWND hWnd, // 窗口句柄UINT_PTR nIDEvent, // 定时器ID,多个定时器时,可以通过该ID判断是哪个定时器UINT nElapse, // 时间间隔,单位为毫秒TIMERPROC lpTimerFunc // 回调函数);

下断运行,发现每当鼠标点击界面的时候,就会触发这个函数,发生中断,但是当恢复运行的时候,秒数依然在增加,所以这个函数并不是记录时间的关键

看看附近代码,发现了一处关键点

01003830 > :[0x100579C]; ??可疑点

对0x100579c的地方下内存写入断点,重新运行,当界面出现时,点击鼠标,程序断下,再次运行,发现程序再次断下

再次运行,程序再次断下,发现0x100579c地方变成2,,那么可以看见,这个地方就是记录程序的运行时间。 直接nop点这段代码保存,就去掉时间限制了

其实破解的方法还有很多。对于内存变化,可以用CE(Cheat Engine )来扫描内存中出现变化 的地方

ce附加扫雷进程

0的时候扫描一次

5的时候扫描一次

30的时候扫描一次

确定地址为0x100579c,和上面od找到的地址一样,同样的od载入,转到对应代码nop掉就行了。

最近实在太忙,所以很早之前欠下的文章慢慢补齐来。接下来差不多准备写一个一键扫雷的外挂了,敬请期待n(≧▽≦)n

阳光总在风雨后。只有坚强的忍耐顽强的奋斗,

【破解】扫雷去除时间限制

相关文章:

你感兴趣的文章:

标签云: