首页
社区
课程
招聘
[旧帖] [原创]神州数码的简单调试 0.00雪花
发表于: 2012-10-30 11:04 1984

[旧帖] [原创]神州数码的简单调试 0.00雪花

2012-10-30 11:04
1984
【文章标题】: 神州数码的简单调试
【文章作者】: 阿呆
【软件名称】: 神州数码客户端 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:[ebp+0xC]
76BFD1DB    FF75 08         push dword ptr ss:[ebp+0x8]
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:[ecx]
00418DD0  |> |8B06          /mov eax,dword ptr ds:[esi]              ;  DigitalC.0041AD80
00418DD2  |. |85C0          |test eax,eax
00418DD4  |. |74 0D         |je short DigitalC.00418DE3
00418DD6  |. |8B4E 08       |mov ecx,dword ptr ds:[esi+0x8]
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:[esi+0x4]
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”
找到这么一行:004098ED  push 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:[esp+0x14]

来到004098ED后,往上拉一下,把004098E8的 jnz 改为jmp,这样就能够输入特殊字符了。运行时在账号之间加入“\”,(比如帐号是123456,那么输入帐号12345\6)就可以不被断网了,不过断网后就无法重新连接了。

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

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 73
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
LZ加油~~你其实很棒滴
2012-10-30 12:12
0
雪    币: 220
活跃值: (117)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
最后的逻辑加反斜杠没看明白...
2012-10-30 13:18
0
雪    币: 45
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这是个服务器的bug
2012-10-30 14:34
0
雪    币: 45
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这是服务器的BUG,现在我们学校修复了
2012-10-30 14:35
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我也想说一句  其实你很棒的
2012-10-30 20:24
0
游客
登录 | 注册 方可回帖
返回
//