Solved

Plz Help / Calling external DLL

Posted on 2008-10-19
3
422 Views
Last Modified: 2008-11-14
Hi ! How to add a reference to the third party dll in the class ? can you please let me know by coding ..thanks
0
Comment
Question by:s_maha1978
3 Comments
 
LVL 6

Expert Comment

by:wwnosal
Comment Utility
0
 

Author Comment

by:s_maha1978
Comment Utility
Hi THANKS< instead of dll importhow can reference that dll without adding to my current project. I mean like is there anything like Load library methods ??
0
 

Accepted Solution

by:
Hipposaver earned 250 total points
Comment Utility
its called "Dll Injection" heres a code; usage
MsgBox LoadDLL(DLLPath.text, ProcessName.text)

modules:
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long

Private Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long

Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long

Private Declare Function VirtualAllocEx Lib "kernel32" (ByVal hProcess As Long, lpAddress As Any, ByVal dwSize As Long, ByVal fAllocType As Long, FlProtect As Long) As Long

Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long

Private Declare Function CreateRemoteThread Lib "kernel32" (ByVal ProcessHandle As Long, lpThreadAttributes As Long, ByVal dwStackSize As Long, ByVal lpStartAddress As Any, ByVal lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadID As Long) As Long

Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
 

Private Const MEM_COMMIT As Long = &H1000

Private Const PAGE_READWRITE As Long = &H4

Private Const PROCESS_ALL_ACCESS As Long = &H1F0FFF

Private Const TH32CS_SNAPPROCESS As Long = &H2

Private Const STANDARD_RIGHTS_REQUIRED As Long = &HF0000

Private Const SYNCHRONIZE As Long = &H100000

Private Const PROCESS_ALL_ACCESS As Long = (STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF)
 

Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

Private Declare Function FindWindow Lib "USER32" Alias "FindWindowA" (ByVal Classname As String, ByVal WindowName As String) As Long

Private Declare Function GetWindowThreadProcessId Lib "USER32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long

Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long

Private Declare Function Process32First Lib "kernel32" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long

Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long

Private Declare Sub CloseHandle Lib "kernel32" (ByVal hPass As Long)
 

Private Type PROCESSENTRY32

    dwSize As Long

    cntUsage As Long

    th32ProcessID As Long

    th32DefaultHeapID As Long

    th32ModuleID As Long

    cntThreads As Long

    th32ParentProcessID As Long

    pcPriClassBase As Long

    dwFlags As Long

    szExeFile As String * 260

End Type
 
 

Private Function LoadDLL(DLLPath As String, EXEName As String) As Integer

Dim hAlloc As Long, hProcID As Long, hInject As Long, hLL As Long, hThread As Long

hProcID = GetProcID(EXEName)

hAlloc = VirtualAllocEx(hProcID, ByVal 0, Len(DLLPath), MEM_COMMIT, ByVal PAGE_READWRITE)

If hAlloc Then

    hInject = WriteProcessMemory(hProcID, hAlloc, ByVal DLLPath, Len(DLLPath), 0)

    If hInject Then

        hLL = GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA")

        If hLL Then

            hThread = CreateRemoteThread(hProcID, 0, 0, hLL, hAlloc, 0, 0)

            If hThread = 0 Then

                LoadDLL = 1

            End If

        Else

            LoadDLL = 2

        End If

    Else

        LoadDLL = 3

    End If

Else

    LoadDLL = 4

End If

End Function
 

Public Function GetProcID(ByVal EXEName As String) As Long

Dim sEName() As String

Dim f As Long, sName As String

Dim hSnap As Long, proc As PROCESSENTRY32, hProc As Long, proc1 As PROCESSENTRY32

hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)

IsRunning = False

proc.dwSize = Len(proc)

If hSnap <> 0 Then

    f = Process32First(hSnap, proc)

    Do While f

        sName = Left$(proc.szExeFile, InStr(1, proc.szExeFile, Chr(0)) - 1)

        sEName = Split(sName, "\")

        sName = sEName(UBound(sEName))

        If LCase(sName) = LCase(EXEName) Then 'lcase() for NOT case sensitive

            GetProcID = OpenProcess(PROCESS_ALL_ACCESS, False, proc.th32ProcessID)

            Exit Function

        End If

        f = Process32Next(hSnap, proc)

    Loop

End If

End Function

Open in new window

0

Featured Post

Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

Join & Write a Comment

Enums (shorthand for ‘enumerations’) are not often used by programmers but they can be quite valuable when they are.  What are they? An Enum is just a type of variable like a string or an Integer, but in this case one that you create that contains…
Since upgrading to Office 2013 or higher installing the Smart Indenter addin will fail. This article will explain how to install it so it will work regardless of the Office version installed.
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now