̽Ë÷ http://programhunter.home.china.com
¡¾ÔÓÖ¾×ÚÖ¼¡¿ÖªÊ¶¹²Ïí ×ÊÁϹ²Ïí ×ÊÔ´¹²Ïíÿÿÿÿÿ
¡¾ÖÆ×÷³ÉÔ±¡¿³ÌʽÁÔÈË
¡¾·¢ÐÐʱ¼ä¡¿2000-8-19
¡¾ÆÚ¿¯ºÅÂë¡¿µÚ°ËÆÚ
¡¾ÍøÕ¾µØÖ·¡¿http://programhunter.wanwang.com

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

    
    {~._.~} 
     ( Y )  
    ()~*~() 
    (_)-(_) 

ÿÿÿÿ½ñÌìµÄÔÓÖ¾Ê×ÏÈÏò´ó¼Ò½éÉÜÒ»ÏÂÎÒÒѾ­ÔÚwanwang.com´¦ÉóÖ÷ÁËÖ÷Ò³¿Õ¼ä£¬ËüµÄ·þÎñÇ¿´ó£¬ÔËÐÐÎȶ¨£¬ËùÒÔ´ó¼ÒÈç¹û·ÃÎÊÍøÕ¾µÄ»°£¬×îºÃÈ¥Ëü¡£Æä´ÎÊǽéÉÜÒ»ÏÂÒѾ­³ÉΪÅóÓѵÄwindµÄÍøÕ¾£¬ÏêÇé¼ûÍøÕ¾½éÉÜÀ¸Ä¿¡£ÏÖÔÚ»¹Òª¸æËß´ó¼ÒµÄÊÇ£¬ÎÒµÄÍøÕ¾ÕýÔÚ½øÈë¸Ä°æ£¬ÔÙ¹ý¼¸Ìì´ó¼Ò½«¿´µ½Ò»¸öȫеÄ̽Ë÷ÍøÕ¾£¬Ï£Íû´ó¼Òµ½Ê±È¥¿´Ò»¿´£¬Ò²Ð»Ð»´ó¼ÒµÄÖ§³Ö¡£

ÿÿÿÿ½ñÌìÊÕµ½ÁËÍøÓÑliangsµÄ×÷Æ·£¬ËäÈ»×÷Æ·ÊôÓÚeasy¼¶µÄ£¬µ«ÊǶÔÓÚÆƽâÈËÀ´Ëµ£¬ÎÒÃDz»¶¼ÊÇ´Ó¼òµ¥µÄ¿ªÊ¼£¬¶ÔÓÚ³õѧÕßÀ´ËµµÚ¶þ£¬Èý¸ö¶¼ÊDZȽϺõÄѧϰ×÷Æ·¡£

ÿÿÿÿÓÉÓÚÕ⼸ÌìÕýÔڸİæÍøÕ¾£¬ËùÒÔ³õѧÌìµØÕâÆÚ²»ÄÜ°´Ê±Ð´³öÀ´£¬ËùÒÔÏ£Íû´ó¼ÒÄܹ»Àí½â¡£

¡¾Ä¿ ÿÿ ¼¡¿
ÿÿÿÿ&ÆƽâÐĵÃ
1¡­¡­Particle Fire V1.1a ³ÌʽÁÔÈË
2¡­¡­KeyGhost V3.2 Æƽâʵ¼ liangs
3¡­¡­Font Creator Program ³ÌʽÁÔÈË
  4¡­¡­Hacking Windows 95 Screen Saver Passwords Lonely Hawk
ÿÿÿÿ%³õѧÌìµØ
ÿÿÿÿOÎÊÌâ´ðÒÉ
ÿÿÿÿ4ÍøÕ¾½éÉÜ
ÿÿÿÿ,ÔÓÖ¾ÐÅÏä
&¡¾ÆƽâÐĵá¿
                    Particle Fire V1.1a
                                 ³ÌʽÁÔÈË
¼ò½é£ºÕâÊÇÒ»¸öÏ൱ºÃµÄÆÁÄ»±£»¤³ÌÐò¡£
×·×Ù£ºRN:01234567
ÿÿÿÿÕâ¸öÈí¼þµÄÆƽâ¹ý³Ì¶ÔÓÚ³õѧÕßÀ´ËµÓÐÒ»¶¨µÄÄѶȣ¬ÒòΪͨ³£µÄÈí¼þÔÚ×¢²á¹ý³ÌÖоͿÉ
ÒÔ¿´µ½ËüµÄ±È½Ï¹ý³Ì£¬¶øÕâ¸öÈí¼þËü²»ÊÇÊäÈë×¢²áÂëºó¾Í½øÐбȽϵġ£ËüÊÇÔÚÈí¼þÔËËãµÄ¹ý
³ÌÖв»¶ÏµÄÈ¥±È½Ï£¬ËùÒÔÕâ¸öÈí¼þÔÚÄѶÈÉÏÓ¦µ±ÊôÓÚÖм¶Ë®Æ½¡£
ÒòΪÕâ¸öÈí¼þÊǵ±ÄãÊäÈëÕýÈ·µÄ×¢²áÂëºó²Å×¢²á³É¹¦Ò²¾ÍÊÇËüʹÓÃʵʱ¼ìÖ¤µÄ·½·¨£¬Ëù
ÒÔÏÖÔÚÏÈÊäÈë0123456ºó£¬ÔÙÉèbpx hmemcpyºó£¬ÊäÈë7ºó±»À¹Ï¡£
:0040254F FFD7                    call edi
:00402551 85C0                    test eax, eax  <-³öÀ´µÄµØ·½£¬eax=0012d687
:00402553 7423                    je 00402578
:00402555 8D442410                lea eax, dword ptr [esp+10]
:00402559 6A00                    push 00000000
:0040255B 50                      push eax
:0040255C 68F0030000              push 000003F0
:00402561 56                      push esi
:00402562 FFD7                    call edi
:00402564 5D                      pop ebp
:00402565 A314214100              mov dword ptr [00412114], eax <-eax=12d687

