вопрос по wrapper (proxy) dll

Тема в разделе "WASM.BEGINNERS", создана пользователем SiruS, 3 янв 2010.

  1. SiruS

    SiruS Алекс

    Публикаций:
    0
    Регистрация:
    19 фев 2005
    Сообщения:
    145
    Адрес:
    Львов
    начитавшись http://www.codeproject.com/KB/DLL/CreateYourProxyDLLs.aspx
    хотел перехватить с целью изменения функцию gethostbyname данным методом, но информации о том, как сделать это поиском по форуму ненашел, хотя в темах есть упоминания о том, что данная тема раскрывалась.
    Advanced Dll Wrapper v0.0001 by 90210 /HI-TECH отказываеться кушать wsock32.dll.
    так же во время ковыряний данной темы было обнаружено, что wsock32.dll в экспорте ссылаеться на экспорт ws2_32.dll
    [​IMG]
    такой вариант реализации был бы вообще шикарным, по сравнению с изначальным.

    необходимо: пнуть в нужную сторону или маленький кусочек кода реализации. спасибо всем, кто откликнеться.
     
  2. Rustem

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    SiruS
    Зачем из-за одной функции прокси длл? Проще внедрить свою
     
  3. SiruS

    SiruS Алекс

    Публикаций:
    0
    Регистрация:
    19 фев 2005
    Сообщения:
    145
    Адрес:
    Львов
    одну - для начала, чтобы разобраться. на самом деле приложение использует гораздо больше функций из этой либы.
     
  4. SiruS

    SiruS Алекс

    Публикаций:
    0
    Регистрация:
    19 фев 2005
    Сообщения:
    145
    Адрес:
    Львов
    разобрался, помог товарищ l_inc
    есть 2 варианта реализации: со сквозным експортом и с джампом.

    сквозной експорт:
    Код (Text):
    1. format PE GUI 4.0 DLL
    2. entry DllEntryPoint
    3.  
    4. include 'win32a.inc'
    5.  
    6. section '.code' code readable executable
    7.  
    8. proc DllEntryPoint stdcall uses ebx esi edi, hinstDLL,fdwReason,lpvReserved
    9.    mov     eax,TRUE
    10.    ret
    11. endp
    12.  
    13. data export
    14.  
    15.  export 'through.dll',\
    16.         wrapped_inet_addr,'inet_addr'
    17.  wrapped_inet_addr         db 'ws2_32.inet_addr',0
    18.  
    19. end data
    20.  
    21. section '.reloc' fixups data discardable
    джампом:
    Код (Text):
    1. format PE GUI 4.0 DLL
    2. entry DllEntryPoint
    3.  
    4. include 'win32a.inc'
    5.  
    6. section '.code' code readable executable
    7.  
    8. proc DllEntryPoint stdcall uses ebx esi edi, hinstDLL,fdwReason,lpvReserved
    9.    mov     eax,TRUE
    10.    ret
    11. endp
    12.  
    13. wrapped_inet_addr: jmp dword[inet_addr]
    14.  
    15. data import
    16.  
    17.  library ws2_32,'ws2_32.dll'
    18.  
    19.  import ws2_32,\
    20.         inet_addr,'inet_addr'
    21.  
    22. end data
    23.  
    24. data export
    25.  
    26.  export 'jump.dll',\
    27.         wrapped_inet_addr,'inet_addr'
    28.  
    29. end data
    30.  
    31. section '.reloc' fixups data discardable