Adai 发表于 2012-10-30 10:57

神州数码的简单调试

本帖最后由 Adai 于 2012-10-30 11:19 编辑

【文章标题】: 神州数码的简单调试
【文章作者】: 阿呆
【软件名称】: 神州数码客户端 3.5版本
【软件大小】: 5M
【下载地址】: 自备
【加壳方式】: 未知
【使用工具】: OD,PEID
【操作平台】: win7
【软件介绍】: 一般用于校园网和小区联网客户端
【作者声明】: 并非感兴趣,只因被限制。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
    3.5.11.XXX 版本是我校目前最新的版本,可以说较完美,我之所以学习破解,也是因为这款软件给我带来的束缚实在太多,比如说晚上11点断网,限制使用代理软件(如:ccproxy)等等。
    那么这次我和大家交流如何解除使用代理软件的限制,如果你们学校的服务器没有完善,你还有可能尝试不断网。
    我写这篇文章,意味着我要放弃我的破解之路,因为这条路对我来说,太长,太坎坷,我不是信息系的学生,对汇编也没有基础,琢磨一个星期都无法解决的问题,只需大侠一句话就能解决,但是,没有人是有义务来帮我的,大家都有自己的事情要做,所以我无法坚持下去,只好选择放弃了。
    好了,进入主题,用PEID查壳,显示“Microsoft Visual C++ 8.0 *”,改核心扫描“ASPack 2.x (without poly) -> Alexey Solodovnikov”。无需脱壳,可直接调试。
    先解除禁用代理软件:
    在浏览器进入ccproxy的官网,或者有这个字样的网站,客户端过一会就会断开连接(每个单位不同,有的可能没有此限制)。我们开始第一步吧。
    OD加载神州数码客户端,F9启动并登录,下断点:“bp EnumWindows”(这很重要)。
下断后,由于软件会每隔一段时间进行检测,一会就来到:
76BFD1CF >8BFF            mov edi,edi                              ; user32.PostMessageA
76BFD1D1    55            push ebp
76BFD1D2    8BEC            mov ebp,esp
76BFD1D4    33C0            xor eax,eax                              ; DigitalC.0041AD80
76BFD1D6    50            push eax                                 ; DigitalC.0041AD80
76BFD1D7    50            push eax                                 ; DigitalC.0041AD80
76BFD1D8    FF75 0C         push dword ptr ss:
76BFD1DB    FF75 08         push dword ptr ss:
76BFD1DE    50            push eax                                 ; DigitalC.0041AD80
76BFD1DF    50            push eax                                 ; DigitalC.0041AD80
76BFD1E0    E8 31C2FFFF   call user32.76BF9416
76BFD1E5    5D            pop ebp                                  ; DigitalC.0041AD8D
76BFD1E6    C2 0800         retn 0x8
一直F8单步走,走到76BFD1E0处就会卡住,此时别慌,按“暂停”就会跳到76BF72B9
76BF72B9    83C4 04         add esp,0x4
76BF72BC    C2 1C00         retn 0x1C
来到76BF72B9后按 F9 来到76BFD1E5
76BFD1E5    5D            pop ebp                                  ; 02C58728
76BFD1E6    C2 0800         retn 0x8
继续F8单步,回到程序领口了!
0041AD8D|.F7D8          neg eax
0041AD8F|.1BC0          sbb eax,eax
0041AD91|.25 C8000000   and eax,0xC8
0041AD96|.05 38FFFFFF   add eax,-0xC8
0041AD9B\.C3            retn
继续F8单步到返回,来到00418DDC。这里就是重要的地方!
00418DC9|. /74 1F         je short DigitalC.00418DEA
00418DCB|. |EB 03         jmp short DigitalC.00418DD0
00418DCD||8D49 00       lea ecx,dword ptr ds:
00418DD0|> |8B06          /mov eax,dword ptr ds:            ;DigitalC.0041AD80
00418DD2|. |85C0          |test eax,eax
00418DD4|. |74 0D         |je short DigitalC.00418DE3
00418DD6|. |8B4E 08       |mov ecx,dword ptr ds:
00418DD9|. |51            |push ecx                              ;user32.76C60718
00418DDA   |FFD0          |call eax
00418DDC|. |83C4 04       |add esp,0x4
00418DDF|. |85C0          |test eax,eax
00418DE1   |75 09         jnz short DigitalC.00418DEC
00418DE3|> |8B76 04       |mov esi,dword ptr ds:
00418DE6|. |85F6          |test esi,esi
00418DE8|.^|75 E6         \jnz short DigitalC.00418DD0
00418DEA|> \33C0          xor eax,eax
00418DEC|>5E            pop esi
00418DED\.C3            retn
往上拉一下,00418DDA是关键!但我们不能nop掉这个call,我试过了,程序会死掉。正确的办法应该是把00418DE1 的jnz 改为 jmp。好了,到此为止客户端自动检测代理就被去掉了。

    第二步,如果你们学校的服务器没有更新,可以尝试此办法不断网,不保证每个学校有效,很可惜我们服务器升级了,后来的破解工作并不顺利,加上我已无破解的动力了,所以没有最新的破解办法。

OD载入客户端,反汇编窗口右键 “中文搜索引擎”--“搜索ASCII”
找到这么一行:004098EDpush DigitalC.0045F9A4用户名不能使用除"_@.(+){=}-"以外的特殊字符
回车健跟踪,来到:004098ED
004098E6|.85C0          test eax,eax                           ;kernel32.BaseThreadInitThunk
004098E8      75 12         jnz short DigitalC.004098FC
004098EA|.53            push ebx
004098EB|.6A 40         push 0x40
004098ED|.68 A4F94500   push DigitalC.0045F9A4                   ;用户名不能使用除"_@.(+){=}-"以外的特殊字符
004098F2      E8 13690200   call DigitalC.0043020A
004098F7|.E9 E3030000   jmp DigitalC.00409CDF
004098FC|>8D4C24 14   lea ecx,dword ptr ss:
来到004098ED后,往上拉一下,把004098E8的 jnz 改为jmp,这样就能够输入特殊字符了。运行时在账号之间加入“\”,(比如帐号是123456,那么输入帐号12345\6)就可以不被断网了,不过断网后就无法重新连接了。

看完上面两步,或许对你有所帮助,学校网管也可以根据此来尽快修复漏洞。此次调试仅为学习,并无恶意,如果侵犯到了公司及学校利益,请及时指出,方便我做出修改,并在此道歉。
--------------------------------------------------------------------------------
【版权声明】: 本文原创于阿呆,给予我指点 的有很多,由于此文的特殊性,原谅我不便在此举出,转载请注明作者并保持文章的完整, 谢谢!

Emil 发表于 2012-10-30 11:43

学习了 感谢楼主无私奉献

俺知道 发表于 2012-10-30 11:45

菜鸟学习一下了,感谢

1354669803 发表于 2012-10-30 12:28

我想知道那个断点是什么意思

Hmily 发表于 2012-11-18 00:55

想当年上学时候到处找学校网络的工具去一台机器绑定的限制,那时候还不会逆向,比你我你还多了,看了下检测那你应该是跳过了第一个检测就不循环了,可以直接在00418DDC断首直接返回,应该就一个都不会检测了,期待你更深入的研究,给同学们带来精彩!我相信他们毕业后都会记得你这位大牛的!{:1_921:}

Adai 发表于 2012-11-19 22:24

Hmily 发表于 2012-11-18 00:55 static/image/common/back.gif
想当年上学时候到处找学校网络的工具去一台机器绑定的限制,那时候还不会逆向,比你我你还多了,看了下检测 ...

老大,如果能获得你的指点,我愿意重新尝试,不介意的话,私信告知我联系方式吧

yyangelyy 发表于 2014-3-16 18:39