* Possible Reference to String Resource ID=00001: "Particle Fire!"
                                  |
:0040256A B801000000              mov eax, 00000001
:0040256F 5F                      pop edi
:00402570 5E                      pop esi
:00402571 5B                      pop ebx
:00402572 83C414                  add esp, 00000014
:00402575 C21000                  ret 0010
ÿÿÿÿÎÒÃÇÔÚÉÏÃæµÄµØ·½±»À¹ÏÂÀ´£¬×Ðϸ·ÖÎöÒ»ÏÂÉÏÃæµÄ³Ìʽ£¬Äã¿ÉÒÔ·¢ÏÖÔÚÉÏÃæ³Ìʽ½«ÎÒÃÇ
ÈëµÄ×¢²áÂë·ÅÔÚÁË00412114Õâ¸ö¹Ì¶¨µØÖ·ÉÏ¡£Èç¹ûÄãÏÖÔÚÏòÏÂ×·×ٵĻ°£¬Ä㽫ÊÇÒ»ÎÞ·¢ÏÖ
ÒòΪ³ÌÐò¾ÍÈçÎÒÔÚÇ°ÃæËù˵µÄÄÇÑù£¬Ëü²»ÊÇÔÚÏÂÃæ¾Í½øÐбȽϣ¬¶øÊÇÔÚij¸öʱ¼äÀ´½øÐбȵġ£
ÏÖÔÚÎÒÃǾ͵ÃʹÓÃW32dasmÀ´·ÖÎöÕâ¸öÈí¼þ£¬²éÕÒ00412114Õâ¸öµØÖ·£¬ÎÒÃǽ«ÕÒµ½¼¸¸öµØ
Ö·£¬ÆäÖÐÏÂÃæµÄµØÖ·ÊǹؼüµÄµØ·½£¬ÈçÏÂËùʾ£º
:00402726 A114214100              mov eax, dword ptr [00412114]
:0040272B 50                      push eax
:0040272C E8CFE8FFFF              call 00401000
:00402731 83C404                  add esp, 00000004
:00402734 85C0                    test eax, eax
:00402736 0F852D030000            jne 00402A69
ÿÿÿÿÔÚÕâÀï¿ÉÊÇÕâ¸öÈí¼þµÄ±È½Ï¹Ø¼üÖ®´¦£¬¶øÇÒÈç¹ûÄãÔÚÕâÀïÉè϶ϵãµÄ»°£¬Ä㽫ÎÞ·¨»Øµ½
Õý³£µÄµØ·½£¬ÒòΪ³ÌÐòÒ»ÖµÔÚµ÷ÓÃËü£¬ÓÃËüÀ´²»¶ÏµÄÑé֤ע²áÂëµÄÕýÈ·ÐÔ¡£ÏÂÃæÊÇÕâ¸öÈí
ÈçºÎ¼ÆËã×¢²áÂëµÄ¡£ÒòΪËüʹÓÃÁËÁîÈËÌÖÑáµÄXOR²Ù×÷£¬¶øÎÒʹÓÃCÓïÑÔÓÖûÓн«Ëü¸øËã³ö
£¨¿ÉÄÜCÓïÑÔ´¦ÀíXORʱÓÐÎÊÌ⣩¡£
:00401000 8B442404                mov eax, dword ptr [esp+04]
:00401004 56                      push esi
:00401005 3D00CA9A3B              cmp eax, 3B9ACA00   <-1000000000
:0040100A 763D                    jbe 00401049
:0040100C 3D00943577              cmp eax, 77359400   <-2000000000
:00401011 7336                    jnb 00401049
:00401013 8BC8                    mov ecx, eax
:00401015 8BF0                    mov esi, eax
:00401017 C1E114                  shl ecx, 14
:0040101A 8BD0                    mov edx, eax
:0040101C C1E610                  shl esi, 10
:0040101F 81E10000F0FF            and ecx, FFF00000
:00401025 C1EA10                  shr edx, 10
:00401028 0BF2                    or esi, edx
:0040102A 2BD2                    sub edx, edx
:0040102C 33F1                    xor esi, ecx
:0040102E 8BC8                    mov ecx, eax
:00401030 C1E90C                  shr ecx, 0C
:00401033 33F1                    xor esi, ecx
:00401035 B994260000              mov ecx, 00002694
:0040103A 33C6                    xor eax, esi
:0040103C F7F1                    div ecx
:0040103E 85D2                    test edx, edx
:00401040 7507                    jne 00401049   ***

* Possible Reference to String Resource ID=00001: "Particle Fire!"
                                  |
:00401042 B801000000              mov eax, 00000001
:00401047 5E                      pop esi
:00401048 C3                      ret
ÿÿÿÿºÃÁË£¬ÏÖÔÚÎÒʹÓÃÐ޸ķ½·¨À´½øÐÐÕâ¸öÈí¼þ×¢²á£¬ÎÒÔÚÕâÀïÏÈÊäÈë1234567890ºó£¬ÔÙÐÞ¸Ä
***´¦£¬¾ßÌå·½·¨ÈçÏ£º
 
                       ****************************
                       *   ²éÕÒ£º85 D2 75 07 B8   *
                       *   Ìæ»»£º85 D2 90 90 B8   *
                       ****************************
ÿÿÿÿÎÒÏÖÔÚÏëͬ´ó¼Ò˵µÄÊÇ£¬ÎÒÒòΪûÓеõ½Õâ¸öÈí¼þµÄ×¢²áÂë¶ø²»ËÀÐÄ£¬±Ï¾¹ÎÒÀë×¢²áÂëÖ»
ÓÐÒ»²½Ö®¸ô£¬ÒòΪÎÒÒѾ­ÖªµÀÁËÕâ¸öÈí¼þÊÇÈçºÎÔËËãµÄ¹ý³Ì¡£ÓÚÊÇÎÒ¾ÍʹÓÃCÓïÑÔ±àдÁËÏÂ
ÃæµÄ³ÌÐò£¬ÎÒ×¼±¸Ê¹ÓÃÇî¾Ù·¨À´µÃµ½×¢²áÂë¡£µ«ÊÇͨ¹ýÏÂÃæµÄ³ÌÐòËã³öÀ´µÄ×¢²áÂëÊDz»¶ÔµÄ
£¬ÎÒ×ÐϸµÄÑéÖ¤ÁËÎÒ±àдµÄ¹ý³Ì£¬ÏàÐÅËüÊǾø¶ÔûÓдíÎóµÄ£¬ËùÒÔÔÚÕâÀïÏëÇë¸ßÊÖÀ´°ïÖúÒ»
Ï£¬ÈçºÎÄܹ»µÃµ½Õâ¸öÈí¼þµÄ×¢²áÂ루Äã²»ÂÛʹÓÃʲôÓïÑÔ¶¼¿ÉÒÔ£©¡£
main()
{
 unsigned long i,j;
 unsigned long eax,ebx,ecx,edx;

 clrscr();

 for(i=0x3b9aca00;i<0x4190ab00;i++)
  {
   eax=i<<16;
   ebx=i>>16;
   ecx=eax|ebx;

   eax=i<<20;
   ebx=i>>12;
   edx=eax|ebx;

   eax=ecx|edx|i;

   j=eax%0x2694;
   if(j==0)
     {
      printf("\n  Your register number is %lx",i);
      break;
     }
   }
   printf("\n your seach is over!!!");
   getch();
 }
·µ»Ø
KeyGhost V3.2 Æƽâʵ¼

×÷Õß:liangs
E-mail:liang_s@263.net

Èí¼þÃû³Æ£ºKeyGhost V3.2
ÏÂÔصØÖ·£ºhttp://sunhy.126.com

ʹÓõŤ¾ß W32Dasm V8.93 ³¬¼¶ÖÐÎÄ°æ Trw2000 ver1.22

Ê×ÏÈÁ¬°´Á½´ÎALT+F12ºô³öKeyGhost,ÔÚ×¢²á¿òÖÐÊäÈ룺liangs-787878,ΪʲôÊÇ'liangs-787878'
¶ø²»ÊÇ'liangs787878',ÏÂÃæÄã¾ÍÖªµÀÁË¡£È»ºóÏÂbpx hmemcpy£¬ÖжϺó£¬Ê×ÏÈbd *,È¥µôËùÓÐÖжϣ¬
ÔÙ°´18´ÎF12¡£
* Possible StringData Ref from Code Obj ->"ÇëºÏ·¨Ê¹ÓÃÈí¼þ"
                                  |
:00475580 B888564700              mov eax, 00475688
:00475585 E842ADFDFF              call 004502CC
:0047558A 837DFC00                cmp dword ptr [ebp-04], 00000000 <---ÎÒÃÇÍ£ÔÚÕ⣻
:0047558E 0F8499000000            je 0047562D
:00475594 8D85FCFEFFFF            lea eax, dword ptr [ebp+FFFFFEFC]
:0047559A 8B55FC                  mov edx, dword ptr [ebp-04] <---´Ë´¦edx=liangs-787878;
:0047559D B9FF000000              mov ecx, 000000FF
:004755A2 E881E8F8FF              call 00403E28 
:004755A7 8D85FCFEFFFF            lea eax, dword ptr [ebp+FFFFFEFC]

:004755AD E8CAC2FFFF              call 0047187C <---ÅжÏÊäÈëµÄ×¢²áÂëµÄºÏ·¨ÐÔ,´Ë´¦°´F8¸úÈë;
:004755B2 84C0                    test al, al
:004755B4 7477                    je 0047562D <---×¢²áÂë´íÎó¾ÍÌø×ß;

:004755B6 B201                    mov dl, 01
:004755B8 8B8340030000            mov eax, dword ptr [ebx+00000340]
:004755BE E8F570FBFF              call 0042C6B8
:004755C3 33D2                    xor edx, edx
:004755C5 8B8318030000            mov eax, dword ptr [ebx+00000318]
:004755CB E8E870FBFF              call 0042C6B8
:004755D0 B201                    mov dl, 01
:004755D2 8B8340040000            mov eax, dword ptr [ebx+00000440]
:004755D8 8B08                    mov ecx, dword ptr [eax]
:004755DA FF515C                  call [ecx+5C]
:004755DD C605D1BA470001          mov byte ptr [0047BAD1], 01

* Possible StringData Ref from Code Obj ->"Code"
                                  |
:004755E4 68A0564700              push 004756A0
:004755E9 8D95E8FEFFFF            lea edx, dword ptr [ebp+FFFFFEE8]
:004755EF 8B45FC                  mov eax, dword ptr [ebp-04]
:004755F2 E84595FEFF              call 0045EB3C
:004755F7 8B95E8FEFFFF            mov edx, dword ptr [ebp+FFFFFEE8]
:004755FD 8D85ECFEFFFF            lea eax, dword ptr [ebp+FFFFFEEC]
:00475603 E8A4F9F8FF              call 00404FAC
:00475608 8D85ECFEFFFF            lea eax, dword ptr [ebp+FFFFFEEC]
:0047560E 50                      push eax

* Possible StringData Ref from Code Obj ->"Software\Sun\Keyghost3xx"
                                  |
:0047560F B9B0564700              mov ecx, 004756B0
:00475614 B202                    mov dl, 02
:00475616 8B8310030000            mov eax, dword ptr [ebx+00000310]
:0047561C E85F21FEFF              call 00457780

* Possible StringData Ref from Code Obj ->"×¢²á³É¹¦£¡Ð»Ð»ÄúµÄÖ§³Ö£¡"
                                  |
:00475621 B8D4564700              mov eax, 004756D4 <---×¢²áÂëÕýÈ·Ìøµ½´Ë´¦;
:00475626 E885A9FDFF              call 0044FFB0
:0047562B EB0A                    jmp 00475637

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0047558E(C), :004755B4(C)
|

* Possible StringData Ref from Code Obj ->"Ç빺Âò±¾Èí¼þ£¡¼ûÓÒ²à×¢²á˵Ã÷£¡"
                                  |
