;============================================================================================================================================= ; step_22.asm ;Call the functions directly from a DLL with the use of GetProcAddress ; Algorithm ;A1: Get handle of Kernel32.dll ;A2: Get the address of DeleteFile ;A3: Call function ;(C)I don't take any responsibility for the use of this program ; Zedr0n -- connection closed ;============================================================================================================================================= ;============================================================================================================================================= ; Options/Declarations ;============================================================================================================================================= .386 .model flat, stdcall option casemap:none include windows.inc include kernel32.inc include user32.inc includelib \masm32\lib\kernel32.lib includelib \masm32\lib\user32.lib ;============================================================================================================================================= ; Data segment ;============================================================================================================================================= .data Module db "Kernel32",0 Caption db "Zedr0n's step #22",0 Err_1 db "Couldn't load Kernel32.dll",0 Func_Name db "DeleteFileA",0 Err_2 db "Couldn't find DeleteFile function",0 Del_file db "1.txt",0 ;============================================================================================================================================ ; Variables segment ;============================================================================================================================================ .data? hKernel HANDLE ? Del_address dd ? ;============================================================================================================================================= ; Code segment ;============================================================================================================================================= .code start: A1: invoke GetModuleHandle,offset Module mov hKernel,eax .if eax==NULL invoke MessageBox,NULL,offset Err_1,offset Caption,MB_OK invoke ExitProcess,NULL .endif A2: invoke GetProcAddress,hKernel,offset Func_Name mov Del_address,eax .if eax==NULL invoke MessageBox,NULL,offset Err_2,offset Caption,MB_OK invoke CloseHandle,hKernel invoke ExitProcess,NULL .endif A3: push offset Del_file call Del_address Exit: invoke CloseHandle,hKernel invoke ExitProcess,NULL end start