Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: ^_^ en 23 Julio 2009, 21:38 pm



Título: Una pregunta sobre los ejecutables.
Publicado por: ^_^ en 23 Julio 2009, 21:38 pm
Wenas, bueno no me recuerdo donde pero se que vi el Topic de un tema por internet que decia algo de cambiar el App.path o algo asi de los archivos ( .exe ) es posible que se pueda cambiar el app.path de algun exe para que lo de equivocado? y si es asi en que parte del PE el app.path esta guardado? ...

Gracias y espero su colaboracion.


Título: Re: Una pregunta sobre los ejecutables.
Publicado por: Lupin en 23 Julio 2009, 23:14 pm
El App.path es relativo no creo que se almacene dentro del PE siempre cambiara deacuerdo donde se encuentre el archivo...   


Título: Re: Una pregunta sobre los ejecutables.
Publicado por: LeandroA en 23 Julio 2009, 23:45 pm
hola esta funcion es de Karcrack que es una alternativa a app.path y GetModuleFileName quizas valiendote de este ejemplo puedas hacer la inversa, pero tampoco doy fe que si asi fuera, tomara app.path diferente. seguramente Karcrack va a leer este post y te va a dar una mejor respuesta.


Código:
Option Explicit
'---------------------------------------------------------------------------------------
' Module    : mGetMyPath
' Author    : Karcrack
' Now$      : 28/05/2009  22:01
' Used for? : Get our own path
' Reference : http://undocumented.ntinternals.net/UserMode/Undocumented%20Functions/NT%20Objects/Process/PEB.html
'             http://www.nirsoft.net/kernel_struct/vista/RTL_USER_PROCESS_PARAMETERS.html
'
' Thanks.   : ctlon -> For the links
'             Cobein & SqUeEzEr -> For the mem job (http://hackhound.org/forum/index.php?topic=16203.0)
'
'---------------------------------------------------------------------------------------

'USER32
Private Declare Function CallWindowProc Lib "user32.dll" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'MSVBVM60
Private Declare Sub GetMem1 Lib "msvbvm60.dll" (ByVal lAddress As Long, var As Byte)

'Function Credits: Cobein & SqUeEzEr
Private Function RtlGetString(lAddr As Long) As String
    Dim i       As Long
    Dim b       As Byte
   
    Do
        Call GetMem1(lAddr + i * 2, b)
        i = i + 1
        If b = 0 Then Exit Do
        RtlGetString = RtlGetString & Chr$(b)
    Loop
End Function

Public Function GetMyPath() As String
    Dim lAddr           As Long
    Dim bvCode()        As Byte
   
    ReDim bvCode(0 To 14)
    'asm (
    ' mov eax, [FS:0x30]
    ' mov eax, [DS:eax+0x10]
    ' mov eax, [DS:eax+0x3C]
    ' ret 16
    ');
    bvCode(0) = &H64:    bvCode(1) = &HA1:    bvCode(2) = &H30:    bvCode(3) = &H0:     bvCode(4) = &H0:    bvCode(5) = &H0:     bvCode(6) = &H8B:    bvCode(7) = &H40:    bvCode(8) = &H10:    bvCode(9) = &H8B:   bvCode(10) = &H40:    bvCode(11) = &H3C:   bvCode(12) = &HC2:    bvCode(13) = &H10:    bvCode(14) = &H0
   
    'Get the Addr of our path saved in the PEB
    lAddr = CallWindowProc(VarPtr(bvCode(0)), 0&, 0&, 0&, 0&)
   
    If lAddr > 0 Then
        'Return the DATA
        GetMyPath = RtlGetString(lAddr)
    End If
End Function


Título: Re: Una pregunta sobre los ejecutables.
Publicado por: Karcrack en 24 Julio 2009, 00:39 am
Como me conoces Leandro :xD ;)

Bueno, no entiendo muy bien a lo que te refieres, pero si lo que quieres es que una aplicacion al intentar obtener tu ruta obtenga una equivocada se puede hacer cambiando la informacion que hay en el PEB sobre tu ruta... (Si no me equivoco W$ la carga de ahi :rolleyes:)...

Ahora mismo no tengo ningun code funcional que haga eso, pero puedo intentar mañana hacerlo, ahora aqui en España es algo tarde :P

Creo que habria una restriccion con el tamaño de la ruta..... si fuera mayor a a la actual seria un rollo, abria que reservar memoria y puag.. no es buena idea...

Espero acordarme mañana de esto y prepararte un code :D


Título: Re: Una pregunta sobre los ejecutables.
Publicado por: cobein en 24 Julio 2009, 01:35 am
http://www.advancevb.com.ar/?p=140


Título: Re: Una pregunta sobre los ejecutables.
Publicado por: YST en 24 Julio 2009, 03:58 am
Paraa cambiar la ruta de un exe en ejecución para la api GetModuleFileName es necesario remplazar la ruta en el PEB del proceso.


Título: Re: Una pregunta sobre los ejecutables.
Publicado por: Karcrack en 24 Julio 2009, 09:20 am
http://www.advancevb.com.ar/?p=140
Jajaja, sabia que alguien lo habia hecho! Pense que fue Steve en Delphi :laugh:

+1 para ti :xD :xD


Título: Re: Una pregunta sobre los ejecutables.
Publicado por: LeandroA en 24 Julio 2009, 19:40 pm
mm me havia olviado que Cobein ya havia echo esto.

Saludos