EBPIG
̽Ë÷ÔÓÖ¾
MHJDQ
֪ʶ¹²Ïí ×ÊÔ´¹²Ïí ×ÊÁϹ²Ïí
¡¾ÖÆ×÷³ÉÔ±¡¿³ÌʽÁÔÈË
¡¾·¢ÐÐʱ¼ä¡¿2000-10-7
¡¾ÆÚ¿¯ºÅÂë¡¿µÚÊ®ÎåÆÚ
¡¾ÍøÕ¾µØÖ·¡¿http://programhunter.com

¡¾±à¼­¼ÄÓï¡¿

    
    {~._.~} 
     ( Y )  
    ()~*~() 
    (_)-(_) 
ÔÓÖ¾ÒѾ­·¢ÐÐÁ˵½µÚÊ®ÎåÆÚÁË£¬¸Ðл´ó¼ÒµÄÖ§³Ö¡£½ñÌìÊ×ÏÈҪ˵µÄÊÇ£¬´ó¼Ò¿ÉÄÜÒѾ­ÊÕÁËÎҵĸİæ֪ͨÁË°É¡£ÎÒµÄÖ÷Ò³ÒѾ­ÓкܴóµÄ¸Ä¶¯µÄ¡£´ó¼Ò¿ÉÒÔ¿´Ò»¿´°É¡£ÏÖÔÚ£¬ÎÒ»áŬÁ¦½«ÔÓÖ¾°ìºÃ£¬Îª´ó¼Ò¸üºÃµÄ·þÎñ¡£Í¬Ê±Ò²Ï£Íû´ó¼ÒÄܹ»½«×Ô¼ºµÄ×÷Æ·Óë´ó¼ÒÀ´¹²Ïí¡£ÕâÑù²ÅÄÜ´ïµ½ÎÒ°ìÔÓÖ¾µÄ×ÚÖ¼¡£Ð»Ð»´ó¼ÒÁË¡£ÿ
¡¾Ä¿ ÿÿ ¼¡¿
ÿÿÿÿ&ÆƽâÐĵÃ
1¡­¡­Regwasher V1.02 0376£¨×¢²áÂëƪ£© ³ÌʽÁÔÈË
2¡­¡­Regwasher V1.02 0376£¨ÍÑ¿Çƪ£© ³ÌʽÁÔÈË
3¡­¡­ÓÐÉùÓÐÉ« v3.16Æƽâ½Ì³Ì wind
  4¡­¡­Cracking the ShareLock Protection System XaVaX
ÿÿÿÿ%³õѧÌìµØ
ÿÿÿÿOÎÊÌâ´ðÒÉ
ÿÿÿÿ4ÍøÕ¾½éÉÜ
ÿÿÿÿ,ÔÓÖ¾ÐÅÏä
&¡¾ÆƽâÐĵá¿
          Regwasher V1.02 0376 ×¢²áÂëƪ
                      ³ÌʽÁÔÈË
¼ò½é£º´Ó×ÖÃæ¾Í¿ÉÒÔÖªµÀÕâ¸öÈí¼þÊÇÒ»¸öÇåÀí×¢²á±íµÄÈí¼þ£¬ÔÚÕâÀï¾Í²»¶à˵ÁË¡£
×·×Ù£ºRN£º0123456789
   Õâ¸öÈí¼þÊÇÒ»¸öÍøÓÑÈÃÎÒÆƽâµÄ£¬µ«ÊÇÔÚÄÇʱûÓÐʱ¼äÀ´Ñо¿Ëü£¬½ñÌìÓеãʱ¼äÕýºÃ¾Í
¿ªÊ¼¶ÔËü½øÐÐÁËÑо¿£¬Õâ¸öÈí¼þÍøÓѽéÉÜΪ£º
   ÓÃFIÕì²â·¢ÏÖËüÓÃUPX¼Ó¿Ç£¬ÓÃPRODUMP½â¿Ç±ØÐëÒªÖؽ¨PEÍ·£¬²»È»½â¿Çºó²»ÄÜÔËÐУ»½â
ºó·¢ÏÖËü»¹ÓÃPE¼ÓÁË¿Ç£¬ÓÚÊÇÓÖÓÃPRODUMP½â¿Ç£¬µ«¾Í²»³É¹¦£¬²»ÖªºÎ¹Ê£»ËüÊÇͨ¹ýʹÓôÎ
ÊýÀ´¿ØÖƵģ¬ÎÒÕÒµ½ÁËÕâ¸ö´ÎÊý´æÈëµÄ×¢²á±íÏµ«ÎÒ²»Ïëÿ´Î¶¼È¥¸Ä£¬»¹ÊÇÏë³¹µ×ÆƵôËü
£¬ËùÒÔÇëÄúÖ¸½ÌÈçºÎÈ¥Õâ¸ö¿Ç¡£ËæП½Éϴ˳ÌÐò¡£
   ÎÒÔËÐÐÕâ¸öÈí¼þºó£¬·¢ÏÖûÓÐÊäÈë×¢²áÂëµÄµØ·½£¬ÎÒÒÔΪÊÇkeyÎļþ±£»¤µÄÐÎʽ£¬µ«ÊÇÔÚ
ÎÒ½áÊø³ÌÐòʱ£¬³ÌÐòÌáʾÎÒ×¢²á²»£¿ÎÒµã»÷×¢²áºó£¬³öÏÖÒ»¸ö×¢²á´°¿Ú£¬ÄÇôÎҾͿÉÒÔʹÓÃ
Õý³£µÄÆƽⷽ·¨À´ÊÔ×ŶÔËü½øÐÐÆƽ⡣
   ʹÓÃbpx hmemcpy£¬ÒòΪÕâ¸öÈí¼þÊDZ»¼Ó¿ÇÁË£¬ËùÒÔÎÒûÓз´»ã±àËü¡£Ö»ºÃʹÓÃÊÖ¶¯Ð´Õâ
¸ö½Ì³ÌÁË¡£Õâ¸öÈí¼þÊÇʹÓÃVB±àдµÄ£¬ËùÒÔÆƽâʱÓÐÒ»¶¨µÄÄѶȣ¬µ«ÊÇÖ»ÒªÄã×Ðϸ¸ú×Ù»¹ÊÇ
Ï൱Õҵġ£
  ±»³ÌÐòÀ¹Ïºó£¬Äã¾Í¿ÉÒÔ¿´µ½ÈçϳÌʽ£º
66035c98  call user32!callwindowproca
          jmp  66020d09
Ä㽫´ÓÕâÀï³öÀ´ÁË£¬ÄÇôÏÖÔÚÒªÏòÏÂ×·×ÙÁË¡£
66020d9   call user32!definwindowproca
          mov [ebp-04] eax               eax=A(10)
          cmp dword [ebp-08] byte 00
          jnz 66020b16
ÕâÀïÄã¿ÉÒÔ¿´µ½eaxΪ10£¬Õâ¸öÖµ¾ÍÊÇRNµÄ¸öÊý£¬Ö»ÒªÄܹ»¿´µ½Õâ¸öÖµ¾Í²î²»ÉÙ¿ÉÒÔÓÐÆƽâ
ËüµÄ¿ÉÄÜ¡£go on¡£
660b9f2c  call 660208d7
          cmp ebx byte 0c
          mov [ebp+14] eax            eax=A
          ja 660ba71b
          jz 660ba60b
ÔÚÕâÀï³ÌÐò±È½ÏÄãÊäÈë×¢²áÂë¸öÊý£¬ÄÇôÄÄÒ»¸ö²ÅÊÇÕýÈ·ÄØ£¿´ó¼ÒÒª¼±£¬ÏòÏ¿´Ò»¿´¾ÍÖªµÀÁË¡£
  µ±ÄãÀ´µ½ÏÂÃæʱ£¬Äã»á·¢ÏÖ½«ÒªÔÚÏÂÃæ×ߺܳ¤Â·£¬Õâ¸ö¾ÍÊÇÐí¶à³õѧÕßûÓÐ×·×Ùµ½×¢²áÂë
Ô­Òò£¬ÏÖÔÚÄãͬÎÒÒ»ÆðÏòÏ¿´Ò»¿´ÄÇÀï¿ÉÒԵõ½×¢²áÂë¡£
6607a6e3  mov eax [eax]
          test eax eax 
          jz 6607a700
          mov ebx [ebx]
          test ebx ebx     ebx=0123456789
          jnz 6607a6fc
          mov ebx 66004fa0
6607a6fc  push ebx 
          call eax
          pop ecx
ÔÚÕâÀïÄã¿ÉÒÔ¿´µ½ÃÇÊäÈëµÄ×¢²áÂ룬ÄÇôÄǸöcallÓÐʲôÓô¦ÄØ£¿ÔÚ½øÈë·ÖÎöºó·¢ÏÖ¶Ô×¢²á
ÂëûÓÐʲôÓô¦£¬ÄÇÎÒÃÇÏòÏÂ×·×Ù¡£
6602cae9  push dword [ebp+10]
          push dword [ebp+0c]    <-RN:0123456789
          call 6602cc2a
          cmp dword [ebp+0c] 00
          mov esi eax
          jz 6602cb0d
 ÔÚÉÏÃæÄãÓÖ¿ÉÒÔ¿´µ½ÎÒÃÇÊäÈë×¢²áÂ룬ÏÂÃæÄǸöcallÊÇ·ñÓÖÓÐÓô¦ÄØ£¿ÆäËüËü¶ÔµÃµ½×¢²á
Â뻹ÊÇûÓÐÌ«´óµÄÓô¦£¬ÏÖÔÚÈç¹ûÄãÔÙÏòϾͽ«½øÈëÒ»¸ö±È½ÏÄѵĵط½ÁË£¬ÔÚÕâÀïÄ㽫ѭ»·
ºÜ¶à´Î£¬ÎÒÊÇÈçºÎ×·×ÙÄØ£¿ÎÒʹÓÃdÃüÁî¿´µ½ÕâÀïµÄ±È½ÏÌØÊ⣬ÈçÏ£º
660fd60c  pop eax
          push dword [edi]
          mov [edi] eax
          call oleaut32!sysfreestring
          xor eax eax
          mov al [esi]
          inc esi
          jmp 
  ÔÚÕâÀïÈç¹ûÄãÏÂÒ»¸öÖжϻ°£¬Ä㽫ÔÚÕâÀïÖжÏËĴΣ¬Èç¹ûÄã·Ö±ðʹÓÃd eaxµÄÃüÁÄã¾Í
¿ÉÒÔ¿´µ½ÈçÏÂÊý¾Ý£º
  1)  2772
  2)  z'HH-U2772
  3)  4332
  4)  z'HH-U27724332
  ÏÖÔÚ¿ÉÒÔ²Âһϣ¬Õâ¸ö×îºó×Ö·û´®ÊDz»ÊÇ×¢²áÂ룬ÆäʵÕâ¸ö¾ÍÊÇ×¢²áÂë¡£Ö»ÊÇ»¹Ã»ÓÐÕÒµ½
±È½ÏµØ·½£¬ÏÖÔھ͸æËßÄã³ÌÐò½«ÔÚÄÇÀï½øÐбȽϡ£
  ³ÌÐòÉÏÃæתËĴκ󣬾ͺܿìÀ´µ½ÕâÀ
660fd93b  push 00
          call 66028a38
          cmp al 00
          mov eax 00
          setz al 
          neg al
 ÕâÀï¾ÍÊDZȽϹؼüµØ·½£¬ÔÚÕâÀïÄ㻹ûÓп´µ½±È½Ï¹ý³Ì£¬½øÈë¾Í¿ÉÒÔ¡£
66028a38  xor cmp [ebp+04] eax 
          push dword [esp+0c]
          push dword [esp+0c]
          push eax
          call msvbvm60!_vbastrcmp
          ret 00
  ´ó¼ÒÕâÀï¾Í¿ÉÒÔ¿´µ½³ÌÐòʹÓÃVB6.0±àд£¬Õâ¸ö_vbastrcmpº¯Êý±È½Ï×Ö·ûº¯Êý¡£Òª¿´ÈçºÎ
±È½Ï»¹µÃ½øÈë²ÅÐеġ£
66044177  push dword 00030001
          push dword [esp+08]
          push dword [esp+10]   fake-RN:0123456789
          push dword [esp+18]   true-RN:z'HH-U27724332
          call oleaut32!vavbstrcmp
          test eax eax
          jl 660472ce
          dec eax 
          ret
 OK£¬µ½´ïÉÏÃæ´ó¼Ò¾Í¿ÉÒÔ¿´µ½×¢²áÂë¡£ÎÒµÄ×¢²áÂëÆƽ⹤×÷Ò²¾Í¿ÉÒÔ½áÊø¡£ÏÂÒ»¸ö¹¤×÷Èç
ºÎ¶ÔÕâ¸öÈí¼þ½øÐÐÍѿǹ¤×÷¡£
×¢²á±ê¼Ç¼Ç¼ÕâÀ
HKEY_LOCAL_MACHINE\Software\z'HH STUDiOz Inc.\RegWasher\Register\Rzz

                   *************************
                   *    RN:z'HH-U27724332  *
                   *************************
·µ»Ø
                 Regwasher V1.02 0376 ÍÑ¿Çƪ
                     ³ÌʽÁÔÈË
  ½ñÌ쿪ʼ¶ÔÕâ¸öÈí¼þ½øÐÐÍÑ¿Ç£¬Õâ¸öÈí¼þͨ¹ý¼Ó¿ÇÕì²ìÈí¼þ²éµÃËüÊÇͨ¹ýupx 0.81¼Ó¿ÇµÄ
£¬ÊÇ·ñʹÓÃ×Ô¶¯ÍÑ¿ÇÄØ¡£ÔÚÕâÀïÎÒÏÈʹÓÃÊÖ¶¯ÍÑ¿Ç£¬ÄÇôÈçºÎÍÑ¿ÇÄØ£¿¿´ÏÂÃæ¾ÍÖªµÀÁË¡£
//******************** Program Entry Point ********
:00461E00 60                      pushad
:00461E01 BE00804400              mov esi, 00448000
:00461E06 8DBE0090FBFF            lea edi, dword ptr [esi+FFFB9000]
:00461E0C 57                      push edi
:00461E0D 83CDFF                  or ebp, FFFFFFFF
:00461E10 EB10                    jmp 00461E22
  ³ÌÐò´ÓÕâÀ↑ʼ£¬ÏòϽøÐÐ×·×Ù¡£
:00461E22 8B1E                    mov ebx, dword ptr [esi]
:00461E24 83EEFC                  sub esi, FFFFFFFC
:00461E27 11DB                    adc ebx, ebx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00461E20(C)
|
:00461E29 72ED                    jb 00461E18
:00461E2B B801000000              mov eax, 00000001

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00461E3F(C), :00461E4A(C)
|
:00461E30 01DB                    add ebx, ebx
:00461E32 7507                    jne 00461E3B
  ÔÚÕâÀïÄ㽫ÓÐÒ»¸öСѭ»·£¬µ«ÊÇûÓÐÓô¦£¬ÏòÏ£º
:00461E34 8B1E                    mov ebx, dword ptr [esi]
:00461E36 83EEFC                  sub esi, FFFFFFFC
:00461E39 11DB                    adc ebx, ebx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00461E32(C)
|
:00461E3B 11C0                    adc eax, eax
:00461E3D 01DB                    add ebx, ebx
:00461E3F 77EF                    ja 00461E30
:00461E41 7509                    jne 00461E4C
:00461E43 8B1E                    mov ebx, dword ptr [esi]
:00461E45 83EEFC                  sub esi, FFFFFFFC
:00461E48 11DB                    adc ebx, ebx
:00461E4A 73E4                    jnb 00461E30

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00461E41(C)
|
:00461E4C 31C9                    xor ecx, ecx
:00461E4E 83E803                  sub eax, 00000003
:00461E51 720D                    jb 00461E60
:00461E53 C1E008                  shl eax, 08
:00461E56 8A06                    mov al, byte ptr [esi]
:00461E58 46                      inc esi
:00461E59 83F0FF                  xor eax, FFFFFFFF
:00461E5C 7474                    je 00461ED2     ****
:00461E5E 89C5                    mov ebp, eax

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00461E51(C)
|
:00461E60 01DB                    add ebx, ebx
:00461E62 7507                    jne 00461E6B
:00461E64 8B1E                    mov ebx, dword ptr [esi]
:00461E66 83EEFC                  sub esi, FFFFFFFC
:00461E69 11DB                    adc ebx, ebx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00461E62(C)
|
:00461E6B 11C9                    adc ecx, ecx
:00461E6D 01DB                    add ebx, ebx
:00461E6F 7507                    jne 00461E78
:00461E71 8B1E                    mov ebx, dword ptr [esi]
:00461E73 83EEFC                  sub esi, FFFFFFFC
:00461E76 11DB                    adc ebx, ebx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00461E6F(C)
|
:00461E78 11C9                    adc ecx, ecx
:00461E7A 7520                    jne 00461E9C
:00461E7C 41                      inc ecx

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00461E8C(C), :00461E97(C)
|
:00461E7D 01DB                    add ebx, ebx
:00461E7F 7507                    jne 00461E88
:00461E81 8B1E                    mov ebx, dword ptr [esi]
:00461E83 83EEFC                  sub esi, FFFFFFFC
:00461E86 11DB                    adc ebx, ebx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00461E7F(C)
|
:00461E88 11C9                    adc ecx, ecx
:00461E8A 01DB                    add ebx, ebx
:00461E8C 77EF                    ja 00461E7D
:00461E8E 7509                    jne 00461E99
:00461E90 8B1E                    mov ebx, dword ptr [esi]
:00461E92 83EEFC                  sub esi, FFFFFFFC
:00461E95 11DB                    adc ebx, ebx
:00461E97 73E4                    jnb 00461E7D

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00461E8E(C)
|
:00461E99 83C102                  add ecx, 00000002

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00461E7A(C)
|
:00461E9C 81FD00F3FFFF            cmp ebp, FFFFF300
:00461EA2 83D101                  adc ecx, 00000001
:00461EA5 8D142F                  lea edx, dword ptr [edi+ebp]
:00461EA8 83FDFC                  cmp ebp, FFFFFFFC
:00461EAB 7E0F                    jle 00461EBC

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00461EB4(C)
|
:00461EAD 8A02                    mov al, byte ptr [edx]
:00461EAF 42                      inc edx
:00461EB0 8807                    mov byte ptr [edi], al
:00461EB2 47                      inc edi
:00461EB3 49                      dec ecx
:00461EB4 75F7                    jne 00461EAD
:00461EB6 E963FFFFFF              jmp 00461E1E
:00461EBB 90                      nop

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00461EAB(C), :00461EC9(C)
|
:00461EBC 8B02                    mov eax, dword ptr [edx]
:00461EBE 83C204                  add edx, 00000004
:00461EC1 8907                    mov dword ptr [edi], eax
:00461EC3 83C704                  add edi, 00000004
:00461EC6 83E904                  sub ecx, 00000004
:00461EC9 77F1                    ja 00461EBC
:00461ECB 01CF                    add edi, ecx
:00461ECD E94CFFFFFF              jmp 00461E1E
 ³ÌÐòÔÚÕâÀォÓÐÒ»¸öÑ­»·£¬ËüÔÚÕâÀォѭ»·²»ÉٴΣ¬ÄÇôËü½«ÌøÔ¾µ½ÄÇÀïÄØ£¿ÔÚ±ê¼Ç****