:0047562D B8F8564700              mov eax, 004756F8 <---×¢²áÂë´íÎóÌøµ½´Ë´¦;
:00475632 E879A9FDFF              call 0044FFB0

---------------------------------------------------------------------------

¸úÈë call 0047187C ÖУº´ËCallÓÃÀ´ÅжÏÊäÈëµÄ×¢²áÂëµÄºÏ·¨ÐÔ

* Referenced by a CALL at Addresses:
|:004755AD   , :00475979   
|
:0047187C 55                      push ebp
:0047187D 8BEC                    mov ebp, esp
:0047187F 81C4ECFCFFFF            add esp, FFFFFCEC
:00471885 53                      push ebx
:00471886 56                      push esi
:00471887 57                      push edi
:00471888 33D2                    xor edx, edx
:0047188A 8995F0FCFFFF            mov dword ptr [ebp+FFFFFCF0], edx
:00471890 8995ECFCFFFF            mov dword ptr [ebp+FFFFFCEC], edx
:00471896 8995F8FCFFFF            mov dword ptr [ebp+FFFFFCF8], edx
:0047189C 8995F4FCFFFF            mov dword ptr [ebp+FFFFFCF4], edx
:004718A2 8BF0                    mov esi, eax
:004718A4 8DBDFFFEFFFF            lea edi, dword ptr [ebp+FFFFFEFF]
:004718AA 33C9                    xor ecx, ecx
:004718AC 8A0E                    mov cl, byte ptr [esi]
:004718AE 41                      inc ecx
:004718AF F3                      repz
:004718B0 A4                      movsb
:004718B1 33C0                    xor eax, eax
:004718B3 55                      push ebp
:004718B4 68DE194700              push 004719DE
:004718B9 64FF30                  push dword ptr fs:[eax]
:004718BC 648920                  mov dword ptr fs:[eax], esp
:004718BF C645FF00                mov [ebp-01], 00
:004718C3 8D85F4FCFFFF            lea eax, dword ptr [ebp+FFFFFCF4]
:004718C9 8D95FFFEFFFF            lea edx, dword ptr [ebp+FFFFFEFF]
:004718CF E81C25F9FF              call 00403DF0
:004718D4 8B85F4FCFFFF            mov eax, dword ptr [ebp+FFFFFCF4]
:004718DA 8D95F8FCFFFF            lea edx, dword ptr [ebp+FFFFFCF8]
:004718E0 E82374F9FF              call 00408D08
:004718E5 8B95F8FCFFFF            mov edx, dword ptr [ebp+FFFFFCF8]
:004718EB 8D85FFFEFFFF            lea eax, dword ptr [ebp+FFFFFEFF]
:004718F1 B9FF000000              mov ecx, 000000FF
:004718F6 E82D25F9FF              call 00403E28
:004718FB 33DB                    xor ebx, ebx
:004718FD C685FFFDFFFF00          mov byte ptr [ebp+FFFFFDFF], 00
:00471904 C685FFFCFFFF00          mov byte ptr [ebp+FFFFFCFF], 00
:0047190B 8D95FFFEFFFF            lea edx, dword ptr [ebp+FFFFFEFF]
:00471911 B8F0194700              mov eax, 004719F0

:00471916 E80511F9FF              call 00402A20 <---ÅжÏÊäÈëµÄ×¢²áºÅÊÇ·ñÊÇxxxx-yyyyµÄÐÎʽ£»
                                                    °´F8¸úÈë¿ÉÖª¡£
:0047191B 8BF0                    mov esi, eax
:0047191D 85F6                    test esi, esi
:0047191F 0F8E9B000000            jle 004719C0 <---×¢²áºÅÈô²»ÊÇxxxx-yyyyµÄÐÎʽÔòÌø
                                                   ÕâÀïǧÍò²»ÄÜÌø£¬²»È»¾ÍOVERÁË¡£:-)

:00471925 8D85FFFDFFFF            lea eax, dword ptr [ebp+FFFFFDFF]
:0047192B 50                      push eax
:0047192C 8BCE                    mov ecx, esi
:0047192E 49                      dec ecx
:0047192F BA01000000              mov edx, 00000001
:00471934 8D85FFFEFFFF            lea eax, dword ptr [ebp+FFFFFEFF]
:0047193A E8250FF9FF              call 00402864
:0047193F 8D85FFFCFFFF            lea eax, dword ptr [ebp+FFFFFCFF]
:00471945 50                      push eax
:00471946 33C9                    xor ecx, ecx
:00471948 8A8DFFFEFFFF            mov cl, byte ptr [ebp+FFFFFEFF]
:0047194E 2BCE                    sub ecx, esi
:00471950 8D5601                  lea edx, dword ptr [esi+01]
:00471953 8D85FFFEFFFF            lea eax, dword ptr [ebp+FFFFFEFF]
:00471959 E8060FF9FF              call 00402864 
:0047195E 33D2                    xor edx, edx
:00471960 8A95FFFDFFFF            mov dl, byte ptr [ebp+FFFFFDFF]
:00471966 85D2                    test edx, edx
:00471968 7E16                    jle 00471980
:0047196A 8D8500FEFFFF            lea eax, dword ptr [ebp+FFFFFE00]

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0047197E(C)
|
:00471970 33C9                    xor ecx, ecx
:00471972 8A08                    mov cl, byte ptr [eax]
:00471974 03D9                    add ebx, ecx
:00471976 81C3A41D0F00            add ebx, 000F1DA4
:0047197C 40                      inc eax
:0047197D 4A                      dec edx
:0047197E 75F0                    jne 00471970

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00471968(C)
|
:00471980 8D85F0FCFFFF            lea eax, dword ptr [ebp+FFFFFCF0]
:00471986 8D95FFFCFFFF            lea edx, dword ptr [ebp+FFFFFCFF]
:0047198C E85F24F9FF              call 00403DF0
:00471991 8B85F0FCFFFF            mov eax, dword ptr [ebp+FFFFFCF0]
:00471997 50                      push eax
:00471998 8D95ECFCFFFF            lea edx, dword ptr [ebp+FFFFFCEC]
:0047199E 8BC3                    mov eax, ebx

:004719A0 E8E374F9FF              call 00408E88 <---ÓÃxxxxËã³öÕýÈ·µÄ×¢²áÂë;
                                                Ö´ÐÐÍêÉÏÃæÕâÌõÓï¾äºó,EDXÖоÍÊÇ
                                                ÕýÈ·µÄ×¢²áÂë,ÎÒµÄÊÇ£º5944406

:004719A5 8B95ECFCFFFF            mov edx, dword ptr [ebp+FFFFFCEC]
:004719AB 58                      pop eax

:004719AC E8AB25F9FF              call 00403F5C <---ÅжÏyyyyÓëÉÏÃæÓÃxxxxËã³öµÄ
                                                    ×¢²áÂëÊÇ·ñÏàµÈ£»                              
:004719B1 750D                    jne 004719C0  <---²»µÈ¾ÍÌø×ß;

:004719B3 80BD00FFFFFF61          cmp byte ptr [ebp+FFFFFF00], 61
:004719BA 7204                    jb 004719C0
:004719BC C645FF01                mov [ebp-01], 01

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0047191F(C), :004719B1(C), :004719BA(C)
|
:004719C0 33C0                    xor eax, eax <---¿É°®µÄEAX±êÖ¾±»ÖÃ0£¬¾ÍOVERÁË
:004719C2 5A                      pop edx
:004719C3 59                      pop ecx
:004719C4 59                      pop ecx
:004719C5 648910                  mov dword ptr fs:[eax], edx
:004719C8 68E5194700              push 004719E5

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004719E3(U)
|
:004719CD 8D85ECFCFFFF            lea eax, dword ptr [ebp+FFFFFCEC]
:004719D3 BA04000000              mov edx, 00000004
:004719D8 E81322F9FF              call 00403BF0
:004719DD C3                      ret
ÓÉ call 00402A20 ¸úÈ룺´ËCallÅжÏ×¢²áÂëÊÇ·ñΪxxxx-yyyyµÄÐÎʽ.
:00402A20 53                      push ebx
:00402A21 56                      push esi
:00402A22 57                      push edi
:00402A23 89C6                    mov esi, eax
:00402A25 89D7                    mov edi, edx
:00402A27 31C9                    xor ecx, ecx
:00402A29 8A0F                    mov cl, byte ptr [edi]
:00402A2B 47                      inc edi
:00402A2C 57                      push edi
:00402A2D 31D2                    xor edx, edx
:00402A2F 8A16                    mov dl, byte ptr [esi]
:00402A31 46                      inc esi
:00402A32 4A                      dec edx
:00402A33 781B                    js 00402A50
:00402A35 8A06                    mov al, byte ptr [esi] <---½«AL¸³Öµ'2D',Ò²¾ÍÊÇ·ûºÅ'-';
:00402A37 46                      inc esi
:00402A38 29D1                    sub ecx, edx
:00402A3A 7E14                    jle 00402A50

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00402A4E(U)
|
:00402A3C F2                      repnz
:00402A3D AE                      scasb <---Ñ­»·ÒÀ´ÎÈ¡ÊäÈëµÄ×¢²áÂëÓëALÖеÄ'-'±È½Ï
:00402A3E 7510                    jne 00402A50 <---×¢²áÂëÖÐûÓÐ'-'·û¾ÍÌø×ߣ»

:00402A40 89CB                    mov ebx, ecx
:00402A42 56                      push esi
:00402A43 57                      push edi
:00402A44 89D1                    mov ecx, edx
:00402A46 F3                      repz
:00402A47 A6                      cmpsb
:00402A48 5F                      pop edi
:00402A49 5E                      pop esi
:00402A4A 7409                    je 00402A55
:00402A4C 89D9                    mov ecx, ebx
:00402A4E EBEC                    jmp 00402A3C

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00402A33(C), :00402A3A(C), :00402A3E(C)
|
:00402A50 5A                      pop edx
:00402A51 31C0                    xor eax, eax
:00402A53 EB05                    jmp 00402A5A

ÕûÀíÒ»ÏÂÎÒµÄ×¢²áÂëΪ£ºliangs-5944406
·µ»Ø
                  Font Creator Program 
                          ³ÌʽÁÔÈË


Èí¼þÃû³Æ£º Font Creator Program
Èí¼þ°æ±¾£º 2.2
Èí¼þ´óС£º 1165KB
Èí¼þÊÚȨ£º ¹²ÏíÈí¼þ
ʹÓÃƽ̨£º Win95/98/NT
·¢²¼¹«Ë¾£º http://members.xoom.com/lccw/
Èí¼þ¼ò½é£º ¿ÉÓÃÀ´ÖÆ×÷×ÖÌå(TTF)µÄ³ÌÐò£¬³ý¿É×ÔÐÐÖÆ×÷ÍâÒ²Äܹ»Ö±½Ó±à¼­ÐÞ¸ÄÊÓ´°²Ù×÷
ÿÿÿÿϵͳÉϵÄÈκÎTrueType×ÖÌ壬ÖÆ×÷ºÃµÄ×ÖÌå»òÐ޸ĺõÄ×ÖÌåÄܹ»ÈÃÄã´¢´æºÍʹÓá£
name:dahuilang
company:programhunter
RN:012-345-678-901

ÿÿÿÿÕ⼸Ìì¹âÖÆ×÷Ö÷Ò³ÁË£¬²î²»¶àÒѾ­Íü¼ÇÁËÆƽâÈí¼þÕâ¸öÎÒ°®ºÃµÄ¹¤×÷¡£½ñÌìÓÖ¿ªÊ¼Æƽâ
¹¤×÷ÁË¡£Õâ¸öÈí¼þÆƽâÊÇÏ൱µÄ¼òµ¥£¬Ã»ÓÐʲôÄѶȣ¬ÊʺϳõѧÕß¡£

