首页
社区
课程
招聘
[求助]谁有FLEXnet Licensing v10.1.3 的sig啊?
2006-8-27 09:30 12314

[求助]谁有FLEXnet Licensing v10.1.3 的sig啊?

2006-8-27 09:30
12314
【求助】谁有FLEXnet Licensing v10.1.3 的sig啊?虽然flexlm 9.0的sig,但只识别了440个函数,并且没有lc_checkout函数,lc打头的函数也少得可怜,现在不知道如何下手,

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞0
打赏
分享
最新回复 (16)
雪    币: 305
活跃值: (121)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
marstj 2006-8-28 00:14
2
0
破解FlexLM加密的软件没有必要使用SDK和Sig。
用Ida或Wasm反汇编程序,在反汇编代码中找到FlexWrap串出现的地址,在该地址之前的某个ecx中包含了特征名,call xxxxxx中包含了算法。具体跟踪找到算法的方法如下:先构造一license文件,加密串使用20位的码,其中随机给定的串为“1234”,在内存中查找1234,或根据特征名找到一内存地址,即ds:ecx为特征名,bpm ds:ecx设置该地址为读写中断地址。然后追踪对特征名或1234进行读写的程序段,可以找到相关的算法。找到算法后,立即可以找到加密种子。根据debug.log的信息可以判断软件用的是长密码还是短密码的方式,也可以得到feature的信息。
雪    币: 332
活跃值: (479)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
laoqian 8 2006-8-28 16:29
3
0
楼上的方法也太笼统了。
看看我的文章,或许会有帮助。

或者来我的 QQ群讨论:5306519

又 FLEXnet Licensing v10.1.3 的sig可以自己做
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jswac 2006-8-28 16:35
4
0
2楼的能否举例说明。

   我去laoqian的群看看。
雪    币: 305
活跃值: (121)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
marstj 2006-8-28 23:24
5
0
首先构造一license文件(按照老的格式),其中的密码为长密码串,人为给出的四个字符串假设为1234
    license文件的样本如下:
    SERVER _hostname_ 0050ba652a27 1700
    DAEMON daemon(为守护程序名,在实际中应改为被调试的软件的守护程序)
    FEATURE XXXXC daemon 2000.1231 31-dec-2000 1 B18233245D3565C60BC6 \
    ISSUED=28-sep-2000 ck=54                  1 2 3 4 为四个随机数,即密码串的第2,4,6,8位的值。
   
    用wasm反汇编daemon守护程序。(如proe的为ptc_d.exe)。
    查找字符串flexwrap,找到该地址后,在该地址之前的某个地址为call xxxxxx,记录下该地址。
    启动s-ice
    loader 该守护程序,设置程序执行断点 bpx 地址。
    然后用lmtools程序来启动该守护程序,中断在该守护程序中,该段程序的模板如下:
   
    :0048ACBD 8B450C                  mov eax, dword ptr [ebp+0C]
    :0048ACC0 50                      push eax
    :0048ACC1 8B4DF4                  mov ecx, dword ptr [ebp-0C]
    :0048ACC4 51                      push ecx                           注:ds:ecx即为特征名。
    :0048ACC5 8B15489B4E00            mov edx, dword ptr [004E9B48]
    :0048ACCB 52                      push edx
    :0048ACCC E8B5160000              call 0048C386                      该call为最靠近FLEXwrap的call
    :0048ACD1 83C40C                  add esp, 0000000C
    :0048ACD4 85C0                    test eax, eax
    :0048ACD6 0F852D010000            jne 0048AE09

    * Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
    |:0048AC87(C), :0048ACA7(C)
    |

    * Possible StringData Ref from Data Obj ->"FLEXwrap"
                                  |
    :0048ACDC 6814984D00              push 004D9814

    在内存中查找1234,或根据特征名找到一内存地址,即ds:ecx为特征名,bpm ds:ecx设置该地址为读写中断地址。然后追踪对特征名或1234
    进行读写的程序段,可以找到相关的算法。找到算法后,立即可以找到加密种子。
    根据debug.log的信息可以判断软件用的是长密码还是短密码的方式,也可以得到feature的信息。