µÄµØ·½´ó¼Ò¾ÍÖªµÀ³ÌÐò½«ÌøÔ¾µ½ÄÇÀïÁË°É¡£µ±È»ÊÇÌøÔ¾µ½ÏÂÃæµÄµØÖ·ÉÏÁË¡£
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00461E5C(C)
|
:00461ED2 5E                      pop esi
:00461ED3 2B7FFC                  sub edi, dword ptr [edi-04]
:00461ED6 57                      push edi
:00461ED7 89F7                    mov edi, esi
:00461ED9 B94E000000              mov ecx, 0000004E

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00461EE5(C), :00461EEA(C)
|
:00461EDE 8A07                    mov al, byte ptr [edi]
:00461EE0 47                      inc edi
:00461EE1 2CE8                    sub al, E8
:00461EE3 3C01                    cmp al, 01
:00461EE5 77F7                    ja 00461EDE
:00461EE7 803F06                  cmp byte ptr [edi], 06
:00461EEA 75F2                    jne 00461EDE
:00461EEC 8B07                    mov eax, dword ptr [edi]
:00461EEE 8A5F04                  mov bl, byte ptr [edi+04]
:00461EF1 66C1E808                shr ax, 08
:00461EF5 C1C010                  rol eax, 10
:00461EF8 86C4                    xchg ah, al
:00461EFA 29F8                    sub eax, edi
:00461EFC 80EBE8                  sub bl, E8
:00461EFF 01F0                    add eax, esi
:00461F01 8907                    mov dword ptr [edi], eax
:00461F03 83C705                  add edi, 00000005
:00461F06 89D8                    mov eax, ebx
:00461F08 E2D9                    loop 00461EE3
:00461F0A 5F                      pop edi

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00461F2D(C)
|
:00461F0B 8B07                    mov eax, dword ptr [edi]
:00461F0D 09C0                    or eax, eax
:00461F0F 7443                    je 00461F54
:00461F11 8B5F04                  mov ebx, dword ptr [edi+04]
:00461F14 8D843050170600          lea eax, dword ptr [eax+esi+00061750]
:00461F1B 01F3                    add ebx, esi
:00461F1D 50                      push eax
:00461F1E 83C708                  add edi, 00000008
:00461F21 FF968C170600            call dword ptr [esi+0006178C]
:00461F27 92                      xchg eax,edx

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00461F50(U)
|
:00461F28 8A07                    mov al, byte ptr [edi]
:00461F2A 47                      inc edi
:00461F2B 08C0                    or al, al
:00461F2D 74DC                    je 00461F0B
:00461F2F 52                      push edx
:00461F30 89F9                    mov ecx, edi
:00461F32 7907                    jns 00461F3B
:00461F34 0FB707                  movzx eax, word ptr [edi]
:00461F37 47                      inc edi
:00461F38 50                      push eax
:00461F39 47                      inc edi
:00461F3A B95748F2AE              mov ecx, AEF24857
:00461F3F 52                      push edx
:00461F40 FF9690170600            call dword ptr [esi+00061790]
:00461F46 5A                      pop edx
:00461F47 09C0                    or eax, eax
:00461F49 7407                    je 00461F52
:00461F4B 8903                    mov dword ptr [ebx], eax
:00461F4D 83C304                  add ebx, 00000004
:00461F50 EBD6                    jmp 00461F28
  ´ÓÉÏÃ濪ʼÓÖ½øÈëÁËÑ­»·ÖУ¬ÄÇôÏÖÔÚÔÙ²éÕÒÌøÔ¾³ö¿Ú£¬ÏòÉÏ¿´
:00461F0F 7443                    je 00461F54
  ÕâÀï¿ÉÒÔÌøÔ¾µ½00461F54ÖУ¬½«¹â±êÍ£ÔÚÕâ¸öµØÖ·ÉÏ£¬°´F7¾Í¿ÉÒÔ¡£
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00461F0F(C)
|
:00461F54 61                      popad
:00461F55 E99EF2F9FF              jmp 004011F8
  À´µ½ÕâÀïʱ£¬Äã¿ÉÒÔ¿´µ½Õâ¸ö004011F8µØַͬ00461F55µØÖ·ÓкܴóµÄ²»Í¬£¬ÄÇôÕâÀï¾ÍÊÇ
³ÌÐòµÄ¹Ø¼üµØ·½£¬Ò²¾ÍÊÇÎÒÃÇÏëÒªÕҵĵط½£¬µ±³ÌÐòÌøµ½004011F8ºó£¬ÏÂÃüÁîmakepe reg.e
xeºó£¬Ëü½«×Ô¶¯Éú³É¿ÉÒÔÖ´ÐеÄÎļþ¡£ÄãÔÙÊÔÒ»ÊÔ£¬Õâ¸ö³ÌÐòÖ´ÐÐʱûÓгö´í£¬ËùÒÔ½ñÌìµÄ
ÍѿǾÍÊdzɹ¦ÁË¡£Èç¹ûÄãʹÓÃÕì²ìÈí¼þ²éһϷ¢ÏÖ£¬ËüÒѾ­ÊÇÒ»¸öÆÕͨ³ÌÐòÁË£¬Ã»ÓмӿÇÁË
¡£

  ÏÖÔÚʹÓÃProcdump 1.62°æÀ´¶ÔËü½øÐÐ×Ô¶¯ÍÑ¿Ç£¬ÒòΪ֪µÀËüÊÇʹÓÃupx 0.81¼Ó¿ÇµÄ£¬Ëù
ÒÔ¾ÍÑ¡ÔñupxÀ´ÍÑ¿Ç£¬Ò»»á³É¹¦ÁË£¬¿ÉÒÔ±£´æÎļþÁË¡£´æΪ2.exe£¬¿ÉÊÇÖ´ÐÐʱȴÌáʾ·Ç·¨²Ù
×÷£¬ËµÃ÷×Ô¶¯ÍÑ¿ÇÓÐÒ»¶¨µÄ´íÎó¡£
·µ»Ø
±ê Ìâ:ÓÐÉùÓÐÉ« v3.16Æƽâ½Ì³Ì (6ǧ×Ö)
·¢ÐÅÈË:wind[CCG]

                    ÓÐÉùÓÐÉ« v3.16Æƽâ½Ì³Ì 