:004B74AC FF75F0                  push [ebp-10]
:004B74AF 8D55EC                  lea edx, dword ptr [ebp-14]
:004B74B2 8B45FC                  mov eax, dword ptr [ebp-04]
:004B74B5 8B8004030000            mov eax, dword ptr [eax+00000304]
:004B74BB E874D0F7FF              call 00434534
:004B74C0 FF75EC                  push [ebp-14]
:004B74C3 8D55E8                  lea edx, dword ptr [ebp-18]
:004B74C6 8B45FC                  mov eax, dword ptr [ebp-04]
:004B74C9 8B800C030000            mov eax, dword ptr [eax+0000030C]
:004B74CF E860D0F7FF              call 00434534
:004B74D4 FF75E8                  push [ebp-18]
:004B74D7 8D55E4                  lea edx, dword ptr [ebp-1C]
:004B74DA 8B45FC                  mov eax, dword ptr [ebp-04]
:004B74DD 8B8014030000            mov eax, dword ptr [eax+00000314]
:004B74E3 E84CD0F7FF              call 00434534
:004B74E8 FF75E4                  push [ebp-1C]
:004B74EB 8D45F8                  lea eax, dword ptr [ebp-08]
:004B74EE BA04000000              mov edx, 00000004
:004B74F3 E8ACCBF4FF              call 004040A4
:004B74F8 8D55DC                  lea edx, dword ptr [ebp-24]
:004B74FB 8B45FC                  mov eax, dword ptr [ebp-04]
:004B74FE 8B800C030000            mov eax, dword ptr [eax+0000030C]
:004B7504 E82BD0F7FF              call 00434534
:004B7509 8B45DC                  mov eax, dword ptr [ebp-24]
:004B750C BA03000000              mov edx, 00000003
:004B7511 4A                      dec edx
:004B7512 3B50FC                  cmp edx, dword ptr [eax-04]
:004B7515 7205                    jb 004B751C
:004B7517 E818BAF4FF              call 00402F34

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004B7515(C)
|
:004B751C 42                      inc edx
:004B751D 8A4410FF                mov al, byte ptr [eax+edx-01]
:004B7521 50                      push eax
:004B7522 8D55D8                  lea edx, dword ptr [ebp-28]
:004B7525 8B45FC                  mov eax, dword ptr [ebp-04]
:004B7528 8B80E0020000            mov eax, dword ptr [eax+000002E0]
:004B752E E801D0F7FF              call 00434534
:004B7533 8B45D8                  mov eax, dword ptr [ebp-28]
:004B7536 8D4DE0                  lea ecx, dword ptr [ebp-20]
:004B7539 5A                      pop edx
:004B753A E82DD4FFFF              call 004B496C
:004B753F 8B45E0                  mov eax, dword ptr [ebp-20]
:004B7542 50                      push eax
:004B7543 8D55D4                  lea edx, dword ptr [ebp-2C]
:004B7546 8B45F8                  mov eax, dword ptr [ebp-08]
:004B7549 E8A614F5FF              call 004089F4
:004B754E 8B55D4                  mov edx, dword ptr [ebp-2C]  ***
:004B7551 58                      pop eax                      ***
:004B7552 E89DCBF4FF              call 004040F4
:004B7557 7556                    jne 004B75AF
:004B7559 8D55D0                  lea edx, dword ptr [ebp-30]
±È½Ï¹Ø¼üµØ·½£¬Èç¹ûÄãÒªÊÇÏòÏ¿´µÄ»°£¬¿ÉÒÔ·¢ÏÖ¸üΪÖØÒªµÄµØ·½ÈçÏ£º
:004B758B 6A00                    push 00000000
:004B758D 668B0D24764B00          mov cx, word ptr [004B7624]
:004B7594 B202                    mov dl, 02

* Possible StringData Ref from Code Obj ->"Thank you for registering the "
                                        ->"Font Creator Program."
                                  |
:004B7596 B830764B00              mov eax, 004B7630
:004B759B E86023FAFF              call 00459900
:004B75A0 8B45FC                  mov eax, dword ptr [ebp-04]
:004B75A3 C7803402000001000000    mov dword ptr [ebx+00000234], 00000001
:004B75AD EB22                    jmp 004B75D1

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004B7557(C)
|
:004B75AF 6A00                    push 00000000
:004B75B1 668B0D24764B00          mov cx, word ptr [004B7624]
:004B75B8 B201                    mov dl, 01

* Possible StringData Ref from Code Obj ->"Registration failed: Invalid Password"
                                  |
:004B75BA B86C764B00              mov eax, 004B766C
:004B75BF E83C23FAFF              call 00459900
:004B75C4 8B45FC                  mov eax, dword ptr [ebp-04]
:004B75C7 C7803402000002000000    mov dword ptr [ebx+00000234], 00000002
ÿÿÿÿÔÚÕâÀïÄã¿ÉÒÔ¿´µ½×¢²á³É¹¦ºÍ³ö´íµÄµØ·½£¬ËùÒÔÔÚÉÏÃæ¿ÉÒԵõ½×¢²áÂ룬ÆƽâÒ²¾Í½áÊøÁË¡£

             **********************************
             *      name:dahuilang            *
             *      company:programhunter     *
             *      RN:G6E-966-494-232        *
             **********************************
·µ»Ø
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿHacking Windows 95 Screen Saver Passwords
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(and a bit of cryptography)
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿby Lonely Hawk

Courtesy of Fravia's page of reverse engineering

--------------------------------------------------------------------------------

