Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: Karcrack en 10 Febrero 2010, 18:06 PM

Título: [NTDLL] Sacar puntero API - LdrLoadDll() + LdrGetProcedureAddress()
Publicado por: Karcrack en 10 Febrero 2010, 18:06 PM
Código (vb) [Seleccionar]
Option Explicit

'NTDLL
Private Declare Function LdrLoadDll Lib "NTDLL" (ByVal pWPathToFile As Long, ByVal Flags As Long, ByRef pwModuleFileName As UNICODE_STRING, ByRef ModuleHandle As Long) As Long
Private Declare Function LdrGetProcedureAddress Lib "NTDLL" (ByVal ModuleHandle As Long, ByRef paFunctionName As Long, ByVal Ordinal As Integer, ByRef FunctionAddress As Long) As Long
Private Declare Sub RtlInitUnicodeString Lib "NTDLL" (DestinationString As Any, ByVal SourceString As Long)

Private Type UNICODE_STRING
    uLength         As Integer
    uMaximumLength  As Integer
    pBuffer         As Long
End Type

Public Function NtLoadLibrary(ByVal sName As String) As Long
    Dim US          As UNICODE_STRING

    Call RtlInitUnicodeString(US, StrPtr(sName))
    Call LdrLoadDll(ByVal 0&, ByVal 0&, US, NtLoadLibrary)
End Function

Public Function NtGetProcAddr(ByVal lModuleHandle As Long, ByVal sProc As String) As Long
    Dim i           As Long
    Dim ANSI()      As Byte

    ReDim ANSI(0 To Len(sProc))
    For i = 1 To Len(sProc)
        ANSI(i - 1) = Asc(Mid$(sProc, i, 1))
    Next i

    Call LdrGetProcedureAddress(lModuleHandle, VarPtr(ANSI(0)), ByVal 0&, NtGetProcAddr)
End Function

http://www.advancevb.com.ar/?p=306

Es el equivalente nativo de LoadLibrary+GetProcAddress :D

Ejemplo:
Código (vb) [Seleccionar]
Option Explicit
'KERNEL32
Private Declare Function LoadLibrary Lib "KERNEL32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "KERNEL32" (ByVal hModule As Long, ByVal lpProcName As String) As Long

Private Sub Form_Load()
    MsgBox Hex$(NtGetProcAddr(NtLoadLibrary("KERNEL32"), "ExitProcess")) & vbCrLf & Hex$(GetProcAddress(LoadLibrary("KERNEL32"), "ExitProcess"))
End Sub


Cualquier duda... preguntar! ;)

Saludos ::)
Título: Re: [NTDLL] Sacar puntero API - LdrLoadDll() + LdrGetProcedureAddress()
Publicado por: ssccaann43 © en 10 Febrero 2010, 19:13 PM
Excelentes aportes Karcrack, sin embargo muchos usuarios o la gran mayoría tiene menos de un 50% de conocimientos en VB y les sería util si explicas en tus aportes la finalidad del source que posteas con el fin de que puedan comprender como usarlo.
Título: Re: [NTDLL] Sacar puntero API - LdrLoadDll() + LdrGetProcedureAddress()
Publicado por: BlackZeroX en 10 Febrero 2010, 19:19 PM
Cita de: ssccaann43 en 10 Febrero 2010, 19:13 PM
Excelentes aportes Karcrack, sin embargo muchos usuarios o la gran mayoría tiene menos de un 50% de conocimientos en VB y les sería util si explicas en tus aportes la finalidad del source que posteas con el fin de que puedan comprender como usarlo.

a mi solo explíquenme el ASM o un Manual online ( Pagina jejejeje ).

P.D.: Como pasas el código ASM a OpCode (asi se le dice No mmm ¬¬"), lo digo por tus otros Post.

Sangrientas Lunas!¡.
.
Título: Re: [NTDLL] Sacar puntero API - LdrLoadDll() + LdrGetProcedureAddress()
Publicado por: Karcrack en 10 Febrero 2010, 20:15 PM
Cita de: BlackZeroX▓▓▒▒░░ en 10 Febrero 2010, 19:19 PMComo pasas el código ASM a OpCode (asi se le dice No mmm ¬¬"), lo digo por tus otros Post.
Ensamblo las instrucciones de ASM con FASM en modo binario (*.BIN) luego con algun editor Hexadecimal (Como el Hex WorkShop) se pueden sacar el formato Currency,Long,Byte... etc..



Cita de: ssccaann43 en 10 Febrero 2010, 19:13 PM
Excelentes aportes Karcrack, sin embargo muchos usuarios o la gran mayoría tiene menos de un 50% de conocimientos en VB y les sería util si explicas en tus aportes la finalidad del source que posteas con el fin de que puedan comprender como usarlo.
Cualquier duda que tengan que posteen, si es coherente respondere sin ningun problema... Ademas, este codigo esta claro lo que hace no? :P