ºÁÎÞÒâÒåµÄÆƽ⣬Çë´ó¼ÒÒÔºó²»ÒªÈÃÎÒÆƽâ´ËÀàÈí¼þ£¡Ã»ÓÐʹÓüÛÖµ£¬Ò²Ã»ÓÐÆƽâ¼ÛÖµ£¡À¬»øÈí¼þÒ»¸ö£¡£¡ 
¿ªÊ¼½øÈëÕýÌ⣺ 
* Referenced by a (U)nconditional or (C)onditional Jump at Address: 
|:0046FAC2(C) 
| 
:0046FB29 E86E45F9FF              call 0040409C 
:0046FB2E 50                      push eax 
:0046FB2F 8B432C                  mov eax, dword ptr [ebx+2C] 
:0046FB32 50                      push eax 
:0046FB33 E84C7AF9FF              call 00407584 
:0046FB38 8BF0                    mov esi, eax 
:0046FB3A 66837B4A00              cmp word ptr [ebx+4A], 0000 
:0046FB3F 7408                    je 0046FB49 
:0046FB41 8BD3                    mov edx, ebx 
:0046FB43 8B434C                  mov eax, dword ptr [ebx+4C] 
:0046FB46 FF5348                  call [ebx+48] 
´ÓÎÒÃDz鿴¿ÉµÃ£¬46fb33ÄǸöcallÊǺô½Ð¹ýÆÚ´°¿ÚµÄÄǸöcall,ÎÒÃÇ¿ÉÒÔÓÃtrw2000À´Éè¶Ï 
£¬´ø¹ýÕâ¸öcall£¬ÄǸöÌÖÑáµÄnag¾ÍÅܳöÀ´ÁË£¡Èç¹ûÄãÏëÐÞ¸Ä46fb3fÄǸöÌøתÀ´ÈóÌÐò¼ÌÐø 
ÔËÐÐËû¾Í»áÅܳöÀ´¸æËßÄãÐ޸ijÌÐò»òȱÉÙÎļþÖ®ÀàµÄ·Ï»°£¡ÎÒÃDz»ÓùÜÕâÀÎÒÃÇÍùÉÏ×ߣ¬
À´µ½ÈçϳÌÐò¶Î£º 
* Referenced by a CALL at Addresses: 
|:004E096D  , :004E0A2D  , :004E0AEF  , :004E0C1A  , :004E6635  
| 
:0046FAE8 55                      push ebp 
:0046FAE9 8BEC                    mov ebp, esp 
:0046FAEB 6A00                    push 00000000 
:0046FAED 53                      push ebx 
:0046FAEE 56                      push esi 
:0046FAEF 8BD8                    mov ebx, eax 
:0046FAF1 33C0                    xor eax, eax 
:0046FAF3 55                      push ebp 
:0046FAF4 685FFB4600              push 0046FB5F 
:0046FAF9 64FF30                  push dword ptr fs:[eax] 
:0046FAFC 648920                  mov dword ptr fs:[eax], esp 
:0046FAFF 8D55FC                  lea edx, dword ptr [ebp-04] 
:0046FB02 8B4338                  mov eax, dword ptr [ebx+38] 
:0046FB05 8B08                    mov ecx, dword ptr [eax] 
:0046FB07 FF511C                  call [ecx+1C] 
:0046FB0A 66837B4200              cmp word ptr [ebx+42], 0000 
:0046FB0F 7408                    je 0046FB19 
:0046FB11 8BD3                    mov edx, ebx 
:0046FB13 8B4344                  mov eax, dword ptr [ebx+44] 
:0046FB16 FF5340                  call [ebx+40] 
Èç¹û³ÌÐòÀ´µ½ÕâÀï¾Í±ØÈ»»á³öÏÖ¹ýÆڵĶԻ°¿ò²¢ÖÕÖ¹³ÌÐòµÄʹÓã¬ËùÒÔ³ÌÐòÖ»Òª²»À´µ½ÕâÀï¾ÍOKÁË£¡ 
¿ÉÒÔ¿´¼ûÓÐ5¸öµØ·½ºô½ÐÕâ¸öµØ·½£¬ÎÒÃǹýÈ¥¿´¿´£¬Ê×ÏÈÀ´µ½4e096d£¬ÈçÏ£º 
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses: 
|:004E0917(C), :004E0920(C), :004E0929(C), :004E0932(C), :004E093B(C) 
|:004E0944(C), :004E094D(C), :004E0956(C) 
| 
:004E0961 8BC3                    mov eax, ebx 
:004E0963 E8D48DFFFF              call 004D973C 
:004E0968 A1B8BC4E00              mov eax, dword ptr [004EBCB8] 
:004E096D E876F1F8FF              call 0046FAE8 
:004E0972 EB45                    jmp 004E09B9 
ÕâÀïÖ»ÊÇÒ»¸ö¼òµ¥µÄµ÷Óã¬Ã»ÓÐÎÒÃÇÆƽâÐèÒªµÄ¶«Î÷£¬ÍùÉÏ¿´£¬À´µ½£º 
:004E08CF B8580F4E00              mov eax, 004E0F58 
:004E08D4 E887D6F7FF              call 0045DF60 
:004E08D9 8B55CC                  mov edx, dword ptr [ebp-34] 
:004E08DC A1C8BC4E00              mov eax, dword ptr [004EBCC8] 
:004E08E1 59                      pop ecx 
:004E08E2 8B30                    mov esi, dword ptr [eax] 
:004E08E4 FF5610                  call [esi+10] 
:004E08E7 A2B6BC4E00              mov byte ptr [004EBCB6], al 
:004E08EC 803DB6BC4E0000          cmp byte ptr [004EBCB6], 00 
:004E08F3 0F8581020000            jne 004E0B7A 
ÎÒÃÇ¿ÉÒÔÐÞ¸Ä4e08f3µÄÌøתÀ´Ìø¹ý¸Õ¸ÕµÄµ÷Ó㬰ÑËû¸Ä³Éjmp 4e0b7a¾Í¿ÉÒÔÁË£¡¼ÌÐøÎÒÃÇ 
µÄÆƽâÀú³Ì,Ìøתµ½4e0b7a,ÎÒ¿´ÁËÒ»ÏÂûÓÐʲô£¬ÍùÏÂÀ´µ½£º 
:004E0B90 B8FC114E00              mov eax, 004E11FC 
:004E0B95 E8C6D3F7FF              call 0045DF60 
:004E0B9A 8B55A4                  mov edx, dword ptr [ebp-5C] 
:004E0B9D A1C8BC4E00              mov eax, dword ptr [004EBCC8] 
:004E0BA2 59                      pop ecx 
:004E0BA3 8B30                    mov esi, dword ptr [eax] 
:004E0BA5 FF5608                  call [esi+08] 
:004E0BA8 8BD0                    mov edx, eax 
:004E0BAA 8B8340040000            mov eax, dword ptr [ebx+00000440] 
:004E0BB0 E8C714F9FF              call 0047207C 
:004E0BB5 8B8340040000            mov eax, dword ptr [ebx+00000440] 
:004E0BBB 8B9038010000            mov edx, dword ptr [eax+00000138] 
:004E0BC1 83FA1E                  cmp edx, 0000001E 
:004E0BC4 7D48                    jge 004E0C0E 
:004E0BC6 833D6CBC4E001E          cmp dword ptr [004EBC6C], 0000001E 
:004E0BCD 7D3F                    jge 004E0C0E 
:004E0BCF 833D6CBC4E001E          cmp dword ptr [004EBC6C], 0000001E 
:004E0BD6 7D36                    jge 004E0C0E 
:004E0BD8 803DB0BC4E0001          cmp byte ptr [004EBCB0], 01 
:004E0BDF 742D                    je 004E0C0E 
:004E0BE1 803DB1BC4E0001          cmp byte ptr [004EBCB1], 01 
:004E0BE8 7424                    je 004E0C0E 
:004E0BEA 803DB2BC4E0001          cmp byte ptr [004EBCB2], 01 
:004E0BF1 741B                    je 004E0C0E 
:004E0BF3 803DB3BC4E0001          cmp byte ptr [004EBCB3], 01 
:004E0BFA 7412                    je 004E0C0E 
:004E0BFC 803DB4BC4E0001          cmp byte ptr [004EBCB4], 01 
:004E0C03 7409                    je 004E0C0E 
:004E0C05 803DB5BC4E0001          cmp byte ptr [004EBCB5], 01 
:004E0C0C 7513                    jne 004E0C21 

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses: 
|:004E0BC4(C), :004E0BCD(C), :004E0BD6(C), :004E0BDF(C), :004E0BE8(C) 
|:004E0BF1(C), :004E0BFA(C), :004E0C03(C) 
| 
:004E0C0E 8BC3                    mov eax, ebx 
:004E0C10 E8278BFFFF              call 004D973C 
:004E0C15 A1B8BC4E00              mov eax, dword ptr [004EBCB8] 
:004E0C1A E8C9EEF8FF              call 0046FAE8 
:004E0C1F EB46                    jmp 004E0C67 
4e0c1aÓÖÊÇÒ»¸öºô½ÐÄǸö¹ýÆÚ¶Ô»°¿òµÄ×Ó³ÌÐò£¬ÎÒÃÇ¿ÉÒÔ¿´µ½ÉÏÃæÓкܶàÌøת£¬¾Í˵Ã÷Óкܶà 
»ú»áÁË£¬¿ÉÒÔ°Ñ4e0bc4µÄÄǸöÌøתÐ޸ijÉjmp 4e0c21À´Ìø¹ýÕû¸ö²¿·Ö£¬ÄãÒ²¿ÉÒÔ°ÑËùÓеÄÌøת 
¶¼nopµô£¬È»ºó°Ñ4e0c0cµÄÄǸöÌøתÐ޸ijÉjmp 4e0c21£¬Á½ÖÖ·½·¨¶¼¿ÉÒÔ£¡ÕâÑù¾Í¿ÉÒÔÍê³ÉÕû¸ö 
Èí¼þµÄÆƽâÁË£¬ÎÒ»Ö¸´ÁËÒ»±ãϵͳ²âÊÔ£¬Ã»ÓйýÆÚµÄÌáʾÁË£¬¿ÉÒÔ¼ÌÐøʹÓã¡ 
ÎÒµÄÖ÷Ò³¾ø²»»á·ÅÕâ¸öÀ¬»øÈí¼þÁË£¡¼á¾öÅ×ÆúËü£¡£¡£¡£¡ 
Æƽâ¾ÍÔÚÉÏÃ棬´ó¼Ò×Ô¼º¿´°É£¡£¡ 
ÓпÕÀ´ÎÒÖ÷Ò³£ºhttp://www.ohtop.com/wind 
wind[CCG] 
·µ»Ø
 Cracking the ShareLock Protection System (SHRLK20.DLL) 
