制作Flexlm license总结Word格式文档下载.docx

上传人:b****1 文档编号:4949775 上传时间:2023-05-04 格式:DOCX 页数:25 大小:29.15KB
下载 相关 举报
制作Flexlm license总结Word格式文档下载.docx_第1页
第1页 / 共25页
制作Flexlm license总结Word格式文档下载.docx_第2页
第2页 / 共25页
制作Flexlm license总结Word格式文档下载.docx_第3页
第3页 / 共25页
制作Flexlm license总结Word格式文档下载.docx_第4页
第4页 / 共25页
制作Flexlm license总结Word格式文档下载.docx_第5页
第5页 / 共25页
制作Flexlm license总结Word格式文档下载.docx_第6页
第6页 / 共25页
制作Flexlm license总结Word格式文档下载.docx_第7页
第7页 / 共25页
制作Flexlm license总结Word格式文档下载.docx_第8页
第8页 / 共25页
制作Flexlm license总结Word格式文档下载.docx_第9页
第9页 / 共25页
制作Flexlm license总结Word格式文档下载.docx_第10页
第10页 / 共25页
制作Flexlm license总结Word格式文档下载.docx_第11页
第11页 / 共25页
制作Flexlm license总结Word格式文档下载.docx_第12页
第12页 / 共25页
制作Flexlm license总结Word格式文档下载.docx_第13页
第13页 / 共25页
制作Flexlm license总结Word格式文档下载.docx_第14页
第14页 / 共25页
制作Flexlm license总结Word格式文档下载.docx_第15页
第15页 / 共25页
制作Flexlm license总结Word格式文档下载.docx_第16页
第16页 / 共25页
制作Flexlm license总结Word格式文档下载.docx_第17页
第17页 / 共25页
制作Flexlm license总结Word格式文档下载.docx_第18页
第18页 / 共25页
制作Flexlm license总结Word格式文档下载.docx_第19页
第19页 / 共25页
制作Flexlm license总结Word格式文档下载.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

制作Flexlm license总结Word格式文档下载.docx

《制作Flexlm license总结Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《制作Flexlm license总结Word格式文档下载.docx(25页珍藏版)》请在冰点文库上搜索。

制作Flexlm license总结Word格式文档下载.docx

@(#) 

v"

查找,"

后面的就是版本号.

【以上是tulipfan[CCG]大虾说的】

方法二:

用Flexlm 

SDK里的lmtools(在\flexlm\v7.1\i86_n3目录里),运行进入Utilities,点击“Browse”查找你的Flexlm加密的程序主exe或dll,

然后“find 

version”,在下面就会显示你的Flexlm版本,用v7.1版甚至可以看到8.3版以后,是通用的。

有个别程序可能此法不行!

方法三:

在反汇编以后,搜索“87654321”,在前面设断点

在Flexlm 

SDK里lm_code.h文件里你可以看到一下几句:

代码:

Vendor'

private 

seeds, 

-- 

replace 

with 

32-bit 

numbers 

that

you 

make 

up.

*/

#define 

ENCRYPTION_SEED1 

0x87654321

ENCRYPTION_SEED2 

0x12345678

/*

vendor 

keys 

enter 

as 

received 

from 

Globetrotter.

Changing 

these 

has 

NO 

impact 

on 

license 

files 

(unlike

the 

ENCRYPTION_SEEDs).

/*-

Generate 

with:

lmvkey 

-v 

demo 

-d 

(+3 

months) 

-p 

ALL 

-c 

DEMO

(Use 

date 

approx 

months 

out)

这说明demo的SEED1=0x87654321,SEED2=0x12345678

对应Zendenc里是:

0043391D 

E8 

184B0400 

call 

<

jmp.&

MSVCRT.memcpy>

00433922 

83C4 

0C 

add 

esp,0C

00433925 

8D8D 

40FFFFFF 

lea 

ecx,dword 

ptr 

ss:

[ebp-C0] 

我们可以在这里设断点!

0043392B 

51 

push 

ecx

0043392C 

8B95 

30FFFFFF 

mov 

edx,dword 

[ebp-D0] 

ebp-D0地址是以后要用的!

00433932 

81C2 

4C010000 

edx,14C 

计算得到VENDOR地址

00433938 

52 

edx 

VENDOR入栈!

(ASCII 

"

zend"

00433939 

8B85 

eax,dword 

[ebp-D0]

0043393F 

50 

eax

00433940 

95560000 

zendenc.00438FDA 

这个call就是著名的所谓7648B98E标志call!

后面要进去的!

00433945 

00433948 

81BD 

44FFFFFF 

214>

cmp 

dword 

[ebp-BC],87654321 

此处比较是否是demo的seed1,当然在此seed1已被加密!

00433952 

74 

je 

short 

zendenc.00433960 

此处比较是否是demo的seed2,当然在此seed2已被加密!

00433954 

48FFFFFF 

785>

[ebp-B8],12345678

0043395E 

75 

5D 

jnz 

zendenc.004339BD

00433960 

8B8D 

00433966 

8379 

14 

00 

ds:

[ecx+14],0

0043396A 

17 

zendenc.00433983

我们在断点停下d 

ebp-c0

0012D404 

00000004 

_...

0012D408 

E0AAA4A0 

_お?

此seed1已被加密

0012D40C 

C0121579 

y__ 

此seed2已被加密!

0012D410 

3F9F6A79 

yj?

此VENDOR_KEY1已被加密!

0012D414 

25DC750E 

u?

此VENDOR_KEY2已被加密!

0012D418 

B8B046C5 

牌案

0012D41C 

0B2EAC4E 

N?

......向下拉看

0012D4A8 

00000000 

....

0012D4AC 

00010007 

_._.

0012D4B0 

37300064 

d.07 

此处显示7.1d

0012D4B4 

0000312E 

.1.. 

7.1

0012D4B8 

这之后,等我们第一次走过著名的所谓7648B98E标志call,“00433940 

zendenc.00438FDA”以后,会发现被加密seed又改变了,其实

就是简单的xor,可是这个xor我们不得而知!

我们得到BEHAVIOR 

Version 

V7.1d

87654321此处,在6.x版时,可以得到真seed,

参考文章“Ansoft 

Serenade 

v8.5 

Tutorial”

also 

remembered 

that 

checks 

for 

default 

seed 

codes 

(shipped 

SDK) 

was 

good 

place 

to 

fish 

correct 

simple 

disassembly 

search 

'

87654321'

finds 

this 

code 

:

-

00429C4C 

CMP 

D, 

[EBP-34], 

87654321 

Check 

encryption_seed1.

00429C53 

JZ 

00429C5E 

Jump 

Error.

00429C55 

[EBP-30], 

12345678 

encryption_seed2.

00429C5C 

JNZ 

00429C85 

Good 

jump.

MOV 

EDI, 

FFFFFFA5 

Error 

Code 

(-91).

Routines 

inside 

Ser85.exe 

detect 

bpx 

type 

breakpoints 

and 

patching 

of 

key 

files, 

checking 

starts 

at 

0040EFD3, 

here 

you'

ll 

see 

names 

are 

checked 

rather 

obvious 

PUSH 

7'

instructions 

which 

produce 

cryptic 

error 

message 

box 

asking 

Ansoft 

assistance. 

The 

verified 

should 

give 

us 

idea 

where 

look 

other 

parts 

protection, 

Ansoft'

developers 

evidently 

tried 

(as 

is 

policy) 

identify 

possible 

points 

attack. 

Using 

bpmb 

style 

we 

can 

quickly 

recover 

(what 

think 

valid) 

encryption_seed1 

(0x7CB2B081) 

&

encryption_seed2 

(0x2DFE22B6).

.....

最后用方法一、二可以确定Zendenc版本号是7.1d,这一步的目的有两个,一是在lmkg.exe中生成Vendor信息时用,二是在使用FlexLm 

SDK制作

FlexLm的license时使用。

先找FEATURE

不用IDA,太麻烦了,既然有SDK和前人的经验,我偷个懒。

我偷懒的办法,还是用安装Flexlm 

SDK里的lmtools!

打开“Server 

status”项,

点击“Perform 

status 

Equiry”,你就会看到服务器端的正版license.dat内容!

前提是你要配置好,而且有正版程序和license,废话!

比如显示如下:

101:

SERVER 

main 

001234567890 

(我的服务器网卡号,我隐去正确的,避免麻烦啊!

80:

VENDOR 

adskflex 

port=8080

150:

INCREMENT 

41100ACD_2002_0F 

1.000 

permanent 

100 

VENDOR_STRING=(中间有很多参数,省略避免麻烦)SIGN=787878787878

(我隐去正确的,避免麻烦,为什么是78 ?

) 

关联信息:

省略

170:

(overall 

file 

checksum)

看到了吗!

adskflex

41100ACD_2002_0F,这个INCREMENT其实就是FEATURE,后面那个1.000就是Version

是用户数

VENDOR_STRING=  这个也参与计算验证的

中间有很多参数也参与计算验证的,省略避免麻烦

SIGN=787878787878 我就不说了

如果你没有像我的条件就只好去看别的资料学习,很简单的!

如果你的选项得当,现在你甚至就可以在客户端控制license服务器,你可以关闭license服务――慎用!

,我曾在几次无意的操作中

关闭了license服务,结果单位的所有机器cad罢工,管理员还不知道怎么回事,只好重启服务器,那几天可忙坏了她!

这是flexlm的一个bug吧

用IDA+相应版本的sig+sdk,找到_lc_checkout函数,设断点,你会找到FEATURE。

我采用的是7.2得sig,显示是_lp_checkout

00478043 

68 

00400000 

4000

00478048 

00478049 

6A 

0047804B 

01 

1

0047804D 

ECDB4900 

zendenc.0049DBEC 

;

FEATURE版本 

ASCII 

1.0"

00478052 

56 

esi 

FEATURE 

id, 

Zend_Encoder"

00478053 

edx

00478054 

57DFFBFF 

zendenc.00435FB0 

lp_checkout

00478059 

4C 

esp,4C

0047805C 

85C0 

test 

eax,eax 

0,jmp

0047805E 

3F 

zendenc.0047809F

00478060 

8A8424 

18090000 

al,byte 

[esp+918]

00478067 

84C0 

al,al

00478069 

12 

zendenc.0047807D

0047806B 

8B4424 

10 

[esp+10]

0047806F 

DCDB4900 

zendenc.0049DBDC 

Checkout 

failed"

一般搜索这个字符,上面的就是checkout了!

00478074 

在00478054中断,你会看到堆栈窗口里出现了FEATURE 

id和版本,或者d 

esi。

找vendor以及计算seed的关键数据

方法一同前,不说了。

下面引用自tulipfan[CCG]:

********

“要找vendor_id就需要找到l_sg这个函数了(至于为什么要找这个函数建议看一些更基础的文章),在这儿我主要是介绍一下如何定位l_sg函数,

这个是FlexLm的一个内部使用的函数. 

lc_init,lc_checkout都会调用它下面是它们的调用关系,括号里面的数字是调用的次数。

a. 

lc_init 

->

l_init

b. 

l_init 

l_sg

(1)

lc_checkout 

l_checkout

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的批处理文件和工具包可去CrackZ去下载.

最后定位到l_sg函数”

************

我们有9.2的source,我们看到lm_ckout.c中有下面一段,那几个数就是确定l_sg函数上很有用的,针对

0x7648b98e;

v7.x 

0x6f7330b8;

/*- 

v8.x,9.x*/

下面给出参考:

V7

glseed 

0x788F71D2

seedval 

0x7648B98E

V8

0x3CDE3EBF

0x6F73330B8

V9

0x72346B53

0x6F7330B8

v10

0x5332322F

关于这一段,zhanzixin 

有一点小小的补充。

0x7648b98e这个数字,被称为seedval的,

在版本4、5、6中是 

0xa8f38730

在版本7.0-8.0c中是 

0x7648b98e

在版本8.0d以后,一直没变,是0x6f7330b8。

Also 

used 

by 

flexcrypt 

notify 

if 

API 

changes.

void

l_sg(

LM_HANDLE 

job,

char 

vendor_id,

VENDORCODE 

key) 

l_sg 

means 

signature 

vendor_key5"

{

unsigned 

long 

keys[4];

sig[SIGSIZE] 

{'

\0'

};

If 

change 

this, 

must 

it 

in 

utils/lmnewgen.c 

0xa8f38730;

v3.1 

v7.0 

v8.x 

extern 

void 

(*L_UNIQ_KEY5_FUNC)();

d0 

0, 

d1 

0;

int 

SIGSIZE-1;

(( 

job->

options->

flags 

LM_OPTFLAG_CUSTOM_KEY5) 

L_UNIQ_KEY5_FUNC)

(*L_UNIQ_KEY5_FUNC)(job, 

vendor_id, 

key);

return;

}

废话少说,我们直接反汇编zendenc.exe,我们查找“7648B98E”,来到下面,好像就这么1,2处

前人的经验就是宝贵啊,我省了很多事!

.text:

00438FDA 

=============== 

?

=====================================

00438FDA

Attributes:

bp-based 

frame

sub_438FDA 

proc 

near 

CODE 

XREF:

sub_432CC4+C7C_p

sub_437621+B9_p 

...

ebp 

====先在这个地方下断

00438FDB 

ebp, 

esp

00438FDD 

sub 

esp, 

30h

00438FE0 

[ebp+var_10], 

7648B98Eh 

====就是这个数在确定l_sg函数上很有用

00438FE7 

[ebp+var_14], 

3

00438FEE 

eax, 

[ebp+arg_0]

00438FF1 

ecx, 

[eax+6Ch]

00438FF4 

edx, 

[ecx+1D4h]

00438FFA 

8000h

00439000 

00439002 

jz 

loc_439027 

====这个跳前面分析了,第一次肯定会跳的!

第二次再来!

00439004 

dword_49E5EC, 

0043900

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2