; ษอออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออป

; บ This file is generated by The Interactive Disassembler (IDA)    บ

; บ Copyright (c) 1998 by DataRescue sa/nv, <ida@datarescue.com>    บ

; ศอออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออผ



:0048C0E0 55				push    ebp;Protocolo de llamada a funciones.

:0048C0E1 8B EC				mov     ebp, esp

:0048C0E3 83 EC 10			sub     esp, 10h;16 bytes de pila para variables locales

:0048C0E6 50				push    eax;Guardamos los registros.

:0048C0E7 53				push    ebx

:0048C0E8 51				push    ecx

:0048C0E9 52				push    edx

:0048C0EA 57				push    edi

:0048C0EB 56				push    esi

:0048C0EC BE 40 c1 48 00		mov     esi, 48C140h;1บ parametro.Zona de datos

:0048C0F1 8D 86 C8 00 00 00		lea     eax, [esi+0C8h];Direccion en la zona de datos para el 2บ parametro

:0048C0F7 BF 1A 77 F7 BF		mov     edi, 0BFF7771Ah;2บ parametro.Direcci๓n de GetmodulehandleA

:0048C0FC 89 38				mov     [eax], edi;Guardamos el 2บ parametro en la zona de datos.

:0048C0FE 8D 86 CC 00 00 00		lea     eax, [esi+0CCh];Direccion en la zona de datos para el 3บ parametro

:0048F104 BF AC 6D F7 BF		mov     edi, 0BFF76DACh;3บ parametro.Direcci๓n de GetProcAddress

:0048F109 89 38				mov     [eax], edi;Guardamos el 3บ parametro en la zona de datos.

:0048F10B 8D 86 2B 00 00 00		lea     eax, [esi+2Bh];Cadena:Comdlg32

:0048F111 50				push    eax;Cadena:Comdlg32

:0048F112 FF 96 C8 00 00 00		call    dword ptr [esi+0C8h];Calculamos el handle de Comdlg32

:0048F118 8D 5E 34			lea     ebx, [esi+34h];Cadena:GetSaveFileNameA

:0048F11B 53				push    ebx;Cadena:GetSaveFileNameA

:0048F11C 50				push    eax;handle de Comdlg32

:0048F11D FF 96 CC 00 00 00		call    dword ptr [esi+0CCh];Calculamos la direcci๓n de GetSaveFileNameA

:0048F123 8B D8				mov     ebx, eax;Guardamos la direcci๓n del GetSaveFileNameA

:0048F125 6A 00				push    0;Handle del fichero que lanz๓ la aplicaci๓n.

:0048F127 FF 96 C8 00 00 00		call    dword ptr [esi+0C8h];Calculamos el handle de la aplicaci๓n.

:0048F12D 8B D0				mov     edx, eax;Guardamos el handle de la aplicaci๓n

:0048F12F 8D 7E 77			lea     edi, [esi+77h];Direcci๓n de inicio de la estructura de GetSaveFileNameA

:0048F132 B9 4C 00 00 00		mov     ecx, 4Ch;Tama๑o de la estructura.

:0048F137 31 C0				xor     eax, eax;Reseteamos la estructura con 0.

:0048F139 F3 AA				repe stosb;Escribimos los ceros.

:0048F13B 8D 7E 77			lea     edi, [esi+77h];Direcci๓n de inicio de la estructura de GetSaveFileNameA

:0048F13E C7 07 4C 00 00 00		mov     dword ptr [edi],4Ch;Guardamos en la estructura su tama๑o

:0048F144 89 57 08			mov     [edi+8],edx;Guardamos en la estructura handle de la aplicaci๓n

:0048F147 8D 46 56			lea     eax, [esi+56h];lpstrCustomFilter

:0048F14A 8D 4F 01			lea     ecx, [edi+1];Direccion para almacenar el nombre del fichero a salvar

:0048F14D 8D 56 45			lea     edx, [esi+45h];lpstrTitle

:0048F150 89 47 0C			mov     [edi+0Ch], eax;Guardamos en la estructura lpstrCustomFilter

:0048F153 89 4F 1C			mov     [edi+1Ch], ecx;Guardamos en la estructura la direccion para almacenar el nombre del fichero a salvar

:0048F156 C7 47 20 01 2C 00 00		mov     dword ptr [edi+20h], 2C01h;Tama๑o basura del buffer para almacenar el nombre del fichero a salvar

:0048F15D 89 57 30			mov     [edi+30h], edx;Guardamos en la estructura lpstrTitle

