AddressOf / Tamaño de funcion

Iniciado por Miseryk, 9 Mayo 2011, 23:14 PM

0 Miembros y 1 Visitante están viendo este tema.

Miseryk

Hola a todos, estuve viendo el tema del address de una función.
Código:
Código (vb) [Seleccionar]

[Module1]
Option Explicit

Sub Main()
'MsgBox Hex(AddressOf procesoX)

'Dim ThisAddress&

'ThisAddress& = Adrs&(AddressOf procesoX)
'MsgBox ThisAddress& & " - (" & Hex(ThisAddress&) & ")"
End Sub

Public Function Adrs(ByVal Addrs As Long) As Long
Adrs = Addrs
End Function

Public Function procesoX(ParamArray ParametrosX() As Variant) As String
procesoX = "procesoX"
End Function

Public Function Valor(ByVal v1 As Long, ByVal v2 As Long) As Long
Valor = v1 + v2
End Function

Public Sub Mensaje()
MsgBox "Test"
End Sub


Código (vb) [Seleccionar]

[Form1]
Option Explicit

Private Sub Command1_Click()
Dim ThisAddress As Long

Text1.Text = ""

ThisAddress = Adrs(AddressOf procesoX)
Text1.Text = Text1.Text & "AddressOf procesoX: " & Hex(ThisAddress) & vbCrLf & _
"[Public Function procesoX(ParamArray ParametrosX() As Variant) As String" & vbCrLf & _
"procesoX = ''procesoX''" & vbCrLf & _
"End Function" & "]" & vbCrLf & vbCrLf

ThisAddress = Adrs(AddressOf Valor)
Text1.Text = Text1.Text & "AddressOf Valor: " & Hex(ThisAddress) & vbCrLf & _
"[Public Function Valor(ByVal v1 As Long, ByVal v2 As Long) As Long" & vbCrLf & _
"Valor = v1 + v2" & vbCrLf & _
"End Function" & "]" & vbCrLf & vbCrLf

ThisAddress = Adrs(AddressOf Mensaje)
Text1.Text = Text1.Text & "AddressOf Mensaje: " & Hex(ThisAddress) & vbCrLf & _
"[Public Sub Mensaje()" & vbCrLf & _
"MsgBox ''Test''" & vbCrLf & _
"End Sub" & "]"

'ThisAddress& = Adrs&(AddressOf Mensaje)

'Me.Caption = Hex(ThisAddress)
End Sub

Private Sub Command2_Click()
Call Mensaje
End Sub


Gracias a BlackZeroX por el este code que me dió hace mucho  ;-) ;-) ;-)

Ahora la pregunta es: cómo puedo obtener la longitud de cada función? Porque lo que estoy tratando de hacer, es injectar en otro programa solo la función Mensaje (por ejemplo) y hacerle un jmp en el MessageBoxA del ejecutable víctima, donde alojé dicha función. Gracias a to2.
Can you see it?
The worst is over
The monsters in my head are scared of love
Fallen people listen up! It's never too late to change our luck
So, don't let them steal your light
Don't let them break your stride
There is light on the other side
And you'll see all the raindrops falling behind
Make it out tonight
it's a revolution

CL!!!

Karcrack

Las funciones siempre acaban del mismo modo, hay dos tipos de final de funcion dependiendo del tipo... no recuerdo muy bien... pero con el OllyDbg podras verlo... y luego sencillamente te hara falta un bucle con RtlMoveMemory() para leer hasta el final de la funcion :)