【 以下文字转载自 Crack 讨论区 】
发信人: cca (^ok^), 信区: Crack
标 题: 制作Compuware.SoftIce.Driver.Suite.3.0.1.StinkyD的license转贴看雪论坛
发信站: BBS 水木清华站 (Tue Jan 20 22:30:34 2004), 转信
制作Compuware.SoftIce.Driver.Suite.3.0.1.StinkyD的license
软件名称: Compuware.SoftICE.Driver.Suite.3.0.1
下载地址:fxp://wxw.exetools.com/incoming/Compuware.SoftICE.Driver.Suite.3.0.1.StinkyD/
保护方式: FlexLm
使用工具:OllyDbg, IDA, HexWorkshop
文章作者:tulipfan[CCG]
写作时间: 2003-9-3
通过这篇文章我们将向你介绍如何制作FlexLm的license
第一部分: 废话
这个软件前些日子就Down了,不过没有安装,因为我现在比较喜欢使用OllyDbg,一般的软件用它完全足够了
StinkyD版本身没有带破解,不过可以使用ROR的keygen和ds3lic.dat.
关于ROR
从进半年来看,ROR组织是目前发布作品最多,质量最好的组织之一,特别是他的注册机,做的很专业!
而且听说是国人自己的破解组织!自豪中...
第二部分: 转入正题
破解FlexLm最主要的是找到4样东西.
1. 确定版本号
2. 找vendor_id
3. 计算ENCRYPTION_SEED
4. 找FEATURE
有了这几个,就可以使用FlexLm SDK做出注册机了.
1. 确定版本号
确定版本号可以通过lmutil.exe来确定
在命令行运行lmutil.exe lmver cws3xw32.dll
lmutil - Copyright (C) 1989-2001 Globetrotter Software, Inc.
FLEXlm v7.2i (liblmgr.a), Copyright (C) 1988-2001 Globetrotter Software, Inc.
还有一个办法就是用二进制编辑器,推荐使用HexWorkshop,它的查找功能很强,特别是Find All Instances更是我最最常用的.
在查找对话框Type中选择类型Text String,Value中输入"@(#) FLEXlm v",查找,"@(#) FLEXlm v"后面的就是版本号.
最后确定版本号是7.2i,这一步的目的有两个,一是在lmkg.exe中生成Vendor信息时用,二是在写注册机lmcrypt.exe时使用
2. 找vendor_id
要找vendor_id就需要找到l_sg这个函数了(至于为什么要找这个函数建议看一些更基础的文章),在这儿我主要是介绍一下如何
定位l_sg函数,这个是FlexLm的一个内部使用的函数. lc_init,lc_checkout都会调用它
下面是它们的调用关系,括号里面的数字是调用的次数,这个是我从7.2i版的demo.exe上跟踪得到的结果,其他版本可能略有不同.
a. lc_init -> l_init
b. l_init -> l_sg
a. lc_checkout -> l_checkout
b. l_checkout -> lm_start_real(2)
c. lm_start_real -> l_good_lic_key(3)
d. l_good_lic_key -> l_sg(2)
从上面可以看到它们的调用关系.
我们可以通过l_sg确定vendor_id和ENCRYPTION_SEED,通过lc_checkout可以确定FEATURE
IDA通过FlexLm的sig文件可以确定上面的大部分函数,再通过他们的调用关系,很容易找到其他函数.
制作FlexLm的批处理文件和工具包含在附件中.
最后定位到l_sg函数
.text:10023C6F C7 45 F0 8E B9 48+ mov [ebp+var_10], 7648B98Eh 这个数在确定l_sg函数上
.text:10023C76 C7 45 EC 03 00 00+ mov [ebp+var_14], 3 也很有用
.text:10023C7D 8B 45 08 mov eax, [ebp+arg_0]
.text:10023C80 8B 48 6C mov ecx, [eax+6Ch]
.text:10023C83 8B 91 D4 01 00 00 mov edx, [ecx+1D4h]
.text:10023C89 81 E2 00 80 00 00 and edx, 8000h
.text:10023C8F 85 D2 test edx, edx
.text:10023C91 74 23 jz short loc_10023CB6
.text:10023C93 83 3D B0 95 10 10+ cmp dword_101095B0, 0
.text:10023C9A 74 1A jz short loc_10023CB6
.text:10023C9C 8B 45 10 mov eax, [ebp+arg_8]
.text:10023C9F 50 push eax
.text:10023CA0 8B 4D 0C mov ecx, [ebp+arg_4]
.text:10023CA3 51 push ecx
.text:10023CA4 8B 55 08 mov edx, [ebp+arg_0]
.text:10023CA7 52 push edx
.text:10023CA8 FF 15 B0 95 10 10 call dword_101095B0 在这个地方下断
到达断点后按F8,
在cmdbar上输入dd [esp+4]
00B6DE84 003D2084 ASCII "compuware" vendor_id
输入dd [esp+8]
00B6DFD0 00000004
00B6DFD4 6F0BDE5B data[0]
00B6DFD8 FE5E8B42 data[1]
00B6DFDC 1B3BD819
00B6DFE0 F25DBA4E
00B6DFE4 E6C879BF
00B6DFE8 54483E7D
输入dd [esp]
003D1F38 00000066
003D1F3C 00FB009A
003D1F40 BC87EB00 job+08
003D1F44 1B1678DF job+0c
003D1F48 970A62BC job+10
3. 计算ENCRYPTION_SEED
使用附件中的工具calcseed.exe,输入上述信息,计算
#define ENCRYPTION_SEED1 0x15263748
#define ENCRYPTION_SEED2 0xf0436413
4. 找Feathure
在lc_checkout处下断bpx 10015929,按F8
在cmdbar上输入 dd esp
00B6E538 003D1F38
00B6E53C 003D5F60 ASCII "DriverStudio" Feathure
00B6E540 003D5FD8 ASCII "003.000" Version
这个地方可能会中断好几次,这样就可以得到越多的Feathure,不过我现在只是需要里面的SoftICE,上面一个完全够用了.
至此,分析已经基本完成,可以使用SDK写注册机了
第三部分: 写注册机
使用附件中的lmkg.exe,选择version 7.0,在vendor_id输入"compuware"得到
/* Version 7 keys */
#define VENDOR_KEY1 0x9b3aca39
#define VENDOR_KEY2 0x1ebd887f
#define VENDOR_KEY3 0x3a876975
#define VENDOR_KEY4 0x05360fdb
#define VENDOR_KEY5 0x0550b591
#define CRO_KEY1 0x9f1ac831
#define CRO_KEY2 0x589feaf9
#define VENDOR_NAME "compuware"
编辑ENCRYPTION_SEED1,ENCRYPTION_SEED2,其中3,4是SDK中的默认值,不需要改动(好像暂时没有什么用)
#define ENCRYPTION_SEED1 0x15263748
#define ENCRYPTION_SEED2 0xf0436413
#define ENCRYPTION_SEED3 0x22222222
#define ENCRYPTION_SEED4 0x32323232
按照上面的信息,编辑lm_code.h,编译lmcrypt.c就大功告成了!
下面就是使用注册机生成自己注册码了.
先手工编辑一个license.dat如下
FEATURE DriverStudio compuware 003.000 permanent uncounted \
0 HOSTID=ANY ISSUER=tulipfan ISSUED=2-Sep-2003 \
ck=0
在命令行运行lmcrypt.exe license.dat
恭喜你,一个没有时间次数限制属于你自己的license生成了!!!
第四部分: 感谢
CrackZ
Nolan Blender
Oleh Yuschuk
和所有看学论坛上的朋友们!
--
FROM 202.102.142.*