:0048F160 C7 47 34 06 00 08 00		mov     dword ptr [edi+34h],80006h;Guardamos en la estructura los flags.HIDEREADONLY|OVERWRITEPROMPT|EXPLORER

:0048F167 8D 46 6D			lea     eax, [esi+6D];Extensi๓n por defecto.

:0048F16A 89 47 3C			mov     [edi+3ch], eax;Guardamos la extensi๓n por defecto

:0048F16D 57				push    edi;Direcci๓n de inicio de la estructura de GetSaveFileNameA

:0048F16E FF D3				call    ebx;GetSaveFileNameA

:0048F170 3D 01 00 00 00		cmp     eax,1;Tenemos un nombre de fichero vแlido?

:0048F175 75 5D				jnz     short loc_0_48F1D4; Si no hay nombre, salimos.

:0048F177 56				push    esi;Cadena:Kernel32

:0048F178 FF 96 C8 00 00 00		call    dword ptr [esi+0C8h];Calculamos el handle del Kernel32

:0048F17E 8B F8				mov     edi, eax;Guardamos el handle de Kernel32

:0048F180 8D 5E 15			lea     ebx, [esi+15h];Cadena:CreateFileA

:0048F183 53				push    ebx;Cadena:CreateFileA

:0048F184 50				push    eax;Handle de Kernel32

:0048F185 FF 96 CC 00 00 00		call    dword ptr [esi+0CCh];Calculamos la direcci๓n de CreateFileA

:0048F18B 8D 5E 78			lea     ebx, [esi+78h];Direcci๓n del nombre del fichero dentro de la estructura

:0048F18E 6A 00				push    0;Sin template

:0048F190 68 80 00 00 00		push    80h;Fichero normal

:0048F195 6A 02				push    2;Crear siempre

:0048F197 6A 00				push    0;Sin atributos de seguridad

:0048F199 6A 01				push    1;Permite lectura compartida

:0048F19B 68 00 00 00 C0		push    0C0000000h;abierto para lectura y escritura

:0048F1A0 53				push    ebx;Direcci๓n del nombre del fichero dentro de la estructura

:0048F1A1 FF D0				call    eax;CreateFileA

:0048F1A3 8B D8				mov     ebx, eax;Guardamos el handle del fichero creado

:0048F1A5 8D 4E 21			lea     ecx, [esi+21h];Cadena:WriteFile

:0048F1A8 51				push    ecx;Cadena:WriteFile

:0048F1A9 57				push    edi;Handle de Kernel32

:0048F1AA FF 96 CC 00 00 00		call    dword ptr [esi+0CCh];Calculamos la direcci๓n de WriteFile

:0048F1B0 8D 96 D0 00 00 00		lea     edx, [esi+0D0h];Direcci๓n de inico de memoria a salvar en el fichero

:0048F1B6 8D 8E D4 00 00 00		lea     ecx, [esi+0D4h];Direccion para guardar el n๚mero de bytes a escribir

:0048F1BC 6A 00				push    0;No overlapped

:0048F1BE 51				push    ecx;Direccion para guardar el n๚mero de bytes a escribir

:0048F1BF FF 31				push    dword ptr [ecx];N๚mero de bytes a escribir

:0048F1C1 FF 32				push    dword ptr [edx];Direcci๓n de inico de memoria a salvar en el fichero

:0048F1C3 53				push    ebx;Handle del fichero creado

:0048F1C4 FF D0				call    eax;CreateFile

:0048F1C6 8D 56 09			lea     edx,[esi+9];Cadena:CloseHandle

:0048F1C9 52				push    edx;Cadena:CloseHandle

:0048F1CA 57				push    edi;Handle de Kernel32

:0048F1CB FF 96 CC 00 00 00		call    dword ptr [esi+0CCh];Calculamos la direcci๓n de CloseHandle

:0048F1D1 53				push    ebx;Handle del fichero creado

:0048F1D2 FF D0				call    eax;Close Handle			

:0048F1D4 5E				pop     esi;Restauramos los registros

:0048F1D5 5F				pop     edi

:0048F1D6 5A				pop     edx

:0048F1D7 59				pop     ecx

:0048F1D8 5B				pop     ebx

:0048F1D9 58				pop     eax

:0048F1DA 83 C4 10			add     esp, 10h;Protocolo de salida

:0048F1DD 8B E5				mov     esp, ebp

:0048F1DF 5D				pop     ebp

:0048F1D0 C3				retn    ;Volvemos al punto de llamada