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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Problema pasando parametros a llamada remota :P
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema pasando parametros a llamada remota :P  (Leído 1,990 veces)
F3B14N

Desconectado Desconectado

Mensajes: 47


Ver Perfil
Problema pasando parametros a llamada remota :P
« en: 9 Junio 2010, 05:47 am »

Hola gente del mundo ;D
Probablemente muchos no me conozcan ya que soy el indito uruguayo ;D
Se que no participo en el foro, y no deberia estar pidiendo ayuda, pero estoy trabajando en algo y el señor Karcrack quien me daba una mano cuando tenia problemillas siempre aparecia con la solucion pero anda muy ocupado :-X  :D, asi que vengo a pedirles ayuda con este pequeño code que hice a partir de un sc de inyeccion de una libreria en un proceso remoto en C. El cual intenta llamar un api remota, lo cual funciona, pero el problema esta al pasarle los parametros, ojeando los CallApiByName que andan por la net, trate de hacerlo pero FAIL FAIL juaz :P

Código:
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long

Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function VirtualAllocEx Lib "kernel32" (ByVal hProcess As Long, lpAddress As Any, ByVal dwSize As Long, ByVal flAllocationType As Long, ByVal flProtect As Long) As Long
Private Declare Function VirtualFreeEx Lib "kernel32" (ByVal hProcess As Long, lpAddress As Any, ByVal dwSize As Long, ByVal dwFreeType As Long) As Long

Private Declare Function CreateRemoteThread Lib "kernel32" (ByVal hProcess As Long, lpThreadAttributes As Any, ByVal dwStackSize As Long, lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadId As Long) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Const PROCESS_ALL_ACCESS = &H1F0FFF
Private Const MEM_COMMIT = &H1000
Private Const MEM_RELEASE = &H8000
Private Const PAGE_READWRITE = &H4
Private Const INFINITE = &HFFFFFFFF

Public Function ExecuteDll(lPid As Long) As Boolean
Dim hVictim As Long
Dim hInject As Long
Dim lParamAddress As Long
Dim lStartAddress As Long
Dim bB() As Byte
Dim sTmp As String

hVictim = OpenProcess(PROCESS_ALL_ACCESS, 0, lPid): If hVictim = 0 Then Exit Function
If hVictim = 0 Then: GoTo Error
'===
sTmp = "68" & GetLng(0) & _
"68" & GetLng(StrPtr("HOLA")) & _
"68" & GetLng(StrPtr("HOLA")) & _
"68" & GetLng(0) & "68"

Call PutThunk(sTmp, bB)
'===
lStartAddress = GetProcAddress(GetModuleHandle("USER32"), "MessageBoxA"): If lStartAddress = 0 Then GoTo Error
lParamAddress = VirtualAllocEx(hVictim, 0&, UBound(bB) + 1, MEM_COMMIT, PAGE_READWRITE): If lParamAddress = 0 Then GoTo Error
Call WriteProcessMemory(hVictim, lParamAddress, ByVal VarPtr(bB(0)), UBound(bB) + 1, ByVal 0&)
'===
hInject = CreateRemoteThread(hVictim, ByVal 0&, 0&, ByVal lStartAddress, lParamAddress, 0, ByVal 0&)
If hInject = 0 Then: GoTo Error
'===

Call WaitForSingleObject(hInject, INFINITE)
Call CloseHandle(hVictim)
Call CloseHandle(hInject)

ExecuteDll = True
Exit Function

Error:
Call CloseHandle(hInject)
Call CloseHandle(hVictim)

ExecuteDll = False
End Function

Private Function GetLng(ByVal lLng As Long) As String
Dim lTMP As Long

lTMP = (((lLng And &HFF000000) &H1000000) And &HFF&) Or ((lLng And &HFF0000) &H100&) Or ((lLng And &HFF00&) * &H100&) Or ((lLng And &H7F&) * &H1000000) ' by Mike D Sutton
If (lLng And &H80&) Then lTMP = lTMP Or &H80000000

GetLng = String$(8 - Len(Hex$(lTMP)), "0") & Hex$(lTMP)
End Function

Private Sub PutThunk(ByVal sThunk As String, ByRef bvRet() As Byte)
Dim i As Long

ReDim bvRet(0)

For i = 0 To Len(sThunk) - 1 Step 2
bvRet(i / 2) = CByte("&H" & Mid$(sThunk, i + 1, 2))
ReDim Preserve bvRet(UBound(bvRet) + 1)
Next i

ReDim Preserve bvRet(UBound(bvRet) - 1)
End Sub

Sub Main()
ExecuteDll 7756, 0
End Sub

Espero que alguno tenga un tiempito en corregir la parte de los paramentros en el sc, ya que pienso pero no puedo solucionarlo, y estoy trabajando en algo muy interesante y me gustaria poder concretarlo, y para eso necesito esto working  :-*  :silbar:

Gracias y saludos desde el pequeño uruguay a todos los coderz que andan por ahi  :D


« Última modificación: 9 Junio 2010, 05:55 am por F3B14N » En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: Problema pasando parametros a llamada remota :P
« Respuesta #1 en: 10 Junio 2010, 18:35 pm »

El problema es que le pasas los punteros de tu proceso... No puedes hacer eso... Cuando tu le envias el puntero por ejemplo de la cadena "HOLA" este puntero es solo de tu proceso, y desde cualquier otro proceso no puede ser leido como si nada...

Es decir, tendras que escribir tanto el codigo que pushea como los argumentos que pusheas en la memoria del proceso ajeno...


En línea

F3B14N

Desconectado Desconectado

Mensajes: 47


Ver Perfil
Re: Problema pasando parametros a llamada remota :P
« Respuesta #2 en: 10 Junio 2010, 20:24 pm »

Listo, solucionado  ;D

Gracias Karcrack  :D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con llamada de funciones (SOLUCIONADO)
Java
dato000 4 4,647 Último mensaje 14 Febrero 2011, 21:05 pm
por dato000
Ayudenme problema con llamada entrante o Ras
Redes
Freedom_for_all 1 2,037 Último mensaje 6 Marzo 2013, 00:13 am
por OmarHack
glTest1: Problema con la convención de llamada
Programación C/C++
85 1 2,475 Último mensaje 7 Marzo 2013, 23:22 pm
por 85
problema con parametros
Programación C/C++
m@o_614 2 3,203 Último mensaje 9 Julio 2013, 01:12 am
por rir3760
funcion en c que pueda ser llamada con parámetros de distintos tipos « 1 2 »
Programación C/C++
etcheverrypablol 17 7,738 Último mensaje 16 Marzo 2016, 11:30 am
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines