elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  [NTDLL] Sacar puntero API - LdrLoadDll() + LdrGetProcedureAddress()
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [NTDLL] Sacar puntero API - LdrLoadDll() + LdrGetProcedureAddress()  (Leído 3,728 veces)
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
[NTDLL] Sacar puntero API - LdrLoadDll() + LdrGetProcedureAddress()
« en: 10 Febrero 2010, 18:06 pm »

Código
  1. Option Explicit
  2.  
  3. 'NTDLL
  4. 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
  5. Private Declare Function LdrGetProcedureAddress Lib "NTDLL" (ByVal ModuleHandle As Long, ByRef paFunctionName As Long, ByVal Ordinal As Integer, ByRef FunctionAddress As Long) As Long
  6. Private Declare Sub RtlInitUnicodeString Lib "NTDLL" (DestinationString As Any, ByVal SourceString As Long)
  7.  
  8. Private Type UNICODE_STRING
  9.    uLength         As Integer
  10.    uMaximumLength  As Integer
  11.    pBuffer         As Long
  12. End Type
  13.  
  14. Public Function NtLoadLibrary(ByVal sName As String) As Long
  15.    Dim US          As UNICODE_STRING
  16.  
  17.    Call RtlInitUnicodeString(US, StrPtr(sName))
  18.    Call LdrLoadDll(ByVal 0&, ByVal 0&, US, NtLoadLibrary)
  19. End Function
  20.  
  21. Public Function NtGetProcAddr(ByVal lModuleHandle As Long, ByVal sProc As String) As Long
  22.    Dim i           As Long
  23.    Dim ANSI()      As Byte
  24.  
  25.    ReDim ANSI(0 To Len(sProc))
  26.    For i = 1 To Len(sProc)
  27.        ANSI(i - 1) = Asc(Mid$(sProc, i, 1))
  28.    Next i
  29.  
  30.    Call LdrGetProcedureAddress(lModuleHandle, VarPtr(ANSI(0)), ByVal 0&, NtGetProcAddr)
  31. End Function

Es el equivalente nativo de LoadLibrary+GetProcAddress :D

Ejemplo:
Código
  1. Option Explicit
  2. 'KERNEL32
  3. Private Declare Function LoadLibrary Lib "KERNEL32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
  4. Private Declare Function GetProcAddress Lib "KERNEL32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
  5.  
  6. Private Sub Form_Load()
  7.    MsgBox Hex$(NtGetProcAddr(NtLoadLibrary("KERNEL32"), "ExitProcess")) & vbCrLf & Hex$(GetProcAddress(LoadLibrary("KERNEL32"), "ExitProcess"))
  8. End Sub

Cualquier duda... preguntar! ;)

Saludos ::)


En línea

ssccaann43 ©


Desconectado Desconectado

Mensajes: 792


¬¬


Ver Perfil
Re: [NTDLL] Sacar puntero API - LdrLoadDll() + LdrGetProcedureAddress()
« Respuesta #1 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.


En línea

- Miguel Núñez
Todos tenemos derechos a ser estupidos, pero algunos abusan de ese privilegio...
"I like ^TiFa^"
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: [NTDLL] Sacar puntero API - LdrLoadDll() + LdrGetProcedureAddress()
« Respuesta #2 en: 10 Febrero 2010, 19:19 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!¡.
.
En línea

The Dark Shadow is my passion.
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: [NTDLL] Sacar puntero API - LdrLoadDll() + LdrGetProcedureAddress()
« Respuesta #3 en: 10 Febrero 2010, 20:15 pm »

Como 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..


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
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines