Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DLL: с C на асм, не работает 
V
    Опции темы
nerezus
  Дата 6.6.2007, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Код

#include <windows.h>

HHOOK hHook;
HINSTANCE hInstance;

 
LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam) {
    if(code == HC_ACTION ) {
        MessageBox(0, "exit", "exit", 0);
    }
    return CallNextHookEx( hHook, code, wParam, lParam );
}
 
BOOL CALLBACK DllMain(HINSTANCE hModule, DWORD dwReason, LPVOID lpReserved) {
    hInstance = hModule;
    return 1;
}
 
void SetHook() {
    hHook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, hInstance, 0);
}


Код

.386

   .model flat,stdcall
   option casemap:none
   
   include \masm32\include\windows.inc
   include \masm32\include\kernel32.inc
   include \masm32\include\user32.inc
   
   includelib \masm32\lib\kernel32.lib
   includelib \masm32\lib\user32.lib

  .data
    hInstance dd 0
    msgExit db "Exit",0

  .data?
    hHook dd ?
    hWnd dd ?

  .code
    DllMain proc hInst:HINSTANCE, reason:DWORD, reserved1:DWORD
           push hInst
           pop hInstance

       mov  eax, 1
       ret
    DllMain Endp


    KeyboardProc proc nCode:DWORD,wParam:DWORD,lParam:DWORD
        .if nCode == HC_ACTION
            invoke MessageBox, 0, msgExit, msgExit, 0
        .endif
        invoke CallNextHookEx, hHook, nCode, wParam, lParam
        ret
   KeyboardProc endp
   
   
    SetHook proc
        invoke SetWindowsHookEx, WH_KEYBOARD, addr KeyboardProc, hInstance, 0
        mov hHook, eax
        ret
    SetHook endp


   End DllMain



Проверять этим:
Код

#include <windows.h>
 
int main() {
    MSG msg;
    HMODULE hmod = LoadLibrary("dll.dll");
    FARPROC SetHook = GetProcAddress(hmod, "SetHook");
    SetHook();
    while(!GetMessage(&msg, NULL, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return 0;
}




Компилю сишниковую так:
cl /c dll.c /Fodll.obj
link /NOLOGO /DLL dll.obj kernel32.lib user32.lib /EXPORT:KeyboardProc /EXPORT:SetHook

Асмовую так:
c:\masm32\bin\ml.exe /nologo /c /coff  "dll.asm"
c:\masm32\bin\link.exe /NOLOGO /DLL dll.obj kernel32.lib user32.lib /EXPORT:KeyboardProc /EXPORT:SetHook


Собственно проблема в том, что на сишнике работает, а на асме - нет.



Это сообщение отредактировал(а) nerezus - 6.6.2007, 13:30


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
dumb
Дата 6.6.2007, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 2
Всего: 158



не уследил... smile
Код

            invoke MessageBox, 0, ADDR msgExit, ADDR msgExit, 0


Добавлено через 1 минуту и 39 секунд
можно сразу проверять свою забывчивость на предмет addr: поиск в бинарнике 66 50 6A 00...
PM MAIL   Вверх
nerezus
  Дата 6.6.2007, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



спс )


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для Windows/DOS"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для Windows/Dos | Следующая тема »


 




[ Время генерации скрипта: 0.0414 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.