Внедрение DLL и подключение к ресурсам EXE

Здесь можно найти готовые «кирпичики» — части кода, пригодные для построения более крупных проектов, а также решения различных типовых и не очень задач на VB.

Модератор: Brickgroup

The trick
Постоялец
Постоялец
 
Сообщения: 722
Зарегистрирован: 26.06.2010 (Сб) 23:08

Внедрение DLL и подключение к ресурсам EXE

Сообщение The trick » 05.07.2021 (Пн) 17:06

Доброго времени суток!

Данный пример содержит модуль инжекта ActiveX DLL в нужный поток процесса, а также показывает как подсоединится к работающему EXE и получить доступ к его VB.Global объекту. Это позволяет к примеру вызывать методы открытых форм/контролов/App и т.д. кажется Хакер когда-то хотел что-то подобное написать.

Модуль инжекта позволяет создавать объекты в других потоках и получать отмаршаленую ссылку - методы можно вызывать прямо из IDE. В примере запускается EXE и вызываются методы его формы:

Код: Выделить всё
    If CreateProcess(StrPtr(App.Path & "\..\dummy\dummy.exe"), 0, ByVal 0&, ByVal 0&, 0, 0, ByVal 0&, 0, tSI, tPI) = 0 Then
        MsgBox "CreateProcess failed"
        Exit Sub
    End If
   
   . . .
   
    Set cVBGetGlobal = CreateVBObjectInThread(tPI.dwThreadId, App.Path & "\..\dll\GetVBGlobal.dll", "CExtractor")
    Set cForms = cVBGetGlobal.Forms
   
    Set frmMain = cForms(0)
   
    ' // Change back color of picturebox
    frmMain.Controls("picTest").BackColor = vbRed
   
    ' // Draw line on picturebox
    frmMain.Controls("picTest").Line (0, 0)-Step(100, 50), vbGreen, BF
    frmMain.Caption = "Test"


Сам код доступа к объекту VB.Global находится в ActiveX DLL, которая внедряется в процесс с помощью модуля инжекта. Вообще доработав логику можно еще дополнительно поизвлекать переменные и в модулях.

Ссылка.
UA6527P

Вернуться в Кирпичный завод

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList