制作Flexlm license总结Word格式.docx
- 文档编号:19851952
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:20
- 大小:29.21KB
制作Flexlm license总结Word格式.docx
《制作Flexlm license总结Word格式.docx》由会员分享,可在线阅读,更多相关《制作Flexlm license总结Word格式.docx(20页珍藏版)》请在冰豆网上搜索。
@(#)
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'
s
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
a
date
approx
3
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”
I
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
x
0xa8f38730;
v3.1
v7.0
v8.x
extern
void
(*L_UNIQ_KEY5_FUNC)();
d0
0,
d1
0;
int
i
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
===============
S
U
B
R
O
T
N
E
?
=====================================
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 制作Flexlm license总结 制作 Flexlm license 总结