Уроки Iczelion'а


         

если вы хотите скомпилировать DLL,


/SECTION:, S
Имя секции инициализированных данных '.data', а неинициализированных - '.bss'. Например, если вы хотите скомпилировать DLL, которая содержит хук-процедуру, и вам нужно, что секция неинициализированных данных разделялась между процессами, вы должны использовать следующую команду:
link /section:.bss,S /DLL /SUBSYSTEM:WINDOWS ..........
атрибут 'S' отмечает, что секция разделяемая.
Пpимеp:
Есть два модуля: один - это основная программа с GUI'ем, а другая - это DLL, которая устанавливает/снимает хук.
;--------------------------------------------- ; Исходный код основной программы ;--------------------------------------------- .386 .model flat,stdcall option casemap:none
include \masm32\include\windows.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc include mousehook.inc
includelib mousehook.lib includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib
wsprintfA proto C :DWORD,:DWORD,:VARARG wsprintf TEXTEQU
.const IDD_MAINDLG equ 101 IDC_CLASSNAME equ 1000
IDC_HANDLE equ 1001 IDC_WNDpROC equ 1002 IDC_HOOK equ 1004 IDC_EXIT equ 1005
WM_MOUSEHOOK equ WM_USER+6
DlgFunc pROTO :DWORD,:DWORD,:DWORD,:DWORD
.data HookFlag dd FALSE
HookText db "&Hook",0 UnhookText db "&Unhook",0 template db "%lx",0
.data? hInstance dd ? hHook dd ?
.code start: invoke GetModuleHandle,NULL mov hInstance,eax
invoke DialogBoxparam,hInstance,IDD_MAINDLG,NULL,addr DlgFunc,NULL invoke Exitprocess,NULL
DlgFunc proc hDlg:DWORD,uMsg:DWORD,wparam:DWORD,lparam:DWORD LOCAL hLib:DWORD LOCAL buffer[128]:byte LOCAL buffer1[128]:byte
LOCAL rect:RECT .if uMsg==WM_CLOSE .if HookFlag==TRUE invoke UninstallHook
.endif invoke EndDialog,hDlg,NULL .elseif uMsg==WM_INITDIALOG invoke GetWindowRect,hDlg,addr rect
invoke SetWindowpos, hDlg, HWND_TOpMOST, rect.left, rect.top, rect.right, rect.bottom, SWp_SHOWWINDOW .elseif uMsg==WM_MOUSEHOOK invoke GetDlgItemText,hDlg,IDC_HANDLE,addr buffer1,128
invoke wsprintf,addr buffer,addr template,wparam invoke lstrcmpi,addr buffer,addr buffer1 .if eax!=0 invoke SetDlgItemText,hDlg,IDC_HANDLE,addr buffer

Содержание  Назад  Вперед





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий