• 标 题:NetSentinel-C网络狗破解(金蝶2000XP标准版)-----qdbenben得好东西 (3千字)
  • 作 者:qdcrack
  • 时 间:2002-7-24 19:50:07
  • 链 接:http://bbs.pediy.com

NetSentinel-C网络狗破解(金蝶2000XP标准版)
金蝶财务软件2000XP标准版网络狗破解

软件名:金蝶财务软件2000XP标准版
加密狗类型:彩虹圣天诺NetSentinel-C网络狗
加密方法:API方式。
解密方法:无狗解狗。
使用工具:TRW2000,W32DASM,Delphi5.0

简要说明:
金蝶财务软件2000xp标准版是一个单用户版和小规模网络版的复合体,整个系统用VB语言开发。
系统启动时,先进行单用户狗的检测,检测不到单用户狗数据时就转向检测网络狗。
单用户版使用的狗与行政事业版相同,都是圣天诺公司的Superpro软件锁。
网络版的狗就有了区别,所用的加密狗改成了同样是圣天诺公司出品的NetSentinel-C网络狗。
NetSentinel-C和Superpro做为同一个公司的产品,虽然有许多的不同之处,但其相同的地方也是显而易见的。

破解基本思路:
上次破解Superpro时,我从Superpro狗的动态库sx32w.dll入手,这次破解网络版,sx32w.dll就没了用处。我们这次的突破口改成了这里——Nslms324.dll。
你可别小看Nslms324.dll这个动态链接库,这个东东就是NetSentinel狗的客户端通讯驱动。它就是软件客户端与NetSentinel网络狗服务器端的通讯桥梁。

破解过程:
1、用W32DASM反汇编Nslms324.dll,查看其内部的过程。
2、屏蔽掉sx32w.dll(为什么屏蔽??不好意思了,单机版原来的sx32w.dll已经不知道哪里去了,现在笨笨机器里的这个已经是笨笨破解过的了。呵呵~~)
3、用TRW载入kdwin.exe,跟踪至Nslms324.dll处细看,发现金蝶Nslms324.dll中过程的调用次序如下:

软件载入时启动以下过程:
a) set_rnbo_lib_parameters (多次) -->出错时提示退出
b) open_first_key -->出错时提示退出
c) get_rnbo_lib_parameters (多次) -->出错时提示退出
d) query_key (多次执行) -->出错时无提示,继续执行
e)验证query_key的返回值,
正确时:正常功能版本,Pass!!!
出错时:提示软件为教学演示版。

软件退出时启动以下过程:
f) close_key
g) detach_from_dll


3、分析以上流程,发现:
A. set_rnbo_lib_parameters是一个复合的多分支函数,传入值采用动态定义方式,第一个传入值是功能号。
软件先后以不同形式的参量使用了set_rnbo_lib_parameters的第3,第5功能,
其目的分别为设置服务器,设置通讯协议,返回值可能是出错号,设为0时通过。

B. open_first_key大致相当于Superpro狗的SproFindFirstUnit功能,传入狗类型和查询口令等,应该是用于定位狗,返回值同上。

C. get_rnbo_lib_parameters也是一个复合的多分支函数,传入值同set_rnbo_lib_parameters一样采用动态定义方式,第一个传入值也是功能号。应该是用于对client和server进行检测(大致包括client端及server端的驱动版本号、句柄、种子点、用户数及许可证等等),返回值同前。

D. query_key大致相当于Superpro狗的SproRead功能,传入地址用于采集数据。

E. closekey看名字就知道了,一定是程序退出时从server端释放服务器句柄及许可证用的,在这里我们用不到。

F. detach_from_dll应该不是一个函数,而是一个子程序,可能是在结束驱动调用,没有传入值。

4、经过以上分析,用delphi重新构造了一个Nslms324.dll,调试通过后用其替换原来的Nslms324.dll。运行软件,提示狗数据出错。(当然会出错,因为笨笨没有网络狗,采不到数据嘛~~。query那里的返回值笨笨我全部给设成了3838这样子,为了方便跟踪调试,笨笨还多写了一个messagebox进去,^_^)。
5、现在容易了,再花了一点点时间跟一下吧。
用trw2000载入,断点当然是下在messagebox那里,执行到query_key函数以后的数据验证部分,发现正确的返回值应为,XXXX(因为是行业软件,这里省略掉,大家见谅)......
6、将正确的返回值写回我们的Nslms324.dll里,运行,通过!!

也不知道前面的几篇各位看不看的上眼,行是不行peterchen又不讲话,趁上午有点时间,多贴一篇上来吧。