| ²é¿´: 305 | »Ø¸´: 0 | |||
| µ±Ç°Ö÷ÌâÒѾ´æµµ¡£ | |||
sdlj8051½ð³æ (ÖøÃûдÊÖ)
|
[½»Á÷]
[תÌù]Ö±Ãæ MSLRH
|
||
|
Ê×ÏÈÒþ²Øod, ÔÚ GetCommandLineA ºÍ ZwQueryInformationProcessµÄÈë¿ÚÒÔ¼° GetProcAddressµÄ³ö¿Ú´¦£¨RETN 8£©Ï¶ϣ¬ ²¢ºöÂÔËùÓÐÒì³£¡£ ¼øÓÚ MSLRH µÄÖ÷ÒªÊÖ¶ÎÊÇ rdtsc, дһС¶Î¶ÔËü clear/restore ´úÂëÈçÏ£º 00468800 E8 00000000 CALL [MSLRH].00468805 ;clear rdtsc ´úÂë¶ÎÈë¿Ú 00468805 5E POP ESI 00468806 83EE 10 SUB ESI,10 ;¶¨Î»±£´æÏÂÃæÉêÇëµÄmemoryÖ¸ÕëµÄµØÖ· 00468809 AD LODS DWORD PTR DS:[ESI] 0046880A 85C0 TEST EAX,EAX 0046880C 75 13 JNZ SHORT [MSLRH].00468821 0046880E 6A 04 PUSH 4 00468810 68 00100000 PUSH 1000 00468815 68 00400000 PUSH 4000 0046881A 6A 00 PUSH 0 0046881C E8 E90FA177 CALL kernel32.VirtualAlloc ;ÉêÇëMemoryÒÔ±£´æÐÞ¸ÄÁË rdtsc µÄµØÖ· 00468821 8946 FC MOV DWORD PTR DS:[ESI-4],EAX 00468824 BF 00604500 MOV EDI,[MSLRH]. 00468829 B9 00200100 MOV ECX,12000 0046882E B0 0F MOV AL,0F 00468830 F2:AE REPNE SCAS BYTE PTR ES:[EDI] ;²éÕÒ 00468832 75 1B JNZ SHORT [MSLRH].0046884F 00468834 803F 31 CMP BYTE PTR DS:[EDI],31 00468837 ^75 F7 JNZ SHORT [MSLRH].00468830 00468839 8B16 MOV EDX,DWORD PTR DS:[ESI] ;ÕÒµ½ rdtsc 0046883B 8B5E FC MOV EBX,DWORD PTR DS:[ESI-4] 0046883E 8D1C93 LEA EBX,DWORD PTR DS:[EBX+EDX*4] 00468841 FF06 INC DWORD PTR DS:[ESI] ;¼ÆÊý 00468843 8D57 FF LEA EDX,DWORD PTR DS:[EDI-1] 00468846 8913 MOV DWORD PTR DS:[EBX],EDX ;±£´æµØÖ· 00468848 66:C702 9090 MOV WORD PTR DS:[EDX],9090 ;patch 0046884D ^EB E1 JMP SHORT [MSLRH].00468830 0046884F C3 RETN ;=============================================================================================== 00468850 E8 00000000 CALL [MSLRH].00468855 ;Restore rdtsc ´úÂë¶ÎÈë¿Ú 00468855 5E POP ESI 00468856 83EE 60 SUB ESI,60 00468859 AD LODS DWORD PTR DS:[ESI] ;µÃµ½ÉÏÃæµÄmemoryÖ¸ÕëµÄµØÖ· 0046885A 8BC8 MOV ECX,EAX 0046885C AD LODS DWORD PTR DS:[ESI] ;µÃµ½Ð޸ļÆÊý 0046885D 91 XCHG EAX,ECX 0046885E 8BF0 MOV ESI,EAX 00468860 AD LODS DWORD PTR DS:[ESI] ;µÃµ½Ð޸ĹýµÄµØÖ· 00468861 66:C700 0F31 MOV WORD PTR DS:[EAX],310F ;»Ö¸´ 00468866 ^E2 F8 LOOPD SHORT [MSLRH].00468860 00468868 C3 RETN ;=============================================================================================== 00468869 60 PUSHAD 0046886A E8 91FFFFFF CALL [MSLRH].00468800 ;call to Clear rdtsc 0046886F 61 POPAD 00468870 -E9 8BD7FEFF JMP [MSLRH]. 00468877 60 PUSHAD 00468878 E8 D3FFFFFF CALL [MSLRH].00468850 ;call to Restore rdtsc 0046887D 61 POPAD 0046887E -E9 A0D8FEFF JMP [MSLRH].00456123 ;ÓÃʱ»¹ÒªÐÞ¸Äjmp µØÖ·£¨Ò»´Î£© ;================================================================================================ Begin:: ¹â±ê¶¨Î»ÓÚÉÏÃæ 00468869 Ctrl+ Gray * £¬F9ÔËÐУ¬Í£ÔÚGetProcAddressµÄ³ö¿Úµã£¬È¥µô´Ë´¦¶Ïµã£¬F7»Øµ½ÏÂÃæ 0045A5DE 8946 14 MOV DWORD PTR DS:[ESI+14],EAX ; kernel32.OutputDebugStringA Ctrl + B ËÑË÷0F31£¬¿´µ½ÒÔÏ´úÂ룬ÔÚ0045A81B϶ϣ¬ 0045A80E 0F31 RDTSC 0045A810 2B0424 SUB EAX,DWORD PTR SS:[ESP] 0045A813 83C4 04 ADD ESP,4 0045A816 3D FFFFFF00 CMP EAX,0FFFFFF 0045A81B ^0F87 D0B8FFFF JA [MSLRH].004560F1 ;ÕâÀï϶ϣ¬ÖжϺóתµ½ÏÂÒ»Ö¸Ápush esi£© 0045A821 56 PUSH ESI ;ÕâÀïÖ´ÐÐ F9ÔËÐе½ÉÏÃæ¶Ïµã´¦£¬¹â±êÒÆµ½ÏÂÒ»ÌõÓï¾ä PUSH ESIÉÏCtrl+ Gray *£¬ËÑË÷PUSH DWORD PTR FS:[30]£¬ÕÒµ½ºóÔÚËüÏÂÃæµÄ ADD DWORD PTR DS:[EBX],0C8ÉÏ϶ϣ¬ÈçÏ 0045B1D0 75 28 JNZ SHORT [MSLRH].0045B1FA 0045B1D2 64:FF35 30000000 PUSH DWORD PTR FS:[30] 0045B1D9 58 POP EAX 0045B1DA 0FB648 02 MOVZX ECX,BYTE PTR DS:[EAX+2] 0045B1DE 884E 0C MOV BYTE PTR DS:[ESI+C],CL 0045B1E1 8B40 0C MOV EAX,DWORD PTR DS:[EAX+C] 0045B1E4 8B40 0C MOV EAX,DWORD PTR DS:[EAX+C] 0045B1E7 8D58 20 LEA EBX,DWORD PTR DS:[EAX+20] 0045B1EA 8D48 18 LEA ECX,DWORD PTR DS:[EAX+18] 0045B1ED 8103 C8000000 ADD DWORD PTR DS:[EBX],0C8 ;ÐÞ¸ÄÍ·²¿£¬´Ë´¦Ìø¹ý 0045B1F3 B8 00000000 MOV EAX,0 0045B1F8 0101 ADD DWORD PTR DS:[ECX],EAX 0045B1FA 33C9 XOR ECX,ECX 0045B1FC E8 00000000 CALL [MSLRH].0045B201 0045B201 5F POP EDI 0045B202 81C7 C1090000 ADD EDI,9C1 0045B208 0FB60439 MOVZX EAX,BYTE PTR DS:[ECX+EDI] / 0045B20C 83F0 11 XOR EAX,11 |¶¯ 0045B20F 880439 MOV BYTE PTR DS:[ECX+EDI],AL |̬ 0045B212 41 INC ECX |½â 0045B213 81F9 521D0000 CMP ECX,1D52 |Âë 0045B219 ^72 ED JB SHORT [MSLRH].0045B208 \ 0045B21B EB 05 JMP SHORT [MSLRH].0045B222 ;ÕâÀïÏÂ¶Ï ÖжϺóÇå³ý¶Ïµã²¢Ìø¹ý0045B1EDÓï¾ä¡£´Ó0045B1FC---0045B219F9ÊǽâÂ룬ÔÚ0045B21B϶ϣ¬F9ͣϺóÔÙ´ÎʹÓÃÎÒÃÇ µÄClear rdtsc ´úÂ루עÒâÐ޸ķµ»ØµØÖ·¸Ä³É0045B21B£© go£¡³ÌÐòÖжÏÔÚOutputDebugStringAÈë¿Ú£¡µ±È»²»ÒªÖ´ÐÐÕâ ¸öº¯Êý£¬Ìøµ½³ö¿Ú F9£¬ÓÖÔÚGetCommandLineAÈë¿ÚÖжϣ¬µ¥²½Ö´Ðзµ»Øµ½³ÌÐò¿Õ¼ä£¬¿´µ½£º 0045EDD7 40 INC EAX 0045EDD8 33C9 XOR ECX,ECX 0045EDDA 41 INC ECX 0045EDDB 803C01 00 CMP BYTE PTR DS:[ECX+EAX],0 0045EDDF 74 0C JE SHORT [MSLRH].0045EDED 0045EDE1 803C01 22 CMP BYTE PTR DS:[ECX+EAX],22 0045EDE5 ^75 F3 JNZ SHORT [MSLRH].0045EDDA 0045EDE7 C60401 00 MOV BYTE PTR DS:[ECX+EAX],0 0045EDEB ^EB ED JMP SHORT [MSLRH].0045EDDA 0045EDED 6A 00 PUSH 0 0045EDEF 6A 00 PUSH 0 0045EDF1 6A 03 PUSH 3 0045EDF3 6A 00 PUSH 0 0045EDF5 6A 00 PUSH 0 ;×¢ÒâÕâÀï ShareMode = 0 0045EDF7 68 00000080 PUSH 80000000 0045EDFC 50 PUSH EAX 0045EDFD FF56 1C CALL DWORD PTR DS:[ESI+1C] ; kernel32.CreateFileA 0045EE00 EB 05 JMP SHORT [MSLRH].0045EE07 ³ÌÐòÕâÀï´ò¿ªÎļþÊÇΪÁË anti ImportREC£¬×ªµ½0045EE00£¬F9£¬ÖжÏÔÚZwQueryInformationProcessÈë¿Ú£¬F8Öð²½·µ »Øµ½³ÌÐòÖУ¬ 0045F7CD 58 POP EAX 0045F7CE 8846 0E MOV BYTE PTR DS:[ESI+E],AL ;Ìø¹ý´Ë¾ä 0045F7D1 EB 05 JMP SHORT [MSLRH].0045F7D8 µ½0045F7CEºóÌø¹ý¡£ ÏÂÃæÎÒÃÇÒªÃæ¶Ô CRC £¬Ó¦¸Ã»Ö¸´Ìæ»»³É nop nop µÄ rdtscÁË£¬×÷ÈçϲÙ×÷£º 1)ÕÒµ½Õâ¶Î´úÂëµÄ½áÊø´¦£¬Ctrl + F ÊäÈë or ebp,-1£¬ÕÒµ½ºóÔÚÆäÏÂÃæµÄ retn ÉÏÏÂ¶Ï 0046207B 83CD FF OR EBP,FFFFFFFF 0046207E 68 ADE29F00 PUSH 9FE2AD 00462083 C3 RETN ;ÕâÀïÏÂ¶Ï 2)Ìøµ½00468877Ö´Ðлָ´´úÂ룬·µ»ØµØÖ·00456123¸Ä³É0045F7D1 Ok£¬F9£¬ÖжϷ¢ÉúÀ²£¬¿´µ½£º 0046207E 68 ADE29F00 PUSH 004528C0 00462083 C3 RETN ;Çå³ý¶Ïµãµ¥²½ F7£¬¿´µ½unpack º¯ÊýÀ²£¡ÔÚËüµÄ³ö¿Ú£¨jmp 00413D56£©Ï¶ϣ¬ÖжϺóF7¾Í¡°·ÉÏò¹âÃ÷Ö®áÛ¡±¡£ ¸½ 1£º[clear/restore ´úÂë]£¬ÓÐÐËȤ¾Í°ÑËüÕ³µ½00468800ÊÔÊÔ£¬×¢ÒâÎÒÕâÀïOSÊÇxp sp1£¬Èç¹ûÊÇÆäËûϵͳӦ¸Ã°Ñ 0046881C´¦µÄ call VirtualAlloc Óï¾äÐÞÕýһϠE8 00 00 00 00 5E 83 EE 10 AD 85 C0 75 13 6A 04 68 00 10 00 00 68 00 40 00 00 6A 00 E8 E9 0F A1 77 89 46 FC BF 00 60 45 00 B9 00 20 01 00 B0 0F F2 AE 75 1B 80 3F 31 75 F7 8B 16 8B 5E FC 8D 1C 93 FF 06 8D 57 FF 89 13 66 C7 02 90 90 EB E1 C3 E8 00 00 00 00 5E 83 EE 60 AD 8B C8 AD 91 8B F0 AD 66 C7 00 0F 31 E2 F8 C3 60 E8 91 FF FF FF 61 E9 8B D7 FE FF 00 00 60 E8 D3 FF FF FF 61 E9 A0 D8 FE FF ¸½ 2£ºÓÐÅóÓÑÌáµ½ rdtsc µÄÎÊÌ⣬ÆäʵÎÒÒ²²»Ì«Çå³þ£¬±àÁ˸öСµÄÑÝʾ³ÌÐò£¬Äã¿ÉÒÔ£º 1.Ö±½ÓÖ´ÐÐ 2.ÓÃOD¼ÓÔØF9 3.OD¼ÓÔØºóµ¥²½ ¿´¿´ÓÐÉ¶Çø±ð [ Last edited by sdlj8051 on 2006-10-6 at 11:28 ] |
» ²ÂÄãϲ»¶
É격26Äê
ÒѾÓÐ4È˻ظ´
307Çóµ÷¼Á
ÒѾÓÐ5È˻ظ´
Ò»Ö¾Ô¸C9²ÄÁÏÓ뻯¹¤×¨Òµ×Ü·Ö300Çóµ÷¼Á
ÒѾÓÐ5È˻ظ´
274Çóµ÷¼Á
ÒѾÓÐ3È˻ظ´
299Çóµ÷¼Á
ÒѾÓÐ7È˻ظ´
0703»¯Ñ§µ÷¼Á£¬Çóµ¼Ê¦ÊÕ
ÒѾÓÐ4È˻ظ´
300Çóµ÷¼Á£¬²ÄÁÏ¿ÆÑ§Ó¢Ò»Êý¶þ
ÒѾÓÐ3È˻ظ´
²ÄÁÏѧ˶£¬Çóµ÷¼Á
ÒѾÓÐ6È˻ظ´
307Çóµ÷¼Á
ÒѾÓÐ6È˻ظ´
²ÄÁÏר˶331Çóµ÷¼Á
ÒѾÓÐ3È˻ظ´













»Ø¸´´ËÂ¥