Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Miseryk en 9 Mayo 2011, 23:14 pm



Título: AddressOf / Tamaño de funcion
Publicado por: Miseryk en 9 Mayo 2011, 23:14 pm
Hola a todos, estuve viendo el tema del address de una función.
Código:
Código
  1. [Module1]
  2. Option Explicit
  3.  
  4. Sub Main()
  5. 'MsgBox Hex(AddressOf procesoX)
  6.  
  7. 'Dim ThisAddress&
  8.  
  9. 'ThisAddress& = Adrs&(AddressOf procesoX)
  10. 'MsgBox ThisAddress& & " - (" & Hex(ThisAddress&) & ")"
  11. End Sub
  12.  
  13. Public Function Adrs(ByVal Addrs As Long) As Long
  14. Adrs = Addrs
  15. End Function
  16.  
  17. Public Function procesoX(ParamArray ParametrosX() As Variant) As String
  18. procesoX = "procesoX"
  19. End Function
  20.  
  21. Public Function Valor(ByVal v1 As Long, ByVal v2 As Long) As Long
  22. Valor = v1 + v2
  23. End Function
  24.  
  25. Public Sub Mensaje()
  26. MsgBox "Test"
  27. End Sub
  28.  

Código
  1. [Form1]
  2. Option Explicit
  3.  
  4. Private Sub Command1_Click()
  5. Dim ThisAddress As Long
  6.  
  7. Text1.Text = ""
  8.  
  9. ThisAddress = Adrs(AddressOf procesoX)
  10. Text1.Text = Text1.Text & "AddressOf procesoX: " & Hex(ThisAddress) & vbCrLf & _
  11. "[Public Function procesoX(ParamArray ParametrosX() As Variant) As String" & vbCrLf & _
  12. "procesoX = ''procesoX''" & vbCrLf & _
  13. "End Function" & "]" & vbCrLf & vbCrLf
  14.  
  15. ThisAddress = Adrs(AddressOf Valor)
  16. Text1.Text = Text1.Text & "AddressOf Valor: " & Hex(ThisAddress) & vbCrLf & _
  17. "[Public Function Valor(ByVal v1 As Long, ByVal v2 As Long) As Long" & vbCrLf & _
  18. "Valor = v1 + v2" & vbCrLf & _
  19. "End Function" & "]" & vbCrLf & vbCrLf
  20.  
  21. ThisAddress = Adrs(AddressOf Mensaje)
  22. Text1.Text = Text1.Text & "AddressOf Mensaje: " & Hex(ThisAddress) & vbCrLf & _
  23. "[Public Sub Mensaje()" & vbCrLf & _
  24. "MsgBox ''Test''" & vbCrLf & _
  25. "End Sub" & "]"
  26.  
  27. 'ThisAddress& = Adrs&(AddressOf Mensaje)
  28.  
  29. 'Me.Caption = Hex(ThisAddress)
  30. End Sub
  31.  
  32. Private Sub Command2_Click()
  33. Call Mensaje
  34. End Sub
  35.  

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.


Título: Re: AddressOf / Tamaño de funcion
Publicado por: Karcrack en 10 Mayo 2011, 20:41 pm
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 :)