ÿÿÿÿI have been cracking programs ever since I owned a ZX Spectrum. To be
honest, the only ones I was really interested in at first, were the
games I played and couldn't win. I remember my first crack was at a
game called JetPac, and I was only 15 years old.
But then came the horrible times of studying in the Univ. Non stop.
Completely destroying any creative impulse God gave me, by trying to
'guide' it. Oh well. It was until I saw the great +ORC's tutorials
that I realized my supressed 'hobby' could not die. I immediately
scanned the Web for the necessary tools and started spying Win 95
programs.
ÿÿÿÿI litteraly cracked my way in every direction: I created 4 pages of
program codes, producing my own serials for every shareware program I
had. Some of the programs I cracked needed a little bit more of 'zen'
thinking, to put it in +ORC's words. Most of them though, were of the
BOZO-PROGRAMMERS-R-LIVE-HERE kind. So I relaxed, and enjoyed my supreme
power over the Windows 95 architecture.
Then one day, in the lab I work, I wanted to get something from a
friend's hard disk. I already knew the machine's password (not by hacking,
he's my friend), so I sat down in front of the monitor and moved the
mouse to remove the screen saver. Yikes! A dialog box popped up, asking
for the screen saver password. I tried my friend's 'global' password,
but it didn't work. Hmmm. I returned to my machine and searched the
Web for screen saver hacks. I found one for Windows 3.1 and tested it on
my NT 4.0. Great! I just run the program and it says the password. Good.
Let's run it on my friend's PC (rebooted and logged in - I had already
lost my interest in what I wanted from his disk and wanted to know his
screen saver password). I run it and it says 'screen saver password is
'BacB'. I try it - nothing. It's wrong. Hmm, time to do some hacking.
Allright, Microsoft, where do you store these passwords? In Windows 3.1,
says the proggy I downloaded, it's inside control.ini. The same happens
in Windows NT 4.0, but not in Windows 95! Strange... (obviously some mixup
in the sources used inside these monster OS's). I GREP'ed inside all my
friend's PC *.ini files for 'pass'. Nothing related to my needs. In most
of these situations, one must then try the registry. I fired up regedit,
and looked for "saver". After some searching, I got in the following
interesting place:

\HKEY_CURRENT_USER\Control Panel\desktop\ScreenSave_Data

ÿÿÿÿThis hosted a list of numbers, which in the test I immediately did, was
exactly twice the size of the password I gave. If for example I gave the
password "testing", the list had 14 numbers. This looked suspicious enough,
so I fired SoftIce, and got to the dialog box asking for the new password
two times. I wrote my favorite one, 'POTATOES', in both edit fields, and
pressed CTRL-D. I then searched the memory to BPR in, so

s 30:0 lffffffff "POTAT"

ÿÿÿÿBTW, always use a subset of the password, since this way you avoid mixing
up the real password image with the one in the OS dustbin. The real one
will show up in the data window as POTATOES, the false one as POTAT.
I found two occurences, one immediately after the other (remember, you
input it twice in the dialog box), so I BPR there.

BPR 30:80XXXXXX 30:80XXXXXX+8 RW
BPR 30:80ZZZZZZ 30:80ZZZZZZ+8 RW

Ctrl-D again, and pressing OK, made Softice pop up again, this time in
the well known KERNEL HMEMCPY part. The two password images were copied in
memory, and by BPR in the new positions, I found out that they were
compared bytewise to see if they match. A normal operation for passwords,
so I cotinued. The next SoftIce popup was inside a REP MOVSB to a new
location, so I BPR it again. I was beggining to feel frustrated - how
many times does this stupid OS copy the string - I already had 5 copies
of it! (no wonder Win 95 needs 16 MB RAM). Oh well, Ctrl-D again (continue
running).
ÿÿÿÿLuckily, the next popup was right where I wanted it:

sub ebp, ebp ; ebp=0, first character of the password
; will be processed
...
loop1:
....
.... ; code that produces a special number into eax
.... ; eax is in range of 0-255
....
mov cl, [7E125010+eax] ; read from a table of 256 values
mov eax, offset password
xor [eax+ebp], al ; xor the ebp-letter of the password
inc ebp
cmp ebp, [length of password]
jl looop1

ÿÿÿÿAfter this ridiculous xoring loop, the transformed password was read,
and typed into a string, using wsprintf. If for example POTATOES was
transformed to 8 numbers like a1, 54, a2, 32, ... then with wsprintf
these numbers will be typed in the registry as 41, 31, (asciiz of a1)
35, 34 (asciiz of 54), etc. What a coincidence, when I discovered that
these numbers were the same with the ones in the registry!
OK, so how do I crack this? Well, first I examined how the table was
getting filled (the table is supposed to be pseudorandom) and I recreated
the table, using C (i mean the table placed at 7E125010 in the above code
snip). Then I started scratching my head to find a way back to the original
password, when I realized this: each output value, was produced from
exactly one character of the password! there was no interleaving in the
XOR's! Each letter of the original password was XOR'ed with a value, and
that's it! This means that by checking every entry in the table to see
which one produces the value you search after XORING, you could find the
original password!
ÿÿÿÿFor example: Suppose you have a table of random values a(i),i=0..N-1,
where each a(i) is different from all others a(j), j<>i. You then choose
i randomly, and XOR password[0] with a(i). The same is done with all
letters of the password. To crack this code, all you have to do is:

for each transformed code of the password, password[k]
find by testing all the matrix elements, matrix[j]
which ASCII code XOR'd with matrix[j] gives password[k]

This is not computationally expensive brute force, since you check 256
values for each letter! A ZX Spectrum would compute the password in
half a second. A PC, say, in 1 sec :)

OK, here's the code:

<--
#include
#include
#include

unsigned char matrix[256+2];
unsigned char matrixok[256+2];
unsigned char mystery[4]={ 0xb2, 0xdc, 0x90, 0x8f };
unsigned char h1;
unsigned char pa[79], passwd[80];
unsigned char tofind[30];
int h2=4;
unsigned int lentofind;
int len;

void fixmatrix()
{
unsigned char orig, mys, help1, last;
int i,j, help2;

for(i=0; i<256; i++)
matrix[i]=i;
matrix[256]=0; matrix[256+1]=0;
h1=0; last=0;
for(j=0;j<256;j++) {
orig=matrix[j];
mys=mystery[h1];
help2=(mys+last+matrix[j]) & 0xff;
help1=matrix[help2];
matrix[j]=help1;
matrix[help2]=orig;
last=help2;
h1++; h1=h1%4;
}
memcpy(matrixok, matrix, sizeof(matrix));
}

void check(char *test)
{
unsigned char help1, oldh2;
int i;

strcpy(passwd, test);
strcpy(pa, passwd);
len=strlen(pa);

memcpy(matrix, matrixok, sizeof(matrix));

h1=0; h2=0;
for(i=0;i='0'))
return 1;
else if ((a<='F') && (a>='A'))
return 1;
else
return 0;
}

int nibble(char c)
{
if((c>='A') && (c<='F'))
return (10+c-'A');
else if((c>='0') && (c<='9'))
return (c-'0');
}

void parse(char *inpt)
{
char *tok;
char num[2];

lentofind=0;
tok=strtok(inpt, "\t ,\n");
while(tok!=NULL) {
num[0]=tok[0]; num[1]=tok[1];
if ((!is_ok(num[0])) || (!is_ok(num[1])))
{
puts("Please input strings like: a1,b1,05,c3,d2,f3");
exit(0);
}
tofind[lentofind++]=16*nibble(num[0])+nibble(num[1]);

tok=strtok(NULL, "\t ,\n");
}
tofind[lentofind]=0;
}

void main()
{
unsigned int i;
int j,found=0;
unsigned char tst[80];
char inpt[120];

fixmatrix();
printf("Windows 95 Screen Saver Cracker.\nMade by Lonely Hawk.\n\n");
printf("Give me the codes, separated by commas (in hex):\n >");
gets(inpt);
for(i=0;i
ÿÿÿÿThis kind of stupid Microsoft coding makes me think a little. What would be
the ideal way to hide these passwords? The reason I cracked Microsoft's code
is NOT because I have SoftIce. The reason is because the algorithm is
ridiculous. The way I see it, to do real cryptography, you must use an
algorithm that cannot be reversed, but cannot also be cracked by brute
force. Take the UNIX algorithm for instance: everyone has the code for
it, but no one can reverse it. And to brute force it, you need a
supercomputer running for ages. If Microsoft used such an algorithm,
I would have to crack the system to get in: alter the code to do a
jnz instead of a jz. And if the code is only deletable from administrative
accounts, I would not be able to do anything.
Or at least, that's what I would let them think... :)

Lonely Hawk
 
·µ»Ø
%¡¾³õѧÌìµØ¡¿
                
·µ»Ø
O¡¾ÎÊÌâ´ðÒÉ¡¿
jin:how to crack winzip password?

Hi, there

I am a newbie of software cracking. I learned a lot from your magazine.
They are great!

I tried to use some cracking software to do this job, but it seems that
it will take an incredible long time to make it on my slow computer. So
I give this up.

I just wonder, if I can use SI or TRW to crack winzip file password. I
tried to use "bpx hmemcpy" to trace winzip, but can not find anything.
After I enter the fake password, TRW pops up, but before I do any
tracing, the error message already comes up. Can you give me some idea?

Thanks!

Jin

ÿÿÿjin£¬Äã¿ÉÒÔʹÓÃÊÕ´°À¹½Ø·¨À´×·×ÙËüÊÔÒ»ÊÔ£¬Éèbpx lockmytask£¬ºóµ±³öÏÖ´íÎó´°¿Úʱ£¬µã»÷OKºó£¬½«±»À¹ÏÂÀ´£¬ÕâʱÄã¿ÉÒÔÌøµ½Ö÷³ÌÐòÖвéÕÒ¿ÉÒÔÌøµ½³ö´íµØ·½µÄcall»òje£¬jneµÈ£¬ÕâÖ»ÊÇÒ»¸ö·½·¨£¬²»Ò»¶¨³É¹¦¡£Èç¹û´ó¼ÒÓÐʲô¸üºÃµÄ½¨Ò飬¿ÉÒÔÏòÎÒµÄÐÅÏäдÐÅ¡£

·µ»Ø
4¡¾ÍøÕ¾½éÉÜ¡¿
windµÄ°²È«ÍøÕ¾£ºhttp://biggow.8u8.com

ÿÿÿÿwind--·ç£¬Ò»¸öºÜºÃÌýµÄÃû×Ö£¬ÏóÒ»¸öÅ®º¢×ÓµÄÃû×Ó£¬ËûµÄÍøÕ¾¾ÍÈçËûµÄÃû×ÖÒ»ÑùÓÐ×ÅÈÃÄãÐĶ¯µÄµØ·½¡£ÎÒͬwidÍøÕ¾µÄ°ßÖñ´Ó²»Ïàʶµ½ÏàÖª£¬ÕâʹÎÒ¸ü¶àµÄÁ˽âËûµÄÍøÕ¾¡£½ñÌìÏò´ó¼ÒÍƼöÕâ¸ö½âÃÜÍøÕ¾ÖµµÃ´ó¼ÒÈ¥¿´Ò»¿´¡£Ê×ÏÈÕâ¸öÍøÕ¾µÄÄÚÈÝËäÈ»²»Èç¹ûÆäËü±È½Ï³öÃûµÄ½âÃÜÕ¾µãµÄÈ«¶ø¶à£¬µ«ÊÇËýÈ´ÓÐ×ÅÒ»ÖÖÄêÇàµÄ³¯Æø¡£ÒòΪËýµÄ°ßÖñÊÇÒ»¸öÕýÔÚÉÏѧµÄѧÉú¡£Èç¹ûÄãÏë²éÕÒij¸öÈí¼þµÄ×¢²áÂë»òÊÇ×¢²á»úµÄ»°£¬ÄãÒ»¶¨ÒªÈ¥Õâ¸öÍøÕ¾£¬ÒòΪËûרΪ¸÷λÌṩÕâ·½ÃæµÄÍøÕ¾£¬¶øÎÒµÄÍøվȴÊǽÌѧÍøÕ¾¡£µ±ÄãÐèҪע²áÂë»ò×¢²á»úʱ£¬²»·ÁÈ¥ÕâÀÏàÐÅËýÒ»¶¨²»»áÈÃÄãʧÍûµÄ¡£

·µ»Ø
,¡¾ÔÓÖ¾ÐÅÏä¡¿
Ͷ¸åÐÅÏ䣺discoveredit@china.com
´ðÒÉÐÅÏ䣺discoveranswer@china.com
°ßÖñÐÅÏ䣺programhunter@china.com
·µ»Ø