rnf147852 发表于 2017-10-23 12:02:18

任鸟飞谈逆向----《梦三国2》全图


《梦三国2》是5V5对战类游戏,和LOL游戏模式差不多。这种游戏敌人的位置,地图信息是至关重要的,市场上有这个游戏的全图 ,这对游戏的平衡性造成了极大的破坏,我们今天来分析一下其全图效果是怎么实现的。 首先地图上的可视与不可视是被分成极小的点的,所以我们随便选择一个小的区域    用人物的走动来改变他的可视与不可视状态。http://gslab.qq.com/data/attachment/portal/201710/18/102602qjb69mjj3hmw3xbh.png可视搜索字节1不可视搜索字节0(当然是尝试出来的,避免未知初始值扫描过慢)如果有什么不懂 可以关注 微信公众号:任鸟飞逆向交流学习会得到一些相邻的内存地址   为什么这么多相邻的地址呢?原因我们刚才已经说了,地图是由很多个点组成的,我们来回走动,变动可视状态看上去只有一小块区域,实际上可能是几千个点http://gslab.qq.com/data/attachment/portal/201710/18/102602itnk0zxntg8c0clr.png在任意相邻的内存地址上下访问断 得到下面代码http://gslab.qq.com/data/attachment/portal/201710/18/102603tl94amy84aqnm96l.png100C4291 - 80 3C 0200 - cmp byte ptr ,00============视野判断0104A650 - 8A 02- mov al,0104A658 - 88 02- mov ,al0104A5C0 - 8A 02- mov al,0104A5C8 - 88 02- mov ,al 第一条很明显是一个判断 100C426B    8945 CC         mov   dword ptr , eax100C426E    DC0D 40073210   fmul    qword ptr 100C4274    D96D CC         fldcw   word ptr 100C4277    DB5D CC         fistp   dword ptr 100C427A    8A45 CC         mov   al, byte ptr 100C427D    D96D CA         fldcw   word ptr 100C4280    8845 CB         mov   byte ptr , al100C4283    8B86 A8020000   mov   eax, dword ptr 100C4289    85FF            test    edi, edi100C428B    7E 38         jle   short 100C42C5100C428D    8BD3            mov   edx, ebx100C428F    2BD0            sub   edx, eax100C4291    803C02 00       cmp   byte ptr , 0            ; 视野判断100C4295    75 06         jnz   short 100C429D                   ; 如果内存地址里不等于0跳转 也就是可视跳转 那么我们改成JMP 默认全部可视100C4297    0FB64D CB       movzx   ecx, byte ptr 100C429B    EB 02         jmp   short 100C429F100C429D    33C9            xor   ecx, ecx100C429F    8808            mov   byte ptr , cl100C42A1    40            inc   eax100C42A2    4F            dec   edi100C42A3^ 75 EC         jnz   short 100C4291100C42A5    FF15 1CE43110   call    dword ptr [<&WINMM.timeGetTime>] ; WINMM.timeGetTime100C42AB    8946 70         mov   dword ptr , eax100C42AE    C646 74 01      mov   byte ptr , 1100C42B2    EB 39         jmp   short 100C42ED100C42B4    8B8E A8020000   mov   ecx, dword ptr 100C42BA    57            push    edi100C42BB    53            push    ebx100C42BC    51            push    ecx100C42BD    E8 02BD2100   call    100C42C2    83C4 0C         add   esp, 0C分析可得为0的时候不跳转,我们知道为0是不可视那么我们修改掉他的判断为无条件跳转这样去掉了 第一层迷雾http://gslab.qq.com/data/attachment/portal/201710/18/102603vm62c8bhawgmkz9m.png如上图:已经达到了全图的效果但是这只是第一层迷雾,敌人如果在视野外我们也是看不到的 那么我们通过 100C4291    803C02 00       cmp   byte ptr , 0 这条代码去追踪点阵的来源这个偏移表达可以追到CE搜索ECX 的值可以得到表达式[+704+10]我们在 地图数组的地址上下断 得到代码:10076A13 - 83 7E 10 00 - cmp dword ptr ,0010076A67 - 8B 46 10- mov eax,100768ED - 83 7F 10 00 - cmp dword ptr ,00       大地图显示1007696F - 8B 47 10- mov eax, 100768E0    55            push    ebp100768E1    8BEC            mov   ebp, esp100768E3    51            push    ecx100768E4    57            push    edi100768E5    8BF9            mov   edi, ecx100768E7    807F 4C 00      cmp   byte ptr , 0100768EB    75 13         jnz   short 10076900100768ED    837F 10 00      cmp   dword ptr , 0   判断是否有地图数据100768F1    75 16         jnz   short 10076909                   ; NOP掉大地图可以显示应该是没有对地图上的某些数据进行隐藏了100768F3    8B45 10         mov   eax, dword ptr 100768F6    85C0            test    eax, eax100768F8    74 06         je      short 10076900100768FA    C700 00000000   mov   dword ptr , 010076900    33C0            xor   eax, eax10076902    5F            pop   edi10076903    8BE5            mov   esp, ebp10076905    5D            pop   ebp10076906    C2 0C00         retn    0C10076909    53            push    ebx1007690A    56            push    esi1007690B    E8 70AEFFFF   call    10071780 我们整理下思路实际上 我们在找地图可视数组   找到以后对他的可试进行访问得到代码对其不可视代码进行屏蔽实现了 地图全亮如果不行我们可以返回上一层屏蔽CALL 看是否可以实现全图等功能但是看不到敌对英雄   那么这个地图数组或许只是地图相关   而和人物对象无关我们又到 是否有地图数据的判断附近去屏蔽掉有地图数据时候的处理    敌对英雄出现了 http://gslab.qq.com/data/attachment/portal/201710/18/102651fr95397o5n4ujr55.png视野外一样可以看到地方英雄了

A1259346 发表于 2017-10-23 19:13:50

感谢分享,好人一生平安!

rnf147852 发表于 2017-10-24 12:36:16

有驱动保护啊

rnf147852 发表于 2017-11-1 15:01:49

梦三国是LOL的前身

rnf147852 发表于 2017-11-6 14:56:47

今天分享2017

rnf147852 发表于 2017-11-9 13:18:39

近期发2017分享第2弹

rnf147852 发表于 2017-11-13 19:01:11

今天分享 2017 第二弹

rnf147852 发表于 2017-11-16 12:57:34

2017这几天分享了不少

944695425 发表于 2017-11-16 14:55:42

这个游戏现在不玩了

rnf147852 发表于 2017-11-20 13:00:24

恩有了LOL 这游戏没那么火了
页: [1] 2
查看完整版本: 任鸟飞谈逆向----《梦三国2》全图