ps520 发表于 2010-10-4 23:37

加速啦!加速器V1.3分析报告[LCG]

Luck的博客:http://luck.syser.org/
原帖地址:http://luck.syser.org/post-5.html
------------------------------------------------
OD加载后搜索字符串,程序比较干净,没多大功夫找到几处check.
00410460   /7E 11         jle   short 00410473
00410462   |68 600A5600   push    00560A60                         ;       加速啦!友好提示\n\n免费用户不能选择vip 专用服务\n\n器组!欢迎您充值成为我们的付\n\n费vip用户,享受尊贵的vip服务\n\n
00410467   |8BCB            mov   ecx, ebx
00410469   |E8 8245FFFF   call    004049F0
0041046E   |E9 500C0000   jmp   004110C3
00410473   \8D4D 50         lea   ecx, dword ptr
00410476    FF15 78885500   call    dword ptr [<&MFC80.#310>]      ; MFC80.#310
0041047C    8D4D 5C         lea   ecx, dword ptr
修改:00410460   /EB 11         jmp   short 00410473
VIP线路限制解除。

然而这个软件比较麻烦的是,它是通过列表框来选择的,而在打开“设置”的同时会SendMessage,如果不是
VIP就会设置列表框、按钮属性为禁止使用,所以需要修改2处代码来过VIP限制选择时的限制。

同样是字符串:
抱歉,测试用户暂不能选择vip节点,是否升级到vip?
双击进入代码地址,不要直接改,我们从事件头跟起或许有新发现:
004155E0    6A FF         push    -1
004155E2    68 6CE15300   push    0053E16C
004155E7    64:A1 00000000mov   eax, dword ptr fs:
004155ED    50            push    eax
004155EE    83EC 3C         sub   esp, 3C
004155F1    53            push    ebx
004155F2    55            push    ebp
004155F3    56            push    esi
004155F4    57            push    edi
004155F5    A1 5C485A00   mov   eax, dword ptr
004155FA    33C4            xor   eax, esp
004155FC    50            push    eax
004155FD    8D4424 50       lea   eax, dword ptr
00415601    64:A3 00000000mov   dword ptr fs:, eax
00415607    8BF1            mov   esi, ecx
下断004155E0
切回主界面后点按钮,疯狂地石头啊~~~
00415615   /0F84 A1000000   je      004156BC
0041561B   |8B86 FC000000   mov   eax, dword ptr
00415621   |8B2D CC935500   mov   ebp, dword ptr [<&USER32.SendMes>; USER32.SendMessageA
00415627   |6A 02         push    2
00415629   |6A FF         push    -1
0041562B   |68 0C100000   push    100C
00415630   |50            push    eax
00415631   |FFD5            call    ebp
jmp实现了。看到下面就是SendMessage,想到限制,不觉一惊。它是默认属性为禁止使用,然后按钮
点下时check,如果是正式用户就SendMessage解锁。
继续下走:
00415638   /0F84 39010000   je      00415777
0041563E   |8B96 FC000000   mov   edx, dword ptr
00415644   |8D4C24 1C       lea   ecx, dword ptr
无极神跳,跳了以后打死别想解锁了。这里需要Nop。
修改:00415638   /0F84 39010000   je      00415777         'Nop,不过默认会通过
004156BA   /EB 05         jmp   short 004156C1
004156BC   |BD 01000000   mov   ebp, 1
004156C1   \399E D4000000   cmp   dword ptr , ebx
004156C7    0F85 AA000000   jnz   00415777
004156CD    68 30095600   push    00560930                         ; http://www.jiasu.la/pay.html
004156D2    8D4C24 68       lea   ecx, dword ptr
004156D6    FF15 50835500   call    dword ptr [<&MFC80.#304>]      ; MFC80.#6734
004156DC    6A 04         push    4
无极神跳,不跳就永远不给解锁。
这里跳比较合适,基本这里跳了就除掉VIP选择时的限制了。(不过得双击线路)
004156C7    0F85 AA000000   jnz   00415777'jmp掉
修改:004156C7   /E9 AB000000   jmp   00415777
那个按钮不能点其实解决很简单:用灰色按钮突破,点一下就OK.
既然大家对按钮比较感兴趣,来讲讲怎么过按钮吧:
因为check是否为test,然后加限制。所以搜索test字符串。
第一次停刚才那列表,无视;
第二次来到按钮点下的事件。
004158A0    6A FF         push    -1
004158A2    68 DAE15300   push    0053E1DA
004158A7    64:A1 00000000mov   eax, dword ptr fs:
004158AD    50            push    eax
004158AE    83EC 0C         sub   esp, 0C
004158B1    53            push    ebx
004158B2    56            push    esi
004158B3    57            push    edi
004158B4    A1 5C485A00   mov   eax, dword ptr
004158B9    33C4            xor   eax, esp
004158BB    50            push    eax
004158BC    8D4424 1C       lea   eax, dword ptr
004158C0    64:A3 00000000mov   dword ptr fs:, eax
004158C6    8BF1            mov   esi, ecx
004158C8    6A 04         push    4
004158CA    8D4424 1C       lea   eax, dword ptr
004158CE    8DBE D8000000   lea   edi, dword ptr
004158D4    33DB            xor   ebx, ebx
004158D6    50            push    eax
004158D7    8BCF            mov   ecx, edi
004158D9    895C24 1C       mov   dword ptr , ebx
004158DD    FF15 3C845500   call    dword ptr [<&MFC80.#3997>]       ; MFC80.#3997
004158E3    68 CC015600   push    005601CC                         ; test
004158E8    8BC8            mov   ecx, eax
004158EA    895C24 28       mov   dword ptr , ebx
004158EE    C74424 18 01000>mov   dword ptr , 1
004158F6    FF15 78835500   call    dword ptr [<&MFC80.#1482>]       ; MFC80.#1482
004158FC    85C0            test    eax, eax
004158FE    75 12         jnz   short 00415912
00415900    8BCF            mov   ecx, edi
00415902    FF15 AC865500   call    dword ptr [<&MFC80.#2902>]       ; MFC80.#2902
00415908    83F8 04         cmp   eax, 4
0041590B    C64424 13 01    mov   byte ptr , 1
00415910    74 04         je      short 00415916
00415912    885C24 13       mov   byte ptr , bl
00415916    8D4C24 18       lea   ecx, dword ptr
0041591A    C74424 24 FFFFF>mov   dword ptr , -1
00415922    FF15 B8865500   call    dword ptr [<&MFC80.#578>]      ; MFC80.#578
00415928    385C24 13       cmp   byte ptr , bl
0041592C    8BCE            mov   ecx, esi
0041592E    74 0F         je      short 0041593F
00415930    889E D0000000   mov   byte ptr , bl
00415936    899E D4000000   mov   dword ptr , ebx
0041593C    53            push    ebx
0041593D    EB 13         jmp   short 00415952
0041593F    C686 D0000000 0>mov   byte ptr , 1
00415946    C786 D4000000 0>mov   dword ptr , 1
00415950    6A 01         push    1
00415952    6A 01         push    1
00415954    E8 C9260000   call    <jmp.&MFC80.#2657>
00415959    8BC8            mov   ecx, eax
0041595B    E8 882D0000   call    <jmp.&MFC80.#2164>
00415960    6A 01         push    1
00415962    8BCE            mov   ecx, esi
00415964    E8 87F7FFFF   call    004150F0
00415969    8B4C24 1C       mov   ecx, dword ptr
0041596D    64:890D 0000000>mov   dword ptr fs:, ecx
00415974    59            pop   ecx
00415975    5F            pop   edi
00415976    5E            pop   esi
00415977    5B            pop   ebx
00415978    83C4 18         add   esp, 18
0041597B    C3            retn

004158A0    6A FF         push    -1 是按钮入口事件,直接F2
切回主界面,点设置。再点VIP线路。
就会停下来。接下来的事就是跑呗~
F8进行曲……
004158E3    68 CC015600   push    005601CC                         ; test
004158E8    8BC8            mov   ecx, eax
004158EA    895C24 28       mov   dword ptr , ebx
004158EE    C74424 18 01000>mov   dword ptr , 1
004158F6    FF15 78835500   call    dword ptr [<&MFC80.#1482>]       ; MFC80.#1482
004158FC    85C0            test    eax, eax
004158FE    75 12         jnz   short 00415912
00415900    8BCF            mov   ecx, edi
00415902    FF15 AC865500   call    dword ptr [<&MFC80.#2902>]       ; MFC80.#2902
是否为test,是的话就不跳。
所以004158FE   /75 12         jnz   short 00415912改JMP即可~
修改:004158FE   /EB 12         jmp   short 00415912

不过相比之下我喜欢从列表框直接双击,更快。呵呵~
接下来就是破解三天试用了(根据破解思想:最小成本最大利益,破解3天试用就和VIP没区别了)
这里我们可以分为逆向算法和硬Patch。
算法没什么技术含量,详细请参考之前网际速递的算法分析文章。
主要check就俩文件:
winsysad.dll、express32.dll
生成目录一般一个是在Windows下一个是在system32下
(所以我说开个360外加按钮突破就可以秒了这个VIP,真是悲剧。ps:按钮因为默认test灰色,所以连check VIP都没。)
winsysad.dll存事件,express32.dll似有还无。设置express32.dll的文件修改时间来做的暗桩。
方法就是删掉这俩文件,以后就特别干净了。
下面介绍硬Patch(这些是总结网际速递的经验,所以可以直接运用。ps,这个软件框架真像网际速递):
搜索“期限已”3个字,找到3个限制提示。
管他的,进入代码后一顿上翻:
0041065B   /0F87 32010000   ja      00410793
00410661   |72 09         jb      short 0041066C
00410663   |83FF 01         cmp   edi, 1
00410666   |0F83 27010000   jnb   00410793
0041066C   |837D 58 00      cmp   dword ptr , 0
00410670   |77 47         ja      short 004106B9
00410672   |72 06         jb      short 0041067A
00410674   |837D 54 01      cmp   dword ptr , 1
00410678   |73 3F         jnb   short 004106B9
这里是个循环,所以不要乱来。
你可以看看哪个是飞向三天试用期满的:
00410666   /0F83 27010000   jnb   00410793

0041088D   /0F8D 89070000   jge   0041101C
00410893   |8D4D 30         lea   ecx, dword ptr
00410896   |FF15 B0865500   call    dword ptr [<&MFC80.#876>]      ; MFC80.#3397
0041089C   |50            push    eax
0041089D   |FFD6            call    esi
0041089F   |83C4 04         add   esp, 4
004108A2   |83F8 04         cmp   eax, 4
004108A5   |0F8D 71070000   jge   0041101C

00410B54   /0F8D C6010000   jge   00410D20
00410B5A   |85F6            test    esi, esi
00410B5C   |0F8C BE010000   jl      00410D20
00410B62   |83FF 03         cmp   edi, 3
00410B65   |0F8D B5010000   jge   00410D20
00410B6B   |85FF            test    edi, edi
00410B6D   |0F8C AD010000   jl      00410D20

这是一个群组,最好过期的时候跟下,因为实在太多了。我只能暂时通过静态分析提供这些。
该Nop的Nop,该Jmp的JMP。手工就是了。
总结一下这个软件:
好的地方是,SendMessage解锁,这个的确可能麻痹一部分人。
坏的地方是,字符串无视SendMessage解锁,直接找到关键跳。
如果你学习了一门编程语言你就会猜到作者想干什么,然后可以很快找到法门。
OK,逆向分析报告,可以睡觉了~
                                                                                    By ps520[LCG

ps520 发表于 2010-10-4 23:40

发补丁不地道,发个分析文章出来玩玩。
最开始发的时候只管破解,没管其他的。
今晚有空详细分析了这个软件的限制功能。

我个人觉得最要命的是:
在选择VIP线路时,有2个校验。
按钮灰色是一个,这个的好处是按钮如果激活就没校验了
双击列表框是一个,上面的SendMessageA是关键,合适的Patch位置也比较重要。
补丁Patch的位置偏后,所以还补了行代码。
分析文Patch地址合适,所以只Patch那一行就OK

qq314024716 发表于 2010-10-4 23:41

请问楼主,你的这些数据和代码是怎样打开的呀

30878196 发表于 2010-10-4 23:47

回帖是美德

qq260893875 发表于 2010-10-4 23:48

看不明,但努力学习!

blarm 发表于 2010-10-4 23:54

这么多 这么长 看完都需要耐心啊 ...

sanshao27 发表于 2010-10-4 23:59

好东西,mark!!

破解小乖 发表于 2010-10-5 00:11

谢谢分享了。。。

ps520 发表于 2010-10-5 11:52

请问楼主,你的这些数据和代码是怎样打开的呀
qq314024716 发表于 2010-10-4 23:41 http://www.52pojie.cn/images/common/back.gif


   OD分析的、怎么了?

2666fff 发表于 2010-10-5 15:25

你的博客出汗了。
页: [1] 2 3
查看完整版本: 加速啦!加速器V1.3分析报告[LCG]