吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 12184|回复: 15
收起左侧

[原创] DNF双开工具无需简单百宝箱运行

  [复制链接]
cat73 发表于 2014-3-27 22:22
本帖最后由 cat73 于 2014-3-27 22:54 编辑

初次写破解过程 不会排版 敬请谅解喵 麻麻说卖萌无罪喵~~

最初想先查导入表看看有啥明显的函数如FindWindow这类
结果一看一堆MFC42.#****这种函数
由于之前没有这类东西的调试经验(俺还是新手的喵- -)
然后本来很简单的事浪费了好多时间

最开始想用OD搞进去之后找哪儿有跳转指令的
结果发现开始的结构很简单 都是些无关紧要的跳转
后来就想 开着简单百宝箱看看是哪个call里头创建的窗口

00406AEA  |.  FF15 B0F04100 call dword ptr ds:[<&KERNEL32.GetModuleH>; \GetModuleHandleA
00406AF0  |.  50            push eax
00406AF1  |.  E8 D0600100   call DNFMulti.0041CBC6
00406AF6  |.  8945 98       mov [local.26],eax
00406AF9  |.  50            push eax                                 ; /status
00406AFA  |.  FF15 DCF44100 call dword ptr ds:[<&MSVCRT.exit>]       ; \exit

结果就在00406AF1这的这一句创建的窗口 然后就跟进去了

0041CBC6  /$  FF7424 10     push dword ptr ss:[esp+0x10]
0041CBCA  |.  FF7424 10     push dword ptr ss:[esp+0x10]
0041CBCE  |.  FF7424 10     push dword ptr ss:[esp+0x10]
0041CBD2  |.  FF7424 10     push dword ptr ss:[esp+0x10]
0041CBD6  |.  E8 11020000   call <jmp.&MFC42.#1576>
0041CBDB  \.  C2 1000       retn 0x10

根据以往的经验 跳出主程序领空的代码就没必要跟了
结果由于这经验一开始浪费了不少时间 后来才知道这货跟易语言一个德行
主程序里就一小段初始化的代码 重要的东东都在别的领空里- -
结果就浪费了不少的时间才找到这- - 好了不说废话了跟进去

因为没开简单百宝箱的时候没创建窗口程序就死了
因此进去之后就先简单的一个个call看是哪个call创建的窗口
然后就找到了下边这地方

71543515    8BCE            mov ecx,esi
71543517    FFD0            call eax
71543519    85C0            test eax,eax

继续跟进去 发现004019A9处会跳过载入过程直接跳到ret前边一点

004019A7   .  84C0          test al,al
004019A9      0F84 65010000 je DNFMulti.00401B14
004019AF   .  E8 5CFDFFFF   call DNFMulti.00401710

nop掉之后发现破解完成了- -
看看时间 已经过去了半个多小时- -
然后reshacker做了点小改动啥的 再用winhex改掉了广告网址
在去掉些无关紧要的文件 就算是完工了

另 反汇编代码中多次出现
00401608  |. /EB 10         jmp XDNFMulti.0040161A
0040160A  |. |56 4D 50 72 6>ascii "VMProtect begin",0
这种代码 看起来这作者也不大懂这种代码的意义
只是觉得加上好像就安全似的 其实这货是加VMP壳的时候用的标签- -
不加壳的话等于没有- -

总结 虽然这次走了不少弯路 不过这都是宝贵的经验
下次绝对不会再因为这种事走弯路啦~~

后续:这货检测简单百宝箱是否存在的办法
0040161D  |.  50            push eax                                 ; /Title = "\xBC

\xF2\xB5\xA5\xB0\xD9\xB1\xA6\xCF\xE4"
0040161E  |.  6A 00         push 0x0                                 ; |Class = 0x0
00401620  |.  FF15 B8F54100 call dword ptr ds:[<&USER32.FindWindowA>>; \FindWindowA
00401626  |.  85C0          test eax,eax
00401628  |.  75 4A         jnz XDNFMulti.00401674
搜寻标题为"简单百宝箱"的窗口 找到则直接跳到返回成功的部分
没找到继续执行下面代码
0040162D  |.  51            push ecx                                 ; /MutexName = "\xBC

\xF2\xB5\xA5\xB0\xD9\xB1\xA6\xCF\xE4"
0040162E  |.  50            push eax                                 ; |Inheritable
0040162F  |.  68 01001F00   push 0x1F0001                            ; |Access = 0x1F0001
00401634  |.  FF15 B8F04100 call dword ptr ds:[<&KERNEL32.OpenMutexA>; \OpenMutexA
0040163A  |.  85C0          test eax,eax
0040163C  |.  75 1F         jnz XDNFMulti.0040165D
尝试打开简单百宝箱创建的Mutex对象 打开成功跳到返回成功的部分
再失败则继续执行 直到返回部分返回失败

总体来说 这货检测简单百宝箱就用了俩函数
FindWindow OpenMutex 相信常用API编程的不会陌生
并且这一段依旧被"VMProtect begin",0这类东东给包起来了
感觉甚是无语

好啦 就说到这啦喵~~

附上自己做的双开工具绿色版供懒人下载
1.7z (583.19 KB, 下载次数: 1075)


发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

头像被屏蔽
qq1192464688 发表于 2014-3-27 22:43
提示: 作者被禁止或删除 内容自动屏蔽
loveLYF 发表于 2014-3-27 22:29
华爱鸾 发表于 2014-3-27 22:25
sugie0708 发表于 2014-3-27 22:45
顶楼主,谢谢分享!!!
SimonChan 发表于 2017-1-15 17:39
去投诉举报区检举领赏
wp376784919 发表于 2014-4-7 10:23
谢谢楼主无私分享
小健卖萌 发表于 2014-6-12 20:01
噢耶 爽,谢谢你的分享
djqlxy126 发表于 2014-10-30 01:02
多谢分享!!!!!!!!!!!!!!
yhmcat 发表于 2016-9-30 10:45
待我来测试一下
头像被屏蔽
fanuy 发表于 2016-10-1 13:16 来自手机
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 08:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表