標 題: 製作 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 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
和所有CCG和看學論壇上的朋友們!