Section '.data' data readable writeable 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Section '.data' data readable writeable



DllErrBoxTitle db 'Сообщение об ошибке',0

 

Section '.code' code readable executable

proc DllEntryPoint hinstDll, fdwReason, lpvReserved

   mov eax,TRUE

   ret

endp

proc DllErrBox hWnd, errMsg

invoke MessageBox,[hWnd],[errMsg],DllErrBoxTitle,MB_OK + MB_ICONERROR

   ret

endp

 

Section '.idata' import data readable writeable

library USER32, 'USER32.DLL'

 

import USER32,\

   MessageBox, 'MessageBoxA'

 

Section '.edata' export data readable

export 'neyavno_dll.dll',\

   DllErrBox, 'DllErrBox'

 

Section '.reloc' fixups data readable discardable 

 

Пример приложения с неявной загрузкой DLL:

 

Format PE GUI 6.0

Entry start

 

include 'C:\Users\work\Desktop\fasmw17121\INCLUDE\win32a.inc'

 

Section '.data' data readable writeable

 msg1 db '[message]',13,10

    db ' Invoke DllErrBox,HWND_DESKTOP,msg1,\',13,10

    db ' import neyavno_dll.dll,\',13,10

    db ' DllErrBox, ''DllErrBox''',13,10

    db '[/message]',0

 

Section '.code' code readable executable

start:

   invoke DllErrBox, HWND_DESKTOP, msg1

   invoke ExitProcess,0

 

Section '.idata' import data readable writeable

library KERNEL32,'KERNEL32.DLL',\

  neyavno_dll, 'neyavno_dll.dll'

import KERNEL32,\

   ExitProcess, 'ExitProcess'

import neyavno_dll,\

   DllErrBox, 'DllErrBox'   

 

Пример приложения с явной загрузкой DLL:

 

Format PE GUI 6.0

Entry start

 

include 'C:\Users\work\Desktop\fasmw17121\INCLUDE\win32a.inc'

 

Section '.data' data readable writeable

dllName db 'neyavno_dll.dll',0;dll name that to be loaded

funcName db 'DllErrBox',0  ;function / proc name that wish to be called

funcAddr dd?          ;store function address

msgBoxTitle db 'Îøèáêà',0

msgBoxDll db 'Çàïðàøèâàåìàÿ DLL íå íàéäåíà!',0

msgBoxProc db 'Çàïðàøèâàåìàÿ ïîäïðîãðàììà íå íàéäåíà!',0

msg1   db '[message]',13,10

       db ' invoke LoadLibrary,dllName',13,10

       db ' invoke GetProcAddress,eax,funcName',13,10

       db ' invoke funcAddr,HWND_DESKTOP,msg1',13,10

       db '[/message]',0

 

Section '.code' code readable executable

start:

   invoke LoadLibrary,dllName

       cmp eax,NULL

       je dll_not_found

   invoke GetProcAddress,eax,funcName

       cmp eax,NULL

       je proc_not_found

       mov [funcAddr],eax

   invoke funcAddr,HWND_DESKTOP,msg1

       jmp exit

  

   dll_not_found:

       invoke MessageBox,HWND_DESKTOP,msgBoxDll,msgBoxTitle,MB_OK + MB_ICONERROR

           jmp exit

   proc_not_found:

       invoke MessageBox,HWND_DESKTOP,msgBoxProc,msgBoxTitle,MB_OK + MB_ICONERROR

           jmp exit

exit:

       invoke ExitProcess,0

 

Section '.idata' import data readable

library KERNEL32,'KERNEL32.DLL',\

   USER32, 'USER32.DLL'

import KERNEL32,\

   GetProcAddress, 'GetProcAddress',\

   LoadLibrary, 'LoadLibraryA',\

   ExitProcess, 'ExitProcess'

 

import USER32,\

   MessageBox, 'MessageBoxA'       

 

 

Примеры Win 32/64 API -функций получения системной информации

 

Некоторые Win 32/64 API -функции получения системной информации: GetComputerName, GetSystemMetrics, GetWindowsDirectoty, GetKeyboardTy ре, GetTempPath, Set Со m р uterName, GetSysColor, GetUserName, SetSysColors, CecSystemDirectory, GetVersion, SystemParametersInfo, GetSystemlnfo, GetVersioriEx, GetUserName.

Функция GetComputerName используется для получения текущего имени компьютера. Связанная с ней SetСomputerName используется для присвоения имени компьютеру.

 

BOOL GetComputerName (

LPTSTR IpBuffer,   // Адрес буфера имени.

LPDWORD nSize               // Размер буфера имени.
);

Функции GetWindowsDirectory, GetSystemDirectory и GetTempPath находят путь к каталогу, к системному каталогу и к каталогу временных файлов Windows. Например, функция GetSystemDirectory определена как:

 

U 1 NT GetSystemDirectory (

LPTSTR IpBuffer,          // Адрес буфера системного каталога



Поделиться:


Последнее изменение этой страницы: 2021-07-18; просмотров: 65; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.14.218.79 (0.005 с.)