我已经调试到这里了但是怎么过DHCP限制 求赐教 我要共享wifi{:1_936:}{:1_936:}{:1_936:}
00407621   .E8 BAC50300   call 00443BE0
00407626   .83C4 0C       add esp,0xC
00407629   .53            push ebx                                 ; /Arg1
0040762A   .8D4C24 18   lea ecx,dword ptr ss:          ; |
0040762E   .881D 2C8F4700 mov byte ptr ds:,bl            ; |
00407634   .E8 57C30000   call 00413990                            ; \DigitalC.00413990
00407639   .C78424 D80300>mov dword ptr ss:,0x1
00407644   .^ E9 E6FEFFFF   jmp 0040752F
00407649   >53            push ebx                                 ; /Arg3
0040764A   .53            push ebx                                 ; |Arg2
0040764B   .68 60904800   push 00489060                            ; |收到了强制下线报文,您被强制下线!
00407650   .E8 1B860200   call 0042FC70                            ; \DigitalC.0042FC70
00407655   .E9 3E020000   jmp 00407898
0040765A   .53            push ebx                                 ; /Arg3
0040765B   .53            push ebx                                 ; |Arg2
0040765C   .68 209F4800   push 00489F20                            ; |您与交换机之间的保活失败,请重新连接!
00407661   .E8 0A860200   call 0042FC70                            ; \DigitalC.0042FC70
00407666   .E9 2D020000   jmp 00407898
0040766B   .53            push ebx                                 ; /Arg3
0040766C   .53            push ebx                                 ; |Arg2
0040766D   .68 40A14800   push 0048A140                            ; |您的网卡已禁用,请启用后重新连接!
00407672   .E8 F9850200   call 0042FC70                            ; \DigitalC.0042FC70
00407677   .E9 1C020000   jmp 00407898
0040767C   .53            push ebx                                 ; /Arg3
0040767D   .53            push ebx                                 ; |Arg2
0040767E   .68 E0934800   push 004893E0                            ; |网卡断开连接,请检查网卡连接状态!
00407683   .E8 E8850200   call 0042FC70                            ; \DigitalC.0042FC70
00407688   .E9 0B020000   jmp 00407898
0040768D   .68 A0A04800   push 0048A0A0                            ;发现BT软件运行,您被强制下线!
00407692   .8BCE          mov ecx,esi
00407694   .E8 37F1FFFF   call 004067D0
00407699   .E9 FA010000   jmp 00407898
0040769E   .53            push ebx                                 ; /Arg3
0040769F   .53            push ebx                                 ; |Arg2
004076A0   .68 C0B24800   push 0048B2C0                            ; |发现使用代理,您被强制下线!
004076A5   .E8 C6850200   call 0042FC70                            ; \DigitalC.0042FC70
004076AA   .E9 E9010000   jmp 00407898
004076AF   .803D 448F4700>cmp byte ptr ds:,0x2
004076B6   .75 21         jnz short 004076D9
004076B8   .8B0D 288F4700 mov ecx,dword ptr ds:
004076BE   .51            push ecx
004076BF   .E8 BC800100   call 0041F780
004076C4   .50            push eax
004076C5   .68 40A74800   push 0048A740                            ;发现网卡MAC地址盗用,盗用者ip [%s] ,您被强制下线!
004076CA   .68 C8000000   push 0xC8
004076CF   .8D9424 140100>lea edx,dword ptr ss:
004076D6   .52            push edx
004076D7   .EB 1E         jmp short 004076F7
004076D9   >A1 288F4700   mov eax,dword ptr ds:
004076DE   .50            push eax
004076DF   .E8 9C800100   call 0041F780
004076E4   .50            push eax
004076E5   .68 009C4800   push 00489C00                            ;发现网卡MAC地址盗用,盗用者ip [%s].
004076EA   .68 C8000000   push 0xC8
004076EF   .8D8C24 140100>lea ecx,dword ptr ss:
004076F6   .51            push ecx
004076F7   >E8 94820000   call 0040F990
004076FC   .83C4 14       add esp,0x14
004076FF   .53            push ebx                                 ; /Arg3
00407700   .53            push ebx                                 ; |Arg2
00407701   .8D9424 0C0100>lea edx,dword ptr ss:         ; |
00407708   .52            push edx                                 ; |Arg1
00407709   .E8 62850200   call 0042FC70                            ; \DigitalC.0042FC70
0040770E   .E9 85010000   jmp 00407898
00407713   .53            push ebx                                 ; /Arg3
00407714   .53            push ebx                                 ; |Arg2
00407715   .68 A0A24800   push 0048A2A0                            ; |发现启用DHCP,您被强制下线!
0040771A   .E8 51850200   call 0042FC70                            ; \DigitalC.0042FC70
0040771F   .E9 74010000   jmp 00407898
00407724   .53            push ebx                                 ; /Arg3
00407725   .53            push ebx                                 ; |Arg2
00407726   .68 40914800   push 00489140                            ; |您的外网被服务器强制下线,可能原因:流量、时长用尽或者被Radius强制下线!
0040772B   .E8 40850200   call 0042FC70                            ; \DigitalC.0042FC70
00407730   .E9 63010000   jmp 00407898
00407735   .B8 288B4700   mov eax,00478B28
0040773A   .8D50 01       lea edx,dword ptr ds:
0040773D   .8D49 00       lea ecx,dword ptr ds:
00407740   >8A08          mov cl,byte ptr ds:
00407742   .83C0 01       add eax,0x1
00407745   .3ACB          cmp cl,bl
00407747   .^ 75 F7         jnz short 00407740

yutao531315 发表于 2014-3-16 20:56

来看看学习下, 学习之路很坎坷.......
页: [1]
查看完整版本: 神州数码的简单调试