LoadLibrary из стека

Тема в разделе "WASM.WIN32", создана пользователем xh4ck, 6 мар 2005.

  1. xh4ck

    xh4ck New Member

    Публикаций:
    0
    Регистрация:
    6 мар 2005
    Сообщения:
    60
    Адрес:
    Russia
    Есть код:


    Код (Text):
    1.  
    2. .386
    3. .model flat, stdcall
    4.  
    5. CodeSize = @Endcode - @StartCode
    6.  
    7. .code
    8. start: 
    9.     mov     esi, offset @StartCode
    10.    
    11.     sub esp, CodeSize
    12.     mov ecx, CodeSize
    13.     mov edi, esp
    14.    
    15.     cld
    16.     rep     movsb  
    17.    
    18.     mov     ebp, esp
    19.         call    ebp
    20.         add     esp, CodeSize
    21.         retn
    22.      
    23.    
    24. @StartCode:
    25.      
    26.     mov ebp, 07C801D77h ; Адрес LoadLibrary (для примера hardcoded)
    27.      
    28.     push offset libsz
    29.     call ebp
    30.     ret
    31.    
    32. @Endcode:
    33.  
    34. libsz       db "advapi32.dll",0
    35.  
    36. end start
    37.  




    LoadLibrary врзвращает ноль.

    Копирую код уже не в стек, а в динамич. память, выделенную перед этим через LocalAlloc - та же история.

    Почему?
     
  2. xh4ck

    xh4ck New Member

    Публикаций:
    0
    Регистрация:
    6 мар 2005
    Сообщения:
    60
    Адрес:
    Russia
    _ хотел поправку внести, не заметил, что у форума такая фича есть
     
  3. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    xh4ck

    Для варианта со стеком.

    Добавь три nop'а между ret и @Endcode: и будет тебе счастье. А на досуге подумай почему указатель стека лучше менять кратно четырем.



    Для варианта с LocalAlloc: покажи код.
     
  4. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Вот рабочий код (ессно для XPSP2) копируй куда надо. возвращает 77DC0000h
    Код (Text):
    1. E8 09000000                    call    $+0Eh
    2. 61 64 76 61 70 69 33 32 00     db      "advapi32",0
    3. BD 771D807C                    mov     ebp, 7C801D77h ; kernel32.LoadLibraryA
    4. FFD5                           call    ebp                        
     
  5. xh4ck

    xh4ck New Member

    Публикаций:
    0
    Регистрация:
    6 мар 2005
    Сообщения:
    60
    Адрес:
    Russia
    Спасибо q_q!!



    дошло до меня ;))



    а в варианте с LocalAlloc я тож со стеком накосматил!

    теперь все ок.