首页
论坛
课程
招聘
[原创]EXCEL服务器2006企业版V6.8的加密思路研究
2007-5-17 15:24 15212

[原创]EXCEL服务器2006企业版V6.8的加密思路研究

2007-5-17 15:24
15212
EXCEL服务器2006企业版V6.8的加密与解密思路研究

【文章标题】: EXCEL服务器6.8的加密与解密思路研究
【文章作者】: newsoft88
【作者邮箱】: newsoft88@126.com
【软件名称】: 勤哲EXCEL服务器
【软件大小】: 99M
【下载地址】: 自己搜索下载
【加壳方式】: 无
【保护方式】: KEY文件
【编写语言】: VC
【使用工具】: OD IDA
【操作平台】: 98 XP
【软件介绍】: Excel服务器2006(企业版)电子表格软件
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  软件简单介绍:
  
  Excel服务器2006(企业版)能够将电子表格软件MS Excel和大型数据库管理系统MS SQL Server 2000集成为一个网络数据业务协同工作平台。在这个平台上,用户可以充分发挥Excel的应用水平,通过图、表、表间公式,实现管理意图,轻松 、快速构建能够适应变化的ERP、OA、CRM、SCM等管理信息系统! 由于可以集成其它软件产品的数据库及具有工作流功能,因此又是一个非常实用的企业应用集成工具EAI。
  
  过程:
  
  有个朋友找我,说看看勤哲EXCEL服务器,我便从网上下了个6。8企业版,初步一看,认为还是以为简单,以前我记得有人解过5.6的版本,但具说是解的不全,过不了试用期! 而且原程序没有加壳,且有一个月的试用期!
  
  还是老规矩,用OD载入EXCEL,运行后,直接启动登录界面,
  300019C4 E> $  6A 74      push 74
  300019C6    .  68 101B003>push EXCEL.30001B10
  300019CB    .  E8 4C01000>call EXCEL.30001B1C
  300019D0    .  33DB       xor ebx,ebx
  300019D2    .  895D E0    mov dword ptr ss:[ebp-20],ebx
  300019D5    .  53         push ebx                              ; /pModule => NULL
  300019D6    .  8B3D D0140>mov edi,dword ptr ds:[<&KERNEL32.GetM>; |kernel32.GetModuleHandleA
  300019DC    .  FFD7       call edi                              ; \GetModuleHandleA
  300019DE    .  66:8138 4D>cmp word ptr ds:[eax],5A4D
  
  此时,设置OD事件中断为:当DLL载入时,我们点登录按扭
  
  当中断在ESSA。DLL 时,我们进入DLL中,
  DLL中应该有以下几个加密点:
  1)试用版的NAG提示:即30天
  2)5 个客户端的限制
  3)文件校验;即当你修改了一个或几个文件时,他会让你再也写不了服务器了!
  
  对上述几点的跟踪:首先可以下断:MessageBoxA ,跟到NAG的提示与客户端的限制!
  NAG提示的关键代码:本人未做详细记录,有兴趣自己调试!
  02C5E5DA    .  51         push ecx
  02C5E5DB    .  8942 08    mov dword ptr ds:[edx+8],eax
  02C5E5DE    .  8B45 8C    mov eax,dword ptr ss:[ebp-74]
  02C5E5E1    .  8942 0C    mov dword ptr ds:[edx+C],eax
  02C5E5E4    .  8D55 A0    lea edx,dword ptr ss:[ebp-60]
  02C5E5E7    .  52         push edx
  02C5E5E8    .  FFD7       call edi                              ;  <&MSVBVM60.__vbaVarIndexLoad>
  02C5E5EA    .  8B1D 2413B>mov ebx,dword ptr ds:[<&MSVBVM60.__vb>;  MSVBVM60.__vbaI2ErrVar
  02C5E5F0    .  83C4 1C    add esp,1C
  02C5E5F3    .  50         push eax
  02C5E5F4    .  FFD3       call ebx                              ;  <&MSVBVM60.__vbaI2ErrVar>
  以下是试用期的检查:
  
  02C2B719    .  8945 B0    mov dword ptr ss:[ebp-50],eax
  02C2B71C    .  74 56      je short ESSa.02C2B774
  02C2B71E    .  8B85 E4FEF>mov eax,dword ptr ss:[ebp-11C]
  02C2B724    .  8B95 D8FEF>mov edx,dword ptr ss:[ebp-128]
  02C2B72A    .  8975 BC    mov dword ptr ss:[ebp-44],esi
  02C2B72D    .  8DB8 9C11C>lea edi,dword ptr ds:[eax+2C6119C]
  02C2B733    .  C702 67040>mov dword ptr ds:[edx],80040467
  02C2B739    .  3937       cmp dword ptr ds:[edi],esi
  02C2B73B    .  75 0C      jnz short ESSa.02C2B749
  02C2B73D    .  57         push edi
  02C2B73E    .  68 2CA6BE0>push ESSa.02BEA62C
  02C2B743    .  FF15 8012B>call dword ptr ds:[<&MSVBVM60.__vbaNe>;  MSVBVM60.__vbaNew2
  02C2B749    >  8B3F       mov edi,dword ptr ds:[edi]
  
  文件校验用的是CRC,可以手工改过跳转,也可以修正CRC,任选一种!
  
  以做完后,存为一个全新的essa.dll!
  
  此时我启动都感觉正常了,以为大功告成了! 可当用旧版数据,或数据量达到30天的后的时候,你发现,EXCEL服务器停止工作了!
  此时才知道,远没有这么简单,EXCEL服务器,作为一种服务程序的提供,另外一重加密就是在服务提供对SQL数据进行检查定期限!
  
  我们首先打开
  ESSvcMgr.exe ,点启动服务后,很快就停止了! 用OD载入
  
  004017C4 E> $  68 9829400>push ESSvcMgr.00402998
  004017C9    .  E8 EEFFFFF>call <jmp.&MSVBVM60.#100>
  004017CE    .  0000       add byte ptr ds:[eax],al
  004017D0    .  0000       add byte ptr ds:[eax],al
  004017D2    .  0000       add byte ptr ds:[eax],al
  004017D4    .  3000       xor byte ptr ds:[eax],al
  004017D6    .  0000       add byte ptr ds:[eax],al
  004017D8    .  40         inc eax
  以下为启动标志
  004053B4    .  66:85DB    test bx,bx
  004053B7       74 07      je short ESSvcMgr.004053C0
  004053B9    .  C745 E4 FF>mov dword ptr ss:[ebp-1C],-1
  004053C0    >  8B1D 48104>mov ebx,dword ptr ds:[<&MSVBVM60.__vb>;  MSVBVM60.__vbaHresultCheckObj
  004053C6    >  8B45 E4    mov eax,dword ptr ss:[ebp-1C]
  
  00406C40    .  33FF       xor edi,edi
  00406C42    .  68 9439400>push ESSvcMgr.00403994                ;  UNICODE "ESService"
  00406C47    .  897D D8    mov dword ptr ss:[ebp-28],edi
  00406C4A    .  E8 E102000>call ESSvcMgr.00406F30
  00406C4F    .  66:3B46 34 cmp ax,word ptr ds:[esi+34]
  00406C53       74 31      je short ESSvcMgr.00406C86
  00406C55    .  8B16       mov edx,dword ptr ds:[esi]
  00406C57    .  8D4D D8    lea ecx,dword ptr ss:[ebp-28]
  00406C5A    .  51         push ecx
  00406C5B    .  50         push eax
  00406C5C    .  56         push esi
  00406C5D    .  66:8946 34 mov word ptr ds:[esi+34],ax
  
  本以为在这改后,可以使用的,但实际上搞错了,这个程序只是服务的HOOK的报告,就是侦察服务的运行状态,而非真正的服务控制!
  而我们看出,真正的是ESService服务!对ESService用IDA反汇编后,你可以看到以下函数!
  名称位于 ESServic, 条目 47
   地址=0040600C
   区段=.rdata
   类型=输入
   名称=ADVAPI32.SetServiceStatus
  名称位于 ESServic, 条目 51
   地址=00406008
   区段=.rdata
   类型=输入    (已知)
   名称=ADVAPI32.StartServiceCtrlDispatcherA
  名称位于 ESServic, 条目 41
   地址=0040601C
   区段=.rdata
   类型=输入
   名称=ADVAPI32.OpenServiceA
  这些才是服务真正的启动点!
  服务控制的原型如下:
  #include "ntservice.h"
  
  class CMyService : public CNTService
  {
  public:
      CMyService();
      virtual BOOL OnInit();
      virtual void Run();
      virtual BOOL OnUserControl(DWORD dwOpcode);
  
      void SaveStatus();
  
      // Control parameters
      int m_iStartParam;
      int m_iIncParam;
  
      // Current state
      int m_iState;
  };
  
  而对于 一个服务的调试,我们常常和附加的方式进行!这点在MSDN中也有描述,
  我们对他IDA反汇编后,可以找到相关函数,加密的方式主要是:时间的控制!修改后,再启动。便正常工作了!
  
  本文只对加密方法做个介绍,不汲及软件的破解,欢迎你来和我交流!
  
--------------------------------------------------------------------------------
【经验总结】
  服务的加密应该还是有点特色的,多种方法混合使用,如文件校验、数据时间校验!都会给解密带来难度!由于本人文字水
  平有限,写的不好,请不要向我扔石头!
  
--------------------------------------------------------------------------------
【版权声明】: 谢谢观看, 转载请注明作者并保持文章的完整, 谢谢!http://newsoft88.ys168.com

【看雪培训】《Adroid高级研修班》2022年夏季班招生中!

收藏
点赞0
打赏
分享
最新回复 (15)
雪    币: 221
活跃值: 活跃值 (45)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
tzl 活跃值 10 2007-5-17 15:58
2
0
沙发,支持好文!
雪    币: 58
活跃值: 活跃值 (17)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
hnhuqiong 活跃值 10 2007-5-17 17:11
3
0
好文,对服务的调试要是论述的更加详细就完美了,顶
雪    币: 1876
活跃值: 活跃值 (20)
能力值: (RANK:550 )
在线值:
发帖
回帖
粉丝
hawking 活跃值 12 2007-5-17 18:24
4
0
学习一下。
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
haduke 活跃值 2007-5-18 08:55
5
0
没有用过,学习一下了!
雪    币: 457
活跃值: 活跃值 (142)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
Tee8088 活跃值 2 2007-5-18 16:20
6
0
数据时间校验 这个我倒没看出来,其它CRC,NAG窗口,5用户限制我全弄掉了。 去NAG窗口就让标志位为1就KO了,5用户限制是放在数据窗口里,在屁股上开了空间加了代码弄成了自己定义了,在比较处直接把CX改成小于5的也行,CRC我是参考了 论坛里的一篇常用文件校验去除的精华的VB部份搞掉了。。。
雪    币: 208
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wqrsksk 活跃值 2007-5-18 17:22
7
0
嗯,蛮好的分析
雪    币: 205
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
sjj 活跃值 2007-6-29 22:08
8
0
Tee8080你好,你怎么破解的excel服务器,能给我发一份吗?我也想学习学习,破解过程和破解文件(最好能详细点,谢谢,发我邮箱sjj5227@126.com)
雪    币: 154
活跃值: 活跃值 (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lirhy 活跃值 2007-7-2 16:57
9
0
Tee8080你好,你怎么破解的excel服务器,能给我发一份吗?我也想学习学习,破解过程和破解文件(最好能详细点,谢谢,发我邮箱lirhy@163.com)
雪    币: 45
活跃值: 活跃值 (15)
能力值: ( LV2,RANK:150 )
在线值:
发帖
回帖
粉丝
nnhy 活跃值 3 2007-7-9 09:32
10
0
呵呵,如果像楼主这样对付这个软件(暴力破解),还不知道有多少功能不能使用呢。

我觉得,分析算法,写出注册机才是最好的。

我就见过有人写出了Excel服务器2007的注册机,还有注册录像呢
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
破解勤哲 活跃值 2007-9-14 14:47
11
0
10楼!
2007的注册机根本不存在,所谓的注册机也就是网络骗子骗钱的.不然你拿出来秀秀!
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
dragoner 活跃值 2007-9-14 16:22
12
0
你要看注册机?虽然复杂,做注册机还是没有太大难度的,不过这个东西不是太感兴趣随便分析写了一个给朋友去玩玩了
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
虾米 活跃值 1 2007-9-15 16:54
13
0
真希望能有高手能分享个注册机!
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yanglizhi 活跃值 2007-9-29 12:59
14
0
沙发,支持好文!
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
aibenku 活跃值 2008-2-22 16:43
15
0
2007注册机已有
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
将军一号 活跃值 2008-3-26 23:42
16
0
注册机的确已经有了,我已使用,正常
可以到bbs.winzheng.com上找找7.1版的
游客
登录 | 注册 方可回帖
返回