首页
社区
课程
招聘
[原创]关于FLEXlm latest information by CrackZ 破解文章两个函数的解释
发表于: 2007-1-11 22:21 8711

[原创]关于FLEXlm latest information by CrackZ 破解文章两个函数的解释

sln 活跃值
2
2007-1-11 22:21
8711
事由:如题,我已经翻译了CrackZ文章,见:http://bbs.pediy.com/showthread.php?s=&threadid=35082
其中有两个函数:_l_n36_buff与_l_n36_buf CrackZ没有解释怎么找到,也没有解释清楚。热心的orchid88首先指出问题,并提出他的见解。我所做的是给大家提供个参考。
申明:所有实验都是用IDA pro做的,标注也是IDA依据sig自动标注,没有我人工分析的成分。
最初由 orchid88 发布
不错,辛苦了。有一些笔误请修正,比如文中多次把_l_n36_buff()误为_l_buf_36()。这篇文章我很早的时候就看过英文原文,里面有一点没有说清楚的就是_l_n36_buff()函数是怎么找到的,其实就是_l_sg()函数中非零不跳转处那个调用过后可以用calc seed工具找出seed的地方。请大家注意,_l_n36_buff()和_l_n36_buf()是不同的两个函数,一个是加密,另一个是解密函数。

基于此,我用IDA pro找了个带ECC加密的flexlm,对这两个函数解释如下:
1)关于_l_n36_buf()
这个函数在liaoqian方法定位l_sg部分可以找到,相信大家看地懂下面的代码

.text:092534E6.text:09253478 ; *************** S U B R O U T I N E ***************************************
.text:09253478
.text:09253478 ; Attributes: bp-based frame
.text:09253478
.text:09253478                 public l_sg
.text:09253478 l_sg            proc near               ; CODE XREF: l_good_lic_key+A3p
.text:09253478                                         ; l_good_lic_key+784p
.text:09253478                                         ; l_init+988p
.text:09253478                                         ; l_handshake+59p
.text:09253478
.text:09253478 var_34          = dword ptr -34h
.text:09253478 var_28          = dword ptr -28h
.text:09253478 var_24          = dword ptr -24h
.text:09253478 var_20          = dword ptr -20h
.text:09253478 var_1C          = dword ptr -1Ch
.text:09253478 var_18          = dword ptr -18h
.text:09253478 var_14          = dword ptr -14h
.text:09253478 var_10          = dword ptr -10h
.text:09253478 var_C           = dword ptr -0Ch
.text:09253478 var_8           = dword ptr -8
.text:09253478 arg_0           = dword ptr  8
.text:09253478 arg_4           = dword ptr  0Ch
.text:09253478 arg_8           = dword ptr  10h
.text:09253478
.text:09253478                 push    ebp
.text:09253479                 mov     ebp, esp
.text:0925347B                 sub     esp, 28h
.text:0925347E                 push    edi
.text:0925347F                 push    esi
.text:09253480                 push    ebx
.text:09253481                 mov     [ebp+var_14], 0
.text:09253488                 mov     [ebp+var_18], 6F7330B8h    =>这个很著名了,不懂的话看laoqian与newsearch的文章
.text:0925348F                 mov     [ebp+var_1C], 0
.text:09253496                 mov     [ebp+var_20], 0
.text:0925349D                 mov     [ebp+var_24], 3
.text:092534A4                 mov     eax, [ebp+arg_0]
.text:092534A7                 mov     edx, [eax+6Ch]
.text:092534AA                 mov     ax, [edx+0F54h]
.text:092534B1                 and     eax, 0FFFF8000h
.text:092534B6                 test    ax, ax
.text:092534B9                 jz      short loc_92534E6
.text:092534B9
.text:092534BB                 cmp     l_n36_buff, 0              =>l_n36_buff第一次
.text:092534C2                 jz      short loc_92534E6
.text:092534C2
.text:092534C4                 mov     eax, [ebp+arg_8]
.text:092534C7                 push    eax
.text:092534C8                 mov     eax, [ebp+arg_4]
.text:092534CB                 push    eax
.text:092534CC                 mov     eax, [ebp+arg_0]
.text:092534CF                 push    eax
.text:092534D0                 mov     ebx, l_n36_buff            =>l_n36_buff第二次
.text:092534D6                 mov     [ebp+var_28], ebx
.text:092534D9                 mov     edi, [ebp+var_28]
.text:092534DC                 call    edi                        =>这个CALL很著名了
.text:092534DE                 add     esp, 0Ch
.text:092534E1                 jmp     loc_9253628
.text:092534E1
.text:092534E6 ; ---------------------------------------------------------------------------
.text:092534E6

2)关于l_n36_buf函数,我依据CrackZ的文章,列个lc_new_job里的来说明吧
.text:0925D4F0
.text:0925D4F0 ; *************** S U B R O U T I N E ***************************************
.text:0925D4F0
.text:0925D4F0 ; Attributes: bp-based frame
.text:0925D4F0
.text:0925D4F0                 public lc_new_job
.text:0925D4F0 lc_new_job      proc near               ; CODE XREF: sub_92241D0+60p
.text:0925D4F0
.text:0925D4F0 var_1C          = dword ptr -1Ch
.text:0925D4F0 var_14          = dword ptr -14h
.text:0925D4F0 var_10          = dword ptr -10h
.text:0925D4F0 var_C           = dword ptr -0Ch
.text:0925D4F0 arg_0           = dword ptr  8
.text:0925D4F0 arg_4           = dword ptr  0Ch
.text:0925D4F0 arg_8           = dword ptr  10h
.text:0925D4F0 arg_C           = dword ptr  14h
.text:0925D4F0
.text:0925D4F0                 push    ebp
.text:0925D4F1                 mov     ebp, esp
.text:0925D4F3                 sub     esp, 14h
.text:0925D4F6                 push    esi
.text:0925D4F7                 push    ebx
.text:0925D4F8                 mov     eax, l_n36_buf              =>这个是什么?
.text:0925D4FD                 mov     [ebp+arg_4], eax
.text:0925D500                 lea     eax, [ebp+var_14]
.text:0925D503                 push    eax
.text:0925D504                 push    0
.text:0925D506                 push    0
.text:0925D508                 push    0
.text:0925D50A                 mov     eax, [ebp+arg_8]
.text:0925D50D                 push    eax
.text:0925D50E                 lea     eax, [ebp+var_C]
.text:0925D511                 push    eax
.text:0925D512                 mov     ebx, [ebp+arg_4]
.text:0925D515                 call    ebx                        =>这个呢?
.text:0925D517                 add     esp, 18h
.text:0925D51A                 push    0
.text:0925D51C                 push    0
.text:0925D51E                 push    0
.text:0925D520                 push    0
.text:0925D522                 push    0
.text:0925D524                 push    0
.text:0925D526                 mov     ebx, [ebp+arg_4]
.text:0925D529                 call    ebx
.text:0925D52B                 add     esp, 18h
.text:0925D52E                 mov     eax, [ebp+arg_C]
.text:0925D531                 push    eax
.text:0925D532                 mov     eax, [ebp+arg_8]
.text:0925D535                 push    eax
.text:0925D536                 lea     eax, [ebp+var_C]
.text:0925D539                 push    eax
.text:0925D53A                 mov     eax, [ebp+arg_0]
.text:0925D53D                 push    eax
.text:0925D53E                 call    lc_init
.text:0925D53E
.text:0925D543                 add     esp, 10h
.text:0925D546                 mov     eax, eax
.text:0925D548                 mov     [ebp+var_10], eax
.text:0925D54B                 cmp     [ebp+var_10], 0
.text:0925D54F                 jnz     loc_925D5F1
.text:0925D54F
.text:0925D555                 mov     eax, [ebp+arg_C]
.text:0925D558                 mov     edx, [eax]
.text:0925D55A                 mov     eax, [edx+6Ch]
.text:0925D55D                 mov     edx, [ebp+arg_C]
.text:0925D560                 mov     ecx, [edx]
.text:0925D562                 mov     edx, [ecx+6Ch]
.text:0925D565                 mov     esi, [edx+0F54h]
.text:0925D56B                 or      esi, 8000h
.text:0925D571                 mov     [eax+0F54h], esi
.text:0925D577                 mov     eax, [ebp+arg_C]
.text:0925D57A                 mov     edx, [eax]
.text:0925D57C                 mov     eax, [ebp+arg_4]
.text:0925D57F                 mov     [edx+618h], eax
.text:0925D585                 mov     eax, [ebp+arg_C]
.text:0925D588                 mov     edx, [eax]
.text:0925D58A                 cmp     word ptr [edx+440h], 2655h
.text:0925D593                 jnz     short loc_925D5B1
.text:0925D593
.text:0925D595                 push    0
.text:0925D597                 push    0
.text:0925D599                 push    0
.text:0925D59B                 push    2
.text:0925D59D                 push    0
.text:0925D59F                 push    0
.text:0925D5A1                 mov     ebx, [ebp+arg_4]
.text:0925D5A4                 call    ebx
.text:0925D5A6                 add     esp, 18h
.text:0925D5A9                 mov     eax, eax
.text:0925D5AB                 test    eax, eax
.text:0925D5AD                 jnz     short loc_925D5B1
.text:0925D5AD
.text:0925D5AF                 jmp     short loc_925D5D3
.text:0925D5AF
.text:0925D5B1 ; ---------------------------------------------------------------------------
.text:0925D5B1
.text:0925D5B1 loc_925D5B1:                            ; CODE XREF: lc_new_job+A3j
.text:0925D5B1                                         ; lc_new_job+BDj
.text:0925D5B1                 mov     eax, [ebp+arg_C]
.text:0925D5B4                 mov     edx, [eax]
.text:0925D5B6                 mov     eax, [edx+6Ch]
.text:0925D5B9                 mov     edx, [ebp+arg_C]
.text:0925D5BC                 mov     ecx, [edx]
.text:0925D5BE                 mov     edx, [ecx+6Ch]
.text:0925D5C1                 mov     esi, [edx+0F54h]
.text:0925D5C7                 or      esi, 40000h
.text:0925D5CD                 mov     [eax+0F54h], esi
.text:0925D5CD
.text:0925D5D3
.text:0925D5D3 loc_925D5D3:                            ; CODE XREF: lc_new_job+BFj
.text:0925D5D3                 mov     eax, [ebp+arg_C]
.text:0925D5D6                 mov     edx, [eax]
.text:0925D5D8                 mov     eax, [ebp+var_14]
.text:0925D5DB                 cmp     eax, [edx+5D0h]
.text:0925D5E1                 jle     short loc_925D5F1
.text:0925D5E1
.text:0925D5E3                 mov     eax, [ebp+arg_C]
.text:0925D5E6                 mov     edx, [eax]
.text:0925D5E8                 mov     eax, [ebp+var_14]
.text:0925D5EB                 mov     [edx+5D0h], eax
.text:0925D5EB
.text:0925D5F1
.text:0925D5F1 loc_925D5F1:                            ; CODE XREF: lc_new_job+5Fj
.text:0925D5F1                                         ; lc_new_job+F1j
.text:0925D5F1                 mov     edx, [ebp+var_10]
.text:0925D5F4                 mov     eax, edx
.text:0925D5F6                 jmp     short $+2
.text:0925D5F8                 lea     esp, [ebp-1Ch]
.text:0925D5FB                 pop     ebx
.text:0925D5FC                 pop     esi
.text:0925D5FD                 leave
.text:0925D5FE                 retn
.text:0925D5FE
.text:0925D5FE lc_new_job      endp
.text:0925D5FE
.text:0925D5FE ; ---------------------------------------------------------------------------
.text:0925D5FF   

希望对大家看CrackZ的文章有用。祝大家好运,我也算对文章的翻译有个交代。
这里感谢orchid88,感谢所有的人。

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
强烈支持。。。。
2007-1-11 22:30
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
坚决支持sln
2007-1-11 22:31
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
真是有心人阿  谢谢
2007-1-14 13:23
0
雪    币: 44
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fyd
5
使我这个菜鸟获益不浅.谢谢!
2007-1-14 17:31
0
雪    币: 44229
活跃值: (19960)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
6
刚好整理过论坛精华8中去(http://bbs.pediy.com/showthread.php?s=&threadid=35082 合并到这文)
2007-1-14 17:35
0
游客
登录 | 注册 方可回帖
返回
//