Excel服务器2006V6.8企业版的加密解密思路
【文章标题】: EXCEL服务器6.8的加密思路【文章作者】: newsoft88
【作者邮箱】: [email protected]
【作者主页】: http://newsoft88.ys168.com
【作者QQ号】: 84485862
【软件名称】: 勤哲EXCEL服务器
【软件大小】: 99M
【下载地址】: 自己搜索下载
【加壳方式】: 无
【保护方式】: KEY文件
【编写语言】: VC
【使用工具】: OD IDA
【操作平台】: 98 2000XP
【软件介绍】: 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:,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:,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:,eax
02C5E5DE .8B45 8C mov eax,dword ptr ss:
02C5E5E1 .8942 0C mov dword ptr ds:,eax
02C5E5E4 .8D55 A0 lea edx,dword ptr ss:
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:,eax
02C2B71C .74 56 je short ESSa.02C2B774
02C2B71E .8B85 E4FEF>mov eax,dword ptr ss:
02C2B724 .8B95 D8FEF>mov edx,dword ptr ss:
02C2B72A .8975 BC mov dword ptr ss:,esi
02C2B72D .8DB8 9C11C>lea edi,dword ptr ds:
02C2B733 .C702 67040>mov dword ptr ds:,80040467
02C2B739 .3937 cmp dword ptr ds:,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:
文件校验用的是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:,al
004017D0 .0000 add byte ptr ds:,al
004017D2 .0000 add byte ptr ds:,al
004017D4 .3000 xor byte ptr ds:,al
004017D6 .0000 add byte ptr ds:,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:,-1
004053C0 >8B1D 48104>mov ebx,dword ptr ds:[<&MSVBVM60.__vb>;MSVBVM60.__vbaHresultCheckObj
004053C6 >8B45 E4 mov eax,dword ptr ss:
00406C40 .33FF xor edi,edi
00406C42 .68 9439400>push ESSvcMgr.00403994 ;UNICODE "ESService"
00406C47 .897D D8 mov dword ptr ss:,edi
00406C4A .E8 E102000>call ESSvcMgr.00406F30
00406C4F .66:3B46 34 cmp ax,word ptr ds:
00406C53 74 31 je short ESSvcMgr.00406C86
00406C55 .8B16 mov edx,dword ptr ds:
00406C57 .8D4D D8 lea ecx,dword ptr ss:
00406C5A .51 push ecx
00406C5B .50 push eax
00406C5C .56 push esi
00406C5D .66:8946 34 mov word ptr ds:,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反汇编后,可以找到相关函数,加密的方式主要是:时间的控制!修改后,再启动。便正常工作了!
本文只对加密方法做个介绍,不汲及软件的破解,欢迎你来和我交流!
--------------------------------------------------------------------------------
【经验总结】
服务的加密应该还是有点特色的,多种方法混合使用,如文件校验、数据时间校验!都会给解密带来难度!由于本人文字水
平有限,写的不好,请不要向我扔石头!
--------------------------------------------------------------------------------
【版权声明】: 谢谢观看, 转载请注明作者并保持文章的完整, 谢谢!
2007年04月22日 22:15:46 用户可以充分发挥Excel的应用水平,通过图、表、表间公式,实现管理意图,轻松 、快速构建能够适应变化的ERP、OA、CRM、SCM等管理信息系统! 这是个好东西,不错哦 这软件不错
下来试试 已经有注册机了/:L
页:
[1]