24 туториал ICZELION'а(хуки) на fasm помогите поправить.

Тема в разделе "WASM.BEGINNERS", создана пользователем ID$, 29 авг 2006.

Метки:
  1. ID$

    ID$ New Member

    Публикаций:
    0
    Регистрация:
    29 авг 2006
    Сообщения:
    3
    Переписал 24 туториал ICZELION'а про хуки на FASM.
    Работает как должно только со своим окном.

    Когда мышь над чужими окнами postmessage уходит неизвестно куда.
    С masm'овской dll все отлично.

    Поправьте пожалуйста.

    Код dll:

    Код (Text):
    1. format PE GUI 4.0 DLL
    2. entry DllEntry
    3.  
    4. include '%fasminc%\win32a.inc'
    5. include '%fasminc%\MACRO\IF.INC'
    6.  
    7. WM_MOUSEHOOK equ WM_USER+6
    8.  
    9.  
    10. struct MOUSEHOOKSTRUCT
    11.      pt            POINT
    12.      hWnd          dd      ?
    13.      wHitTestCode  dd      ?
    14.      dwExtraInfo   dd      ?
    15. ends
    16.  
    17. DLL_PROCESS_ATTACH equ 1
    18. DLL_PROCESS_DETACH equ 0
    19.  
    20. section '.data' data readable writeable
    21.  
    22. hInstance dd 0
    23. hHook dd ?
    24. hWind dd ?
    25.  
    26. virtual at edx
    27.      pt            POINT
    28.      hwnd          dd      ?
    29.      wHitTestCode  dd      ?
    30.      dwExtraInfo   dd      ?
    31. end virtual
    32.  
    33. section '.code' code readable executable
    34.  
    35.  
    36. proc DllEntry hInst , reason, reserved1
    37.  
    38.        push [hInst]
    39.        pop [hInstance]
    40.        mov  eax,TRUE
    41.        ret
    42. endp
    43.  
    44. proc MouseProc nCode,wParam,lParam
    45.  
    46.         invoke CallNextHookEx,[hHook],[nCode],[wParam],[lParam]
    47.          mov edx,[lParam]
    48.          invoke WindowFromPoint,[pt.x],[pt.y]
    49.          invoke PostMessage,[hWind],WM_MOUSEHOOK,eax,0
    50.         ;invoke PostMessage,dword ptr ds:hWind,WM_MOUSEHOOK,eax,0
    51.         xor eax,eax
    52.         ret
    53. endp
    54.  
    55. proc InstallHook hwn
    56.         push [hwn]
    57.         pop [hWind]
    58.  
    59.         invoke SetWindowsHookEx,WH_MOUSE,MouseProc,[hInstance],0
    60.         mov [hHook],eax
    61.         ret
    62. endp
    63.  
    64. proc UninstallHook
    65.         invoke UnhookWindowsHookEx,[hHook]
    66.         ret
    67. endp
    68.  
    69.  
    70. section '.idata' import data readable writeable
    71.  
    72.   library kernel,'KERNEL32.DLL',\
    73.           user,'USER32.DLL'
    74.  
    75.   import kernel,\
    76.          GetLastError,'GetLastError',\
    77.          SetLastError,'SetLastError',\
    78.          FormatMessage,'FormatMessageA',\
    79.          LocalFree,'LocalFree'
    80.  
    81.   import user,\
    82.          MessageBox,'MessageBoxA',\
    83.          WindowFromPoint,'WindowFromPoint',\
    84.          CallNextHookEx,'CallNextHookEx',\
    85.          SetWindowsHookEx,'SetWindowsHookExA',\
    86.          UnhookWindowsHookEx,'UnhookWindowsHookEx',\
    87.          GetClassName,'GetClassNameA',\
    88.          wsprintf,'wsprintfA',\
    89.          PostMessage,'PostMessageA'
    90.  
    91. section '.edata' export data readable
    92.  
    93.   export 'A.DLL',\
    94.          UninstallHook,'UninstallHook',\
    95.          InstallHook,'InstallHook',\
    96.          MouseProc,'MouseProc'
    97.  
    98. section '.reloc' fixups data discardable
     
  2. nobodyzzz

    nobodyzzz New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2005
    Сообщения:
    475
    Вместо section '.data' data readable writeable должно быть
    section '.data' data readable writeable shareable
    Не внимательно читаем туторы, батенька =)))
     
  3. ID$

    ID$ New Member

    Публикаций:
    0
    Регистрация:
    29 авг 2006
    Сообщения:
    3
    Огромное спасибо.
    А насчет:
    Не внимательно читаем туторы, батенька =)))

    А где 24 туториале ICZELION'а на MASM'е
    "section '.data' data readable writeable shareable"?

    Если знаете где скачать их на fasme, уж скажите, сыночка =)))
     
  4. nobodyzzz

    nobodyzzz New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2005
    Сообщения:
    475
    Вот цитата из это тутора:
    Так что можно было догадаться что надо сказать фасму делать секцию разделяемой и посмотреть в фасм.пдф как это сделать
     
  5. ID$

    ID$ New Member

    Публикаций:
    0
    Регистрация:
    29 авг 2006
    Сообщения:
    3
    А не чувствуете разницы между "внимательно читаем" и "можно было догадаться ".
    Да,и вопрос мой в разделе "WASM.BEGINNERS".
    Да и прочитав :"Решение: вы должны пометить секцию данных как pазделяемую."
    Я бы не догадался пометить ее как shareable - общую.
    Но как бы там ни было Огромное спасибо.
    Вы уж извините, что так отреагировал на первое ваше замечание:
    "Не внимательно читаем туторы, батенька =)))"
     
  6. xlinuks

    xlinuks New Member

    Публикаций:
    0
    Регистрация:
    25 май 2006
    Сообщения:
    181
    Я разделяю мнение ID$, если человек был невнимателен (а еще если учитывать что бывают невнимательными даже профессионалы, можно это признать можно нет но это факт, так как и они люди) то не обязательно указывать ему что он был невнимателен тем более что вопрос действительно помещен в правильном разделе *бегиннерз*, он и так дал об этом знать -
    "ID$ Поправьте пожалуйста."
    Да он мог бы потратить еще неделю изучая все что поподет подруку про фасм и хуки, но в таком случае, намного проще поставить вопрос на форуме чем убить возможно даже 2 недели, ведь если это не так то зачем вообще существует форум?? Для тех кто искал ответ и не нашел его, он именно так сделал. Этож небыл очередной в сотый раз повторяющийся вопрос типа *как скомпилировать программу*..