(A tale of hours of tracing with a surprising ending)
by XaVaX
(11 February 1997)
 
Programmer's corner
--------------------------------------------------------------------------------
Courtesy of fravia's page of reverse engineering
--------------------------------------------------------------------------------
Well, A tale of hours of tracing with a surprising ending describes well this ve
ry interesting essay by XaVaX: a new contributor and yet an old cracker, as he w
rote to me:
BTW I'm not new to reversing, just new to writing about
it - I've been reversing hardware & software for
several decades (usually in order to repair or improve
undocumented designs)
This target has a pretty strong protection scheme, yet it could well win a prize
 for the most stupid "demo release". Enjoy! (and please, please, please spare me
 work and use the formamus.htm model when you send your essays! :-(
--------------------------------------------------------------------------------
Cracking the ShareLock Protection System (SHRLK20.DLL)
(A lot of light can get into this scheme)
by XaVaX (A middle aged Anglo-Saxon cracker)

I used WEBZIP.EXE as a target for this study and, by
the way, found it to be a very useful utility.  My
attack is on the protection scheme only - WEBZIP is an
innocent bystander.
Target WEBZIP13.EXE  928Kb  6/1/98 
Tools WinIce
 W32DSM89
 Hex Workshop (any version)
 Persistence
You may be thinking 'yet another serial number
treatise' but bear with me here - there is an
interesting point to this adventure
Read on
This protection does not use standard Windoze routines
for retrieving dialog box text entries etc (debugger
hostile?) - we'll see
Disassemble WEBZIP.EXE with W32DSM89
In the disassembly header you'll find the sharelock
entry:
   Import Module 020: SHRLK20.DLL
 Addr:000D9BDE hint(0000) Name: ShowAboutDialog
 Addr:000D9BF0 hint(0000) Name: PassHandle
 Addr:000D9BFE hint(0000) Name: InputUnlockCode  <** note this
 Addr:000D9C10 hint(0000) Name: GetTryNumber
 Addr:000D9C20 hint(0000) Name: GetTrialPeriodRemaining
 Addr:000D9C3A hint(0000) Name: CheckProtectionDLL <** & this
Load process & search for 'SHRLK20.'
Set breakpoints on all occurrences
Check 'Stop Auto on API' & all API documentation options
Hit F8 (step over) until we arrive here....
This call looks interesting - note Arg01's text reference
Is this a taunt for crackers? we'll see later!
:004B96FF E8CC0FF5FF              call 0040A6D0
API NODOC Arg00 =
Local_Function(Arg01,Arg02,Arg03,Arg04,Arg05,Arg06,Arg07,Arg08)
API Address=004B96FF, API Return Address=004B9704
  Arg01 = 00b21b48 ->(LPDWORD)57595542 or (LPSTR)"BUYWEBZIPNOWDUDESBUYWEBZIPNOWDUDES"
  Arg02 = 0000001c
  Arg03 = 00000000
  Arg04 = 00000005
  Arg05 = 00000000
  Arg06 = 00000000
  Arg07 = 007cfc70 ->(LPDWORD)007cfcbc or (LPSTR)"?¨¹|"
  Arg08 = 004b9760 ->(LPDWORD)f49f0be9 or (LPSTR)"¨¦ ????e[Y]?"
It comes up again at:
:004B9713 E89009F5FF              call 0040A0A8
API NODOC Arg00 =
Local_Function(Arg01,Arg02,Arg03,Arg04,Arg05,Arg06,Arg07,Arg08)
API Address=004B9713, API Return Address=004B9718
  Arg01 = 00000000
  Arg02 = 40e161e0 ->(LPDWORD)00c90f9e or (LPSTR)""
  Arg03 = 00b21b48 ->(LPDWORD)57595542 or (LPSTR)"BUYWEBZIPNOWDUDESBUYWEBZIPNOWDUDES"
  Arg04 = 0000001c
  Arg05 = 00000000
  Arg06 = 00000005
  Arg07 = 00000000
  Arg08 = 00000000
and at:
:004B971B E870A9F4FF              call 00404090
:004B9724 E867A9F4FF              call 00404090
:004B972D E85EA9F4FF              call 00404090
:004B9736 E855A9F4FF              call 00404090
:004B973F E84CA9F4FF              call 00404090
and finally at:
* Reference To: SHRLK20.CheckProtectionDLL, Ord:0000h
                                  |
:004B9745 E87EF9FFFF              Call 004B90C8
API NODOC Arg00 =
Local_Function(Arg01,Arg02,Arg03,Arg04,Arg05,Arg06,Arg07,Arg08)
API Address=004B9745, API Return Address=004B974A
  Arg01 = 00b21b10 ->(LPDWORD)59454b48 or
(LPSTR)"HKEY_CURRENT_USER\Software\Microsoft\IFind"
  Arg02 = 00b27f14 ->(LPDWORD)59454b48 or
(LPSTR)"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Metrics"
  Arg03 = 00b29b08 ->(LPDWORD)5a626557 or (LPSTR)"WebZIP"
  Arg04 = 00b21af0 ->(LPDWORD)64697053 or (LPSTR)"Spidersoft"
  Arg05 = 00b3d854 ->(LPDWORD)38312f36 or (LPSTR)"6/18/1997"
  Arg06 = 00b21b48 ->(LPDWORD)57595542 or (LPSTR)"BUYWEBZIPNOWDUDESBUYWEBZIPNOWDUDES"
  Arg07 = 0000001c
  Arg08 = 00000000
Note Arg01 - this is where the encrypted key is stored
in the registry and Arg06 is beginning to nag us to
death by now.
Remember this structure - it will be useful later
(The key will contain registration info including
install and expiry date)
I followed the encryption method and its a simple
rolling byte technique which, as we'll see later, does
not require any reversing to beat this scheme.
OK - now it's time for WinIce
Edit WINICE.DAT and include the following line under:
; ***** Examples of export symbols that can be included for Windows 95 *****
EXP=c:\windows\system\shrlk20.dll
(Lets us break on all exported functions by name)
Restart with winice and set breakpoints on the shrlk20.dll export:
bpx shrlk20!InputUnlockCode
Now we're ready - get your Wodka(s) and/or cigarette(s)
close at hand
Fire up WEBZIP.EXE
Enter any name & number and hit OK - we'll break at:
(addresses will be offset by ~+160000h from the ones
I've shown as the snippets are copied directly from
W32DSM89)
Exported fn(): InputUnlockCode - Ord:000Bh
:00429C38 55                      push ebp
:00429C39 8BEC                    mov ebp, esp
:00429C3B 6A00                    push 00000000
:00429C3D 6A00                    push 00000000
:00429C3F 6A00                    push 00000000
:00429C41 53                      push ebx
:00429C42 56                      push esi
:00429C43 57                      push edi
:00429C44 33C0                    xor eax, eax
:00429C46 55                      push ebp
:00429C47 68A09C4200              push 00429CA0  <** initializing
:00429C4C 64FF30                  push dword ptr fs:[eax]
:00429C4F 648920                  mov dword ptr fs:[eax], esp
:00429C52 8D45FC                  lea eax, dword ptr [ebp-04]
:00429C55 8B5510                  mov edx, dword ptr [ebp+10]
:00429C58 E80397FDFF              call 00403360  <** initializing
:00429C5D 8B45FC                  mov eax, dword ptr [ebp-04]
:00429C60 50                      push eax
:00429C61 8D45F8                  lea eax, dword ptr [ebp-08]
:00429C64 8B550C                  mov edx, dword ptr [ebp+0C]
:00429C67 E8F496FDFF              call 00403360  <** initializing
:00429C6C 8B45F8                  mov eax, dword ptr [ebp-08]
:00429C6F 50                      push eax
:00429C70 8D45F4                  lea eax, dword ptr [ebp-0C]
:00429C73 8B5508                  mov edx, dword ptr [ebp+08]
:00429C76 E8E596FDFF              call 00403360  <** initializing
:00429C7B 8B45F4                  mov eax, dword ptr [ebp-0C]
:00429C7E 5A                      pop edx
:00429C7F 59                      pop ecx
:00429C80 E8B7D7FFFF              call 0042743C  <** TRACE THIS CALL
:00429C85 33C0                    xor eax, eax
:00429C87 5A                      pop edx
:00429C88 59                      pop ecx
:00429C89 59                      pop ecx
:00429C8A 648910                  mov dword ptr fs:[eax], edx
:00429C8D 68A79C4200              push 00429CA7
:00429C92 8D45F4                  lea eax, dword ptr [ebp-0C]
:00429C95 BA03000000              mov edx, 00000003
:00429C9A E8B595FDFF              call 00403254
:00429C9F C3                      ret
:00429CA0 E9E791FDFF              jmp 00402E8C
:00429CA5 EBEB                    jmp 00429C92
:00429CA7 5F                      pop edi
:00429CA8 5E                      pop esi
:00429CA9 5B                      pop ebx
:00429CAA 8BE5                    mov esp, ebp
:00429CAC 5D                      pop ebp
:00429CAD C20C00                  ret 000C
The calls to 403360 perform checks on the input strings
(length etc)
Note: this code is very messy as it performs no calls
to the standard Windoze API functions (eg getdlgitemtext etc)
The call to 0042743C does all the manipulation and
comparison with many movements of the strings,
converting to upper case etc
Breakpoint all copy ranges and keep tracing until we
end up here:
:004274B0 E88B2F0000       call 0042A440
:004274B5 8BD0             mov edx, eax
:004274B7 83EAFF           sub edx, -01  <** increment edx
:004274BA 7410             je 004274CC  <** bad jump if 0
:004274BC 4A               dec edx  <** -1
:004274BD 7426             je 004274E5  <** bad jump if 0 
:004274BF 4A               dec edx  <** -1
:004274C0 81EA6D010000     sub edx, 0000016D <** -16d
:004274C6 720A             jb 004274D2  <** bad jump if -ve
:004274C8 7411             je 004274DB  <** looks good
:004274CA EB15             jmp 004274E1  <** else bad
The only jump on an exact match is je 4274DB, this
'feels' like a possibility so change the 1st jump at
4274BA to a JMP 4274DB to bypass the other tests ie:
:004274B0 E88B2F0000       call 0042A440
:004274B5 8BD0             mov edx, eax
:004274B7 83EAFF           sub edx, -01  
:004274BA EB1F             jmp 004274DB  <** always a good jump
:004274BC 4A               dec edx
We could also have modified the code to force eax to
the correct value in the call to 42A440 ie 0000016E but
this is not required here (luck!)
OK - one test down and hours out of the way - let's go
on
After much, much more fiddling of the strings in every
imaginable way we arrive at the following test:
:004034E1 8B0E          mov ecx, dword ptr [esi] <** our (modified) number
:004034E3 8B1F          mov ebx, dword ptr [edi] <** what's this?
:004034E5 39D9          cmp ecx, ebx   <** same ?
:004034E7 7558          jne 00403541   <** TEST FAILED!
:004034E9 4A            dec edx           <** counter
:004034EA 7415          je 00403501   <** done if 0
:004034EC 8B4E04        mov ecx, dword ptr [esi+04]
:004034EF 8B5F04        mov ebx, dword ptr [edi+04]
:004034F2 39D9          cmp ecx, ebx   <** test next 4
:004034F4 754B          jne 00403541   <** TEST FAILED!
:004034F6 83C608        add esi, 00000008  <** adjust pointers
:004034F9 83C708        add edi, 00000008
:004034FC 4A            dec edx
:004034FD 75E2          jne 004034E1   <**loop till edx=0
:004034FF EB06          jmp 00403507   <** ALL PASSED  
This test may be circumvented by nopping the two jne
403541's (or equivalent 'nothing' opcodes) ie the test
never fails.
By the way, the 'good' string at [edi] is not the
full correct string - it has 3 characters missing
We may be concerned at this point that the
'CheckProtectionDLL' routine will 'spit the dummy' with
the above patches if it performs a checksum test on the
DLL code but this is not the case.
At this point, make a backup of SHRLK20.DLL
Anyway, apply the patches using the offsets supplied by
W32DSM89 with a hex editor and run WEBZIP.EXE again
(disable breakpoints 1st)
The 'Time Expired - Register' dialog comes up as usual
but any name/number combination is accepted as valid
now, only problem is that this is required every time
the prog is run - could we possibly make a key
generator to permanently register it? well possibly.
At this point I started investigating the ShareLock
system further and downloaded a 'demo' SHRLK201.ZIP for
this purpose.
The "demo" kit includes a KEY GENERATOR!!
Surely this 'demo' model is not compatible with the
full version?
Believe it or not, IT IS!
Remember that nag string
'BUYWEBZIPNOWDUDESBUYWEBZIPNOWDUDES'?
We've seen quite a lot of it by now
This is the key for the key generator which, when
processed with the entered name, creates the correct
unlock code - try it!.
So our long cracking session was NOT NECESSARY!
We can now delete our painfully patched and crippled
SHRLK20.DLL and restore the original, plus any software
protected by this system can be fully registered in
about 5 minutes.  Its a shame really to see this
reasonably well crafted protection undone by the eternal
quest for the almighty dollar - it happens so often.
The programmers who have invested in this protection
system should be more than a little upset with this
situation where the protection vendor is giving away
the keys freely - I don't expect to see it for much
longer.
As always, if the software performs adequately the task
you intended and you use it regularly, it is worth the
price being asked (quite reasonable in this case for a
good net utility). I certainly would not part with any
cash for the 'protection' of ShareLock.
All credit goes to the +HCU for inspiration

(c) 1998 XaVaX All rights reversed
--------------------------------------------------------------------------------
You are deep inside fravia's page of reverse engineering, choose your way out:

 
Back to Programmer's corner
homepage links anonymity +ORC students' essays academy database
tools cocktails javascripts wars antismut CGI-scripts search_forms mail_fravia+
Is reverse engineering legal?
--------------------------------------------------------------------------------
·µ»Ø
%¡¾³õѧÌìµØ¡¿
 
·µ»Ø
O¡¾ÎÊÌâ´ðÒÉ¡¿
 
·µ»Ø
4¡¾ÍøÕ¾½éÉÜ¡¿
 
 
·µ»Ø
,¡¾ÔÓÖ¾ÐÅÏä¡¿
Ͷ¸åÐÅÏ䣺discoveredit@china.com
´ðÒÉÐÅÏ䣺discoveranswer@china.com
°ßÖñÐÅÏ䣺programhunter@china.com
·µ»Ø