由上面的方法找到的算法如下:
:00422781 EB0F                    jmp 00422792
        :00422783 8B9574FEFFFF            mov edx, dword ptr [ebp+FFFFFE74]
        :00422789 83C201                  add edx, 00000001
        :0042278C 899574FEFFFF            mov dword ptr [ebp+FFFFFE74], edx
        :00422792 83BD74FEFFFF08          cmp dword ptr [ebp+FFFFFE74], 00000008---------关键行  
        :00422799 7D2B                    jge 004227C6                          ---------关键行
        :0042279B 8B45F4                  mov eax, dword ptr [ebp-0C]           ---------关键行
        :0042279E 038574FEFFFF            add eax, dword ptr [ebp+FFFFFE74]
        :004227A4 33C9                    xor ecx, ecx
        :004227A6 8A08                    mov cl, byte ptr [eax]
        :004227A8 8B9574FEFFFF            mov edx, dword ptr [ebp+FFFFFE74]
        :004227AE 33C0                    xor eax, eax
        :004227B0 8A821CF84D00            mov al, byte ptr [edx+004DF81C]
        :004227B6 33C8                    xor ecx, eax
        :004227B8 8B9574FEFFFF            mov edx, dword ptr [ebp+FFFFFE74]
        :004227BE 888A1CF84D00            mov byte ptr [edx+004DF81C], cl
        :004227C4 EBBD                    jmp 00422783
        :004227C6 83BD78FEFFFF00          cmp dword ptr [ebp+FFFFFE78], 00000000
        :004227CD 0F85EB030000            jne 00422BBE
        :004227D3 83BD8CFEFFFF00          cmp dword ptr [ebp+FFFFFE8C], 00000000
        :004227DA 0F85E3020000            jne 00422AC3
        :004227E0 837DFC00                cmp dword ptr [ebp-04], 00000000
        :004227E4 0F85D9020000            jne 00422AC3
雪    币: 332
活跃值: (479)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
laoqian 8 2006-8-29 12:47
6
0
第一次接触这样的方法,学习一下。
雪    币: 229
活跃值: (22)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
nujia 3 2006-8-29 14:11
7
0
如果我要爆破呢,(堕落一把),关键函数是哪个?
flexlm 9.x 是lc_checkout,
雪    币: 305
活跃值: (121)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
marstj 2006-8-29 21:08
8
0
爆破很简单,用我上面介绍的方法找到算法,请注意以下的代码:
:004227BE 888A1CF84D00            mov byte ptr [edx+004DF81C], cl
该代码意味着ds:004DF81C中存储的就是license文件经算法计算后
得出的真正密码。该程序段返回后,必定要对真正的密码和license
文件中给出的码进行比较,只要改动比较转移的指令,就可爆破。
几个字节就可以解决问题。
雪    币: 166
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jb1968 2006-8-31 17:50
9
0
将jmp 00422783改为jnz?
雪    币: 116
活跃值: (599)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
powder 2006-8-31 20:01
10
0
flexlm 8.x,flexlm 9.x,flexlm 10.x都可爆破秒杀,而且只用改1bit(not 1 byte)。

那个洞在源码里2003年就有了,一直没改。

我一般用strings找含有flexlm字样的dll或exe,再用专杀工具flexlmkiller处理一下就搞定了。连调试器都不用。
雪    币: 215
活跃值: (12)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
sln 2 2006-9-1 02:31
11
0
请问10楼的朋友,你能不能讲的详细一点?
非常感谢。
还有,8楼的朋友,非常感谢,如果能出tutorial就更好了

“爆破很简单,用我上面介绍的方法找到算法,请注意以下的代码:
:004227BE 888A1CF84D00            mov byte ptr [edx+004DF81C], cl
该代码意味着ds:004DF81C中存储的就是license文件经算法计算后
得出的真正密码。该程序段返回后,必定要对真正的密码和license
文件中给出的码进行比较,只要改动比较转移的指令,就可爆破。
几个字节就可以解决问题。

比较转移的指令,能给给实例吗?
雪    币: 305
活跃值: (121)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
marstj 2006-9-1 10:24
12
0
将上面由算法自动计算出的密码串抄下。将该密码串填入license文件中,您就构造了一个正确的license文件,这样您连licesne守护程序都不用修改。最关键的是要找到算法,通过追踪程序对特征名的读写的方式一定可以找到算法。
雪    币: 213
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Pucua 2006-9-22 16:55
13
0
10楼的你的flexlmkiller哪有下啊?
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
upcysb 2006-9-22 17:41
14
0
Originally posted by Pucua
10楼的你的flexlmkiller哪有下啊?


可能是他自己编的软件,有地方下载估计是不可能的事!
雪    币: 827
活跃值: (242)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
YIJUN 2006-9-28 09:35
15
0
我查找字符串flexwrap的时候只在license目录下找到一次,而受保护的程序和dll中并没查到这个字符串,是不是这种方法就不行了哦

最初由 marstj 发布
首先构造一license文件(按照老的格式),其中的密码为长密码串,人为给出的四个字符串假设为1234
license文件的样本如下:
SERVER _hostname_ 0050ba652a27 1700
DAEMON daemon(为守护程序名,在实际中应改为被调试的软件的守护程序)
FEATURE XXXXC daemon 2000.1231 31-dec-2000 1 B18233245D3565C60BC6 \
........
雪    币: 305
活跃值: (121)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
marstj 2006-9-28 10:27
16
0
守护程序中一定有。
雪    币: 334
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
honghan 2017-7-28 15:45
17
0
Mark
游客
登录 | 注册 方可回帖
返回