首页
社区
课程
招聘
[求助]请赐教SentinelLM 的破解思路
发表于: 2006-4-2 10:43 17399

[求助]请赐教SentinelLM 的破解思路

2006-4-2 10:43
17399
不知道用SentinelLM保护的东西怎么入手 在网上找了一天就发现Laoqian有过这样的文章希望Laoqian赐教SentinelLM 的破解思路

QQ 82693212

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 47147
活跃值: (20460)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
不要违规点将

最初由 foolchat 发布
【求助】请Laoqian赐教SentinelLM 的破解思路
2006-4-2 10:47
0
雪    币: 211
活跃值: (35)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
对不起  刚来的不好意思
2006-4-2 17:43
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
可以上http://woodmann.com/crackz看看,有详细的教程。
2006-4-3 20:43
0
雪    币: 193
活跃值: (276)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
Sentinellm的破解很难也很麻烦。必须要有SentinelLM的SDK。首先要破解SDK的狗。然后要将您想破解的软件的硬件ID(也叫Vendor_ID)替换掉SDK本身对应的Vendor_ID,在您想破解的软件软件中要找出feature name及version,然后用修改了的SDK计算出LIC。所用的工具为S-ice,ida,sig for sentinellm,sentinellm sdk等。关键的是您要读懂sentinellm的一些资料,这些资料在http://www.woodmann.net/crackz/中可以查到,很经典的。
用Ida反汇编wlscgen.exe。必须load sentinellm的sig,load superpro dog的sig.
与dog相关的函数为:
_RnboFindFirstUnit _RnboFindnextUnit
_RnboSproQuery _RnboSproRead,在Ida中就可知道上述函数的地址。
对以上函数进行模拟,即可破解Wlscgen.exe中的SuperPro加密锁。
   在http://bingle.pku.edu.cn/中搜索SentineLM,可以得到SDK的下载地址。但要作SentinelLM的破解,您最好把www.woodmann.net/crackz中的文章读懂。
   用Flair将SDK中lsapiw32.lib转换得到lsapiw32.sig,该sig 即为Sig for SentineLM
2006-8-15 11:43
0
雪    币: 51
活跃值: (2091)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
SENTINELLM与FLEXLM相比实际上会简单些
2006-8-15 13:14
0
雪    币: 193
活跃值: (276)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
制作SentineLM的license文件必须要有SDK,否则的话只有爆破。
而制作FlexLM的licesne文件可以不需要SDK。从需不需要SDK的角度来说,SentineLM要难于FlexLM。
2006-8-15 15:52
0
雪    币: 51
活跃值: (2091)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
难度上,SENTINELLM要小很多,当然如果SDK没有SENTINELPRO保护的话就更不值一提了。FLEXLM主要是被人研究得太透了,CRACKZ上两者的文章实际上也反应了两者的难度区别。至于FLEXLM不需要SDK也能做出,SENTINELLM也是一样的,当然涉及到自定义加密的问题上,SDK都是必须的
2006-8-15 16:10
0
雪    币: 217
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
SENTINELLM与FLEXLM都不难的 和一般小软件没有什么区别。sdk生成也好,爆破也好,没什么难度,和一般共享程序没有多大的区别,跟起来小心点就是了,几次下来 有经验,很快就能over了。
2006-8-15 16:41
0
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
我下了一个你用的找的《SentinelLM加密分析及破解方法》,我没有权限上传,

就把大致内容贴过来:(请你们也帮帮忙解决我的问题吧,http://bbs.pediy.com/showthread.php?s=&threadid=30563)

 SentinelLM就Sentinel License Manager的缩写,该软件的功能和FLEXLM很像,都是通过网卡加密的,
服务器端安装SERVER,客户机不用安装其它软件,使用时SERVER端启动并打开一个合法的License文件,
这个License文件是软件开发商提供的。启动后客户机才能正常运行软件,否则一运行就提示No License,
Can't not run.而且客户机上的很多程序都有这个限制,即使暴破能够成功也要改不少文件,这样的话就
很麻烦了。先不管这么多,也许比我想像相的会好的多。

017F:022116D4  MOV      [EBP+04],AL
017F:022116D7  CALL    02213C47  //从这里CALL里返回的EAX为12,而从这个段里返回的值是02。
017F:022116DC  ADD      ESP,BYTE +20 //经分析发现如果返回值为0则不会弹出提示窗口。
017F:022116DF  CMP      EAX,BYTE +1A
017F:022116E2  MOV      [EBP+74],EAX  ********
017F:022116E5  JA      NEAR 0221176D
017F:022116EB  CMP      EAX,BYTE +19
017F:022116EE  JNC      NEAR 022119A6
017F:022116F4  CMP      EAX,BYTE +18
017F:022116F7  JA      NEAR 022117A8
017F:022116FD  XOR      EDX,EDX
017F:022116FF  MOV      DL,[EAX+022119C4]
017F:02211705  JMP      NEAR [EDX*4+022119B8]
017F:0221170C  LEA      EAX,[EBP+68]
017F:0221170F  MOV      BYTE [EBP+04],01

以上段里返回的值是02则会出错,改成0后不弹出提示窗口,程序可以继续运行下去,但运行到一半后就
出错了,“c800001 error!”这种提示不是程序事先做好的窗口,而是真正的系统出错。难道有非法地
址或数据?不会吧,先下BPX LOCKMYTASK,可以跟到出错地方,但是看起来是在读取EXE文件时出错?
因为有exeshell的字样,大部分软件都是用这个API来打开外部EXE文件的。我想EXE应该不会出错,很可
能是在前面读狗后在一个地址里放入了标志,而在程序运行之前检查了这个标志,然后转入出错部分。
我注意到上面代码中打*号的地方,因为它是把从那个CALL里返回的12放入了[EAX+47],因为12是错误的
值,会使返回的值为02,而02也是错误的。所以[EAX+47]里的值是错误的,如果程序拿来校验一定会被
查出来,下BPM XXXXXX看看程序在后面是怎么对它操作的?果然被拦下来,先看下面代码:

017F:02211AB2  PUSH    BYTE +00
017F:02211AB4  CALL    02214DB2 //从这里返回的EAX=1,  @@@@@@
017F:02211AB9  MOV      ESI,[ESP+10]
017F:02211ABD  ADD      ESP,BYTE +04
017F:02211AC0  TEST    EAX,EAX   
017F:02211AC2  MOV      [ESI+74],EAX //又把EAX放入[ESI+74],因为EAX=0才能使程序走到2211ACF
017F:02211AC5  JZ      02211ACF //这里不会跳,从而这段最后的值为02,上段程序返回02是错的。
017F:02211AC7  MOV      EAX,02 //所以这里也是错的。改成xor eax,eax
017F:02211ACC  POP      ESI
017F:02211ACD  POP      ECX
017F:02211ACE  RET   
017F:02211ACF  MOV      EAX,[ESI+70] //这里有一个表,可能会返回0。
017F:02211AD2  PUSH    EBX
017F:02211AD3  PUSH    EDI
017F:02211AD4  PUSH    BYTE +00

在@@@@@处按F8进入下面段,看看哪里会使返回值为1。

017F:02215108  CALL    02214E52
017F:0221510D  CALL    02216787
017F:02215112  PUSH    EAX
017F:02215113  PUSH    DWORD [0225BFB4]
017F:02215119  CALL    02214E12
017F:0221511E  ADD      ESP,BYTE +08
017F:02215121  TEST    EAX,EAX
017F:02215123  JNZ      0221512C            (JUMP)
017F:02215125  MOV      EAX,01     //在这里,EAX=1
017F:0221512A  JMP      SHORT 0221512F
017F:0221512C  MOV      EAX,[EAX+38]
017F:0221512F  RET   
017F:02215130  CALL    02214E52
017F:02215135  CALL    02216787

圣天诺的加密做的真的很好,从这个程序中我又学到了不少东西,一是出错值与程序的关系,比如12被
应用到后的校验,如果你仅仅改后面的跳转就不行了,因为错误的值被做成标志,在后面只要拿来校验就
麻烦了。所以必须分析出程序对它的操作,是比较还是拿来计算?二是系统出错不一定是程序本身的问题。
加密公司完全有能力把系统出错和加密代码返回的值结何起来,从而让系统出错,这样做的目的是让破解
者把注意力放到调试系统出错的问题上,而忽略了程序本身。

                       
2006-8-16 00:35
0
雪    币: 172
活跃值: (212)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
我觉得看了Laoqian的文章就应该可以入门了。
2006-8-16 01:48
0
雪    币: 193
活跃值: (276)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
在SentinelLM 7.1.0保护的应用程序中,找出VendorID和feature name的方法:

step 1:对应用程序用IDA进行反汇编,然后load Sentinellm的sig,然后查找_ComputeVendorCode,
        找出call _ComputeVendorCode,记下该call _ComputeVendorCode的地址,
        查找call    _VLSrequestExt,记下call    _VLSrequestExt的地址。

step 2:在S-ice中,根据step 1中找到的call _ComputeVendorCode的地址,设置断点bpx _ComputeVendorCode地址,eax中的返回值即为VendorID的值。
    在S-ice中,设置断点为step 1中找到的call _VLSrequestext的地址,即 bpx call _VLSrequestext地址,在该
    call前的第三个参数为存放feature name的地址,用此方法可找出应用程序中的所有的feature name。
        在该call前的第四个参数为存放version的地址,用此方法可找出应用程序中的所有的feature name对应的version.

step 3:在Crack了的wlscgen.exe中找到VendorID的方法如下:
        对Wlscgen.exe用IDA进行反汇编,然后load SentinalSuperPro的sig(killer_3K)和Sentinellm的sig,
        然后查找_genGetNBVendorCode,
        找出call _genGetNBVendorCode,记下该call _genGetNBVendorCode的地址,bpx call _genGetNBVendorCode,
        返回值即为Wlscgen.exe中对应的VendorID值,还不是应用程序中对应的VendorID.

step 4: 将应用程序中的对应的VendorID应用到Wlscgen.exe中,用来产生应用程序的license文件的方法如下:
        在Crack了的wlscgen.exe中,修改VendorID为step 2中找到的VendorID值,修改的方法如下:
     bpx call _genGetNBVendorCode, 用T命令进入该Call,然后如下修改:
          cs:42221e  mov eax,VendorID----->为step 2中找到的VendorID值
          cs:422223  mov [esi+650],eax
          cs:422229  jmps 422248

step 5:用修改了的wlscgen.exe 来创建不同feature name的license。
对于7.2.0与7.3.0方法大同小异。
2006-8-16 11:30
0
雪    币: 211
活跃值: (35)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
怎么设置SLM SDK中的VendorID information的信息呢 望各位明白人提示一下
2006-8-31 16:43
0
雪    币: 332
活跃值: (479)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
14
有人提示看到这个,建议整理一下,入精!!!
2006-10-10 16:12
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
2006-11-29 22:01
0
游客
登录 | 注册 方可回帖
返回
//