首页
论坛
专栏
课程

[商业保护] [讨论]关于vendor_string的讨论

2011-8-16 15:14 7728

[商业保护] [讨论]关于vendor_string的讨论

2011-8-16 15:14
7728
我在调试一个FLEXlm保护程序的时候,发现两个文件有两处vendor_string交叉验证,大家分析一下这个算法。

第一个:
.text:1000CAC0                 sub     esp, 0E8h
.text:1000CAC6                 mov     eax, dword_10A657E0
.text:1000CACB                 xor     eax, esp
.text:1000CACD                 mov     [esp+0E8h+var_4], eax
.text:1000CAD4                 push    esi
.text:1000CAD5                 mov     esi, ecx
.text:1000CAD7                 push    4               ; size_t
.text:1000CAD9                 push    esi             ; char *
.text:1000CADA                 push    offset aHelo    ; "helo"
.text:1000CADF                 call    _strncmp
.text:1000CAE4                 add     esp, 0Ch
.text:1000CAE7                 test    eax, eax
.text:1000CAE9                 jnz     loc_1000CD0B
.text:1000CAEF                 push    93306Eh
.text:1000CAF4                 lea     eax, [esp+0F0h+var_74]
.text:1000CAF8                 push    offset aG7d     ; "g%7d"
.text:1000CAFD                 push    eax             ; char *
.text:1000CAFE                 call    _sprintf
.text:1000CB03                 mov     edx, dword_10A81BE4
.text:1000CB09                 push    4000h
.text:1000CB0E                 push    offset unk_10A81968
.text:1000CB13                 push    0
.text:1000CB15                 push    1
.text:1000CB17                 push    offset a1_0     ; "1.0"
.text:1000CB1C                 lea     ecx, [esp+10Ch+var_74]
.text:1000CB23                 push    ecx
.text:1000CB24                 push    edx
.text:1000CB25                 call    sub_1076B9D0
.text:1000CB2A                 add     esp, 28h
.text:1000CB2D                 test    eax, eax
.text:1000CB2F                 jz      short loc_1000CB6F
.text:1000CB31                 push    offset aErrorCouldNotC ; "Error: Could not connect to license ven"...
.text:1000CB36                 call    sub_10130ABA
.text:1000CB3B                 add     eax, 20h
.text:1000CB3E                 push    eax             ; FILE *
.text:1000CB3F                 call    _fprintf
.text:1000CB44                 add     esp, 8
.text:1000CB47                 push    offset aErrorCouldNotC ; "Error: Could not connect to license ven"...
.text:1000CB4C                 call    sub_10130ABA
.text:1000CB51                 add     eax, 40h
.text:1000CB54                 push    eax             ; FILE *
.text:1000CB55                 call    _fprintf
.text:1000CB5A                 add     esp, 8
.text:1000CB5D                 push    1388h           ; dwMilliseconds
.text:1000CB62                 call    ds:Sleep
.text:1000CB68                 push    1               ; uExitCode
.text:1000CB6A                 call    $LN27
.text:1000CB6F
.text:1000CB6F loc_1000CB6F:                           ; CODE XREF: sub_1000CAC0+6Fj
.text:1000CB6F                 mov     ecx, dword_10A81BE4
.text:1000CB75                 lea     eax, [esp+0F0h+var_78]
.text:1000CB79                 push    eax
.text:1000CB7A                 push    ecx
.text:1000CB7B                 call    sub_107768CE
.text:1000CB80                 mov     eax, [eax+268h]
.text:1000CB86                 add     esp, 8
.text:1000CB89                 cmp     byte ptr [eax], 61h
.text:1000CB8C                 jnz     short loc_1000CB94
.text:1000CB8E                 cmp     byte ptr [eax+2], 74h
.text:1000CB92                 jz      short loc_1000CBA7
.text:1000CB94
.text:1000CB94 loc_1000CB94:                           ; CODE XREF: sub_1000CAC0+CCj
.text:1000CB94                 cmp     dword_10A81BF4, 0
.text:1000CB9B                 jnz     short loc_1000CBA7
.text:1000CB9D                 mov     dword_10A81BF4, 201h
.text:1000CBA7
.text:1000CBA7 loc_1000CBA7:                           ; CODE XREF: sub_1000CAC0+D2j
.text:1000CBA7                                         ; sub_1000CAC0+DBj
.text:1000CBA7                 mov     eax, dword_10A81BE4
.text:1000CBAC                 push    0
.text:1000CBAE                 lea     edx, [esp+0F4h+var_78]
.text:1000CBB2                 push    edx
.text:1000CBB3                 push    eax
.text:1000CBB4                 call    sub_1076B690
.text:1000CBB9                 lea     ecx, [esp+0FCh+var_EC]
.text:1000CBBD                 push    ecx
.text:1000CBBE                 call    sub_10778E60
.text:1000CBC3                 lea     edx, [esp+100h+var_DC]
.text:1000CBC7                 push    edx
.text:1000CBC8                 lea     eax, [esp+104h+var_6C]
.text:1000CBCF                 push    offset aS_1     ; "%s"
.text:1000CBD4                 push    eax             ; char *
.text:1000CBD5                 call    _sprintf
.text:1000CBDA                 mov     ecx, dword_10A81BE4
.text:1000CBE0                 push    esi             ; char *
.text:1000CBE1                 push    ecx             ; int
.text:1000CBE2                 call    sub_10778CD0
.text:1000CBE7                 mov     esi, eax
.text:1000CBE9                 add     esp, 24h
.text:1000CBEC                 test    esi, esi
.text:1000CBEE                 jz      loc_1000CCAA
.text:1000CBF4                 mov     ecx, esi
.text:1000CBF6                 lea     edx, [ecx+1]
.text:1000CBF9                 lea     esp, [esp+0]
.text:1000CC00
.text:1000CC00 loc_1000CC00:                           ; CODE XREF: sub_1000CAC0+147j
.text:1000CC00                 mov     al, [ecx]
.text:1000CC02                 add     ecx, 1
.text:1000CC05                 test    al, al
.text:1000CC07                 jnz     short loc_1000CC00
.text:1000CC09                 sub     ecx, edx
.text:1000CC0B                 cmp     ecx, 4
.text:1000CC0E                 jbe     loc_1000CCAA
.text:1000CC14                 lea     edx, [esi+3]
.text:1000CC17                 cmp     esi, edx
.text:1000CC19                 mov     ecx, esi
.text:1000CC1B                 jnb     short loc_1000CC33
.text:1000CC1D                 mov     eax, 0Bh
.text:1000CC22                 sub     eax, esi
.text:1000CC24                 push    ebx
.text:1000CC25
.text:1000CC25 loc_1000CC25:                           ; CODE XREF: sub_1000CAC0+170j
.text:1000CC25                 mov     bl, al
.text:1000CC27                 add     bl, cl
.text:1000CC29                 add     [ecx], bl
.text:1000CC2B                 add     ecx, 1
.text:1000CC2E                 cmp     ecx, edx
.text:1000CC30                 jb      short loc_1000CC25
.text:1000CC32                 pop     ebx
.text:1000CC33
.text:1000CC33 loc_1000CC33:                           ; CODE XREF: sub_1000CAC0+15Bj
.text:1000CC33                 add     esi, 1
.text:1000CC36                 push    esi             ; char *
.text:1000CC37                 mov     byte ptr [edx], 0
.text:1000CC3A                 call    j__atol
.text:1000CC3F                 add     esp, 4
.text:1000CC42                 cmp     eax, 2
.text:1000CC45                 jge     loc_1000CD0B
.text:1000CC4B                 lea     edx, [esp+0F0h+var_6C]
.text:1000CC52                 push    edx
.text:1000CC53                 push    offset aErrorThisFlexn ; "Error: This FLEXnet-enabled client (%s)"...
.text:1000CC58                 call    sub_10130ABA
.text:1000CC5D                 add     eax, 20h
.text:1000CC60                 push    eax             ; FILE *
.text:1000CC61                 call    _fprintf
.text:1000CC66                 add     esp, 0Ch
.text:1000CC69                 lea     eax, [esp+0F0h+var_6C]
.text:1000CC70                 push    eax
.text:1000CC71                 push    offset aErrorThisFlexn ; "Error: This FLEXnet-enabled client (%s)"...
.text:1000CC76                 call    sub_10130ABA
.text:1000CC7B                 add     eax, 40h
.text:1000CC7E                 push    eax             ; FILE *
.text:1000CC7F                 call    _fprintf
.text:1000CC84                 add     esp, 0Ch
.text:1000CC87                 mov     dword_10A81BE4, 0
.text:1000CC91                 or      eax, 0FFFFFFFFh
.text:1000CC94                 pop     esi
.text:1000CC95                 mov     ecx, [esp+0ECh+var_8]
.text:1000CC9C                 xor     ecx, esp
.text:1000CC9E                 call    sub_10130355
.text:1000CCA3                 add     esp, 0E8h
.text:1000CCA9                 retn
第二个:
.text:1000CE78                 push    9330F0h
.text:1000CE7D                 lea     edx, [esp+20h+var_10]
.text:1000CE81                 push    offset aG7d     ; "g%7d"
.text:1000CE86                 push    edx             ; char *
.text:1000CE87                 call    _sprintf
.text:1000CE8C                 push    8               ; size_t
.text:1000CE8E                 lea     eax, [esp+2Ch+var_10]
.text:1000CE92                 push    eax             ; char *
.text:1000CE93                 push    edi             ; char *
.text:1000CE94                 call    _strncmp
.text:1000CE99                 add     esp, 18h
.text:1000CE9C                 test    eax, eax
.text:1000CE9E                 jnz     short loc_1000CEC3
.text:1000CEA0                 cmp     dword_10A81BF4, eax
.text:1000CEA6                 jnz     short loc_1000CEF9
.text:1000CEA8                 pop     edi
.text:1000CEA9                 mov     dword_10A81BF4, 21h
.text:1000CEB3                 pop     ebx
.text:1000CEB4                 mov     ecx, [esp+14h+var_4]
.text:1000CEB8                 xor     ecx, esp
.text:1000CEBA                 call    sub_10130355
.text:1000CEBF                 add     esp, 14h
.text:1000CEC2                 retn

文件下载地址:http://u.115.com/file/aq7r50k8#
dlls.zip

[公告][征集寄语] 看雪20周年年会 | 感恩有你,一路同行

最新回复 (3)
bobozhshb 2011-8-16 15:15
2
0
请大侠们讨论一下咯!
zhongtiany 2011-9-7 10:55
3
0
什么软件?可否透露?
zhangsj 2011-9-7 11:29
4
0
360 什么都杀了
游客
登录 | 注册 方可回帖
返回