Важная информация
Показано с 1 по 2 из 2

Тема: Загрузка DLL из памяти

  1. #1 Загрузка DLL из памяти 
    Профи Аватар для stabud
    Регистрация
    05.01.2013
    Сообщений
    787
    Сказал(а) спасибо
    327
    Поблагодарили 350 раз(а) в 277 сообщениях
    Записей в блоге
    6
    Кем данная техника была воспроизведена впервые, не знаю. Так же исходники MemoryModule на СИ сейчас недоступны(кто знает где их взять, просьба выложить). Пример использования и заголовки подготовил voodooattack с оф. сайта. Сам я не пользуюсь подобной техникой, потому как говорят что это колдовство чистой воды... Хотя думаю , что есть люди, которым это интересно. Принцип прост:

    Бинарно укладываем нашу DLL в исполняемый файл и оттуда загружаем.

    Вот пример DLL:

    Код freebasic:
    Function addNumbers Cdecl (ByVal x As Integer, ByVal y As Integer) As Integer Export
        Return (x + y)
    End Function

    А это сам пример использования:

    Код freebasic:
    #Include "MemoryModule.bi"
     
    Dim As Byte Ptr         DLLDATA
    Dim As HMEMORYMODULE    myDll
     
    Dim addNumbers As Function Cdecl (ByVal As Integer, ByVal As Integer) As Integer
     
    Open "TestDll.dll" For Binary As #1
    DLLDATA = Allocate(Lof(1))
    If Get (#1,, *DLLDATA, Lof(1)) Then
        Print "Error reading library file to memory."
        End
    End If
    Close #1
     
    myDll = MemoryLoadLibrary(DLLDATA)
     
    If myDll Then
        Print "Library load successful.."
        addNumbers = MemoryGetProcAddress(myDll, "addNumbers")
        If addNumbers Then
            Print "Symbol found.."
            Print "Calling addNumbers() from memory:"
            Print "10+12="; addNumbers(10,12)
        Else
            Print "Error obtaining proc address."
        End If
    Else
        Print "Error loading Library."
    End If
     
    MemoryFreeLibrary(myDll)
    DeAllocate (DLLDATA)
     
    Sleep


    Архив со всем содержимым:

    [Ссылки могут видеть только зарегистрированные пользователи. ]
    Последний раз редактировалось Konstantin Shcherba; 07.01.2013 в 05:04. Причина: Добавил подсветку
    Ответить с цитированием  
     

  2. Пользователь сказал cпасибо:

    >Quiet Snow< (05.01.2013)

  3. #2  
    Супер модератор Аватар для >Quiet Snow<
    Регистрация
    11.04.2011
    Адрес
    Планета земля
    Сообщений
    3,950
    Сказал(а) спасибо
    1,847
    Поблагодарили 992 раз(а) в 850 сообщениях
    Записей в блоге
    1
    Хотя думаю , что есть люди, которым это интересно.
    Спасибо stabud, код интересный!
    Обучение прикладному программированию(по skype), качественно, недорого, 18+, вопросы в личку.
    «Если вы ничего не сделаете, я уверяю вас, ничего и не произойдёт» © Жак Фреско
    Ограниченно модерирую.
    Ответить с цитированием  
     

Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Загрузка PCXfile
    от Павел в разделе C/C++
    Ответов: 2
    Последнее сообщение: 01.04.2012, 14:53
  2. Получение памяти в DOS из COM программы.
    от Абадябер в разделе Assembler
    Ответов: 11
    Последнее сообщение: 28.11.2011, 21:51
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •