製作Compuware.SoftIce.Driver.Suite.3.0.1.StinkyD的license (5千字)

看雪資料發表於2015-11-15

標 題: 製作 GL Studio v3.02 的 license

作 者: ylp1332

時 間: 2007-02-10 20:34 

鏈 接: http://bbs.pediy.com/showthread.php?t=39445 

詳細資訊: 



製作Compuware.SoftIce.Driver.Suite.3.0.1.StinkyD的license


軟體名稱: Compuware.SoftICE.Driver.Suite.3.0.1
下載地址:fttp://wxw.exetools.com/incoming/Compuware.SoftICE.Driver.Suite.3.0.1.StinkyD/

工具及序號產生器下載:http://www.pediy.com/practise/bbs6/cws3xw32.rar

保護方式: 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    edxedx
.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
和所有CCG和看學論壇上的朋友們!

相關文章