Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: NYlOn en 18 Septiembre 2005, 19:58 pm



Título: Open For Binary
Publicado por: NYlOn en 18 Septiembre 2005, 19:58 pm
hola a todos
buen0 mi problema es el siguiente:
estoy intentando hacer una especie de 'Edit Server'...
para escribir el archivo uso el siguiente

Código:
    Open "C:\Hola.exe" For Binary As #1
        Put #1, LOF(1) + 1, Text1.Text
    Close #1

el problema aparece cuando trato de LEER el archivo ... la verdad no se como hacerlo, buske en el foro y en google pero no encuentro ningun metodo que me de resultad0 :S

si alguien sabe como hacerlo estaria muy agradecido de que me lo digiera :)

un salud0 a t02

G0nz4

EDIT:
el codigo que estoy tratando de usar para leer es este:
Código:
    Dim var As String
    Open "C:\Hola.exe" For Binary As #1
     Get #1, LOF(1) - 20, var
   Close #1
   Text2.Text = var


Título: Re: Open For Binary
Publicado por: yeikos en 18 Septiembre 2005, 21:06 pm
Dim variable as String * 20
variable = Text1.Text
Open "C:\Hola.exe" For Binary As #1
    Put #1, LOF(1) + 1, variable
Close #1

Dim var As String * 20
Open "C:\Hola.exe" For Binary As #2
    Get #2, LOF(2) - 21, var
Close #2
Text2.Text = var


Título: Re: Open For Binary
Publicado por: Kizar en 18 Septiembre 2005, 21:16 pm
El codigo de yeicos es muy parecido al que iba a poner yo, pero estoy seguro de que tambien funciona bien, y añadir que tal y como esta en el textbox solo se podrian escribir 20 caracteres, si escribes menos quedarian espacios en blanco que no pasa nada.

Y otra cosa, si abres el exe con el block de notas veras al final el texto k as escrito, te aconsejo que uses alguna funcion para encriptarlo como por ejemplo.

Código:
Function Cypher(Str As Variant) As String   'Función que cifra una cadena
Dim Temp As String, PwdChr As Integer
Dim EncryptKey As Integer
    EncryptKey = Int(Sqr(Len(Str) * 100)) + 200
For PwdChr = 1 To Len(Str)
    Temp = Temp + Chr(Asc(Mid(Str, PwdChr, 1)) Xor EncryptKey)
Next PwdChr
    Cypher = Temp
End Function


Es muy facil de usar pero tienes que usarla al escribir y al leer los datos por ejemplo:

Código:
variable = Cypher(Text1.Text)

Text2.Text = Cypher(var)

Esta claro que e modificado el codigo de yeikos
Salu2 ejoy it!


Título: Re: Open For Binary
Publicado por: NYlOn en 18 Septiembre 2005, 21:26 pm
Dim variable as String * 20
variable = Text1.Text
Open "C:\Hola.exe" For Binary As #1
    Put #1, LOF(1) + 1, variable
Close #1

Dim var As String * 20
Open "C:\Hola.exe" For Binary As #2
    Get #2, LOF(2) - 21, var
Close #2
Text2.Text = var


te falto es0 ;)

gracias x todo

Salu2


Título: Re: Open For Binary
Publicado por: NYlOn en 18 Septiembre 2005, 21:37 pm
che y hay alguna forma de eliminar los espacios restantes del final ?? ya que no se cuantos valores se van a introducir exactamente :S

desde ya muchas gracias

G0nz4


Título: Re: Open For Binary
Publicado por: yeikos en 18 Septiembre 2005, 21:53 pm
che y hay alguna forma de eliminar los espacios restantes del final ?? ya que no se cuantos valores se van a introducir exactamente :S

desde ya muchas gracias

G0nz4

Trim(variable)


Título: Re: Open For Binary
Publicado por: NYlOn en 19 Septiembre 2005, 00:40 am
muhisimas gracias x las lineas y x la rapidez a los 2 ;)

un salud0 !!!

G0nz4


Título: Re: Open For Binary
Publicado por: Simbelmynë en 20 Septiembre 2005, 18:47 pm
A ver veamos que yo tambien hace mucho estoy con esto y no termino de entender una cosa que debe ser muy facil visto que todo el mundo la entiende y el unico que no la ve soy yo:
Estariamos haciendo un editor, para lo que sea, al cual hay que agregarle datos en el final de el archivo:

Citar
Dim variable as String * 20
variable = Text1.Text
Open "C:\Hola.exe" For Binary As #1
    Put #1, LOF(1) + 1, variable
Close #1

Hasta ahi perfecto, nuestro editor abre el archivo a editar, le agrega la informacion necesaria al final del archivo y lo cierra, perfecto, ya tenemos la informacion que necesitabamos dentro de el archivo editado...
Ahora:

Citar
Dim var As String * 20
Open "C:\Hola.exe" For Binary As #2
    Get #2, LOF(2) - 21, var
Close #2
Text2.Text = var

Este codigo donde iria?? Supongo yo que en archivo ya editado, teniendo en cuenta que mismo trabajara solo y no podra tomar datos de otro archivo, no? Pero de seguir esta logica, a mi no me funciona...
En resumidas sintesis: ¿Como hace el archivo editado para utlizar la informacion que se le agrego con el editor, ubicandola donde la necesita?
Bueno, solamente eso, agradeceria mucho que alguien me saque de esta incertidumbre...
Un saludo y gracias...


Título: Re: Open For Binary
Publicado por: Kizar en 20 Septiembre 2005, 23:24 pm
en el servidor editado pones en el form_load:

Código:
Dim var As String * 20
dim var1 as string
Dim Str1 As String
Dim Str2 As String

Open app.pach & "\" & app.exename For Binary As #2
    Get #2, LOF(2) - 20, var
Close #2

Str1 = InStr(1, var, " ")
Str2 = Left(var, Str1 - 1)
text1.text = Str2


Título: Re: Open For Binary
Publicado por: NYlOn en 20 Septiembre 2005, 23:43 pm
falto un detalle: la propiedad "EXEName" te devuelve solo el nombre, no la extensión, x lo que no te abriria el archivo...
solo tenes que cambiar este
Código:
Open app.pach & "\" & app.exename For Binary As #2

por este
Código:
Open app.pach & "\" & app.exename & ".exe" For Binary As #2

un salud0 ;)

G0nz4


Título: Re: Open For Binary
Publicado por: Simbelmynë en 21 Septiembre 2005, 03:01 am
Bueno, antes que todo un millon de gracias por las sugerencias brindadas Dexoline y NYlon... Al menos ahora si debo afirmar que mi Visual esta completamente loco... Es mas o menos como yo lo hacia pero tampoco me funciona, a modo de aprendizaje lo unico que hice fue un boton que salude, con un editor para ingresar el nombre, por ejemplo si en el editor pongo HypNosS entonces que el programa una vez editado diga: Hola HypNosS como estas?
Aca les dejo el codigo entero de este ensayo:

Citar
Private Sub Form_Load()
Dim variable As String * 10
Open App.Path & "\" & App.EXEName & ".exe" For Binary As #2
    Get #2, LOF(2) - 10, variable
Close #2
Text1.Text = variable
End Sub

Private Sub Command1_Click()
MsgBox "hola " & Text1.Text & " como estas?"
End Sub

A lo que el programa no deja de devolverme: "Hola  como estas?" sin tomar el valor teoricamente portado en la variable y caja de texto respectivamente...
De todos modos me percate que al final de el archivo editado aparezca la cadena de texto que agrego con el editor y efectivamente aparece... Tambien tengo visible la caja de texto para cuando arranca el programa ver si se copio en su contenido la cadena asignada y nada...
Bueno... locuras del visual...
Un saludo y gracias nuevamente.


Título: Re: Open For Binary
Publicado por: NYlOn en 21 Septiembre 2005, 09:21 am
hola HypNosS
mira son las 4.30 de la mañana y no tengo mucho resto como para analizar el code XD
te dejo un ejemplo tal cual como el que estas intentando hacer (ya l0 tenia echo xD)

son DOS programas diferentes que tienen que estar en el mismo directorio

en el primer ejecutable (que vendria a ser el 'editor' creas 1 TxtBox y 1 CommandButton y pone este
Código:
Private Sub Command1_Click()
    Dim variable As String * 30
    variable = Text1.Text
    Open App.Path & "\" & "NYlOn.exe" For Binary As #1 'el programa que vamos a editar deve llamarse NYlOn.exe ;)
        Put #1, LOF(1) + 1, variable
    Close #1
End Sub

en el otro ejecutable pones el siguiente y lo guardas como NYlOn.exe
Código:
Private Sub Form_Load()
    Dim var As String * 30
    Open App.Path & "\" & App.EXEName & ".exe" For Binary As #2
        Get #2, LOF(2) - 30, var
    Close #2
    Mail = Trim(var) 'esto saca los espacios en blanco que hay en la variable
    MsgBox Mail
End Sub

no comento los codigos x no hay ganas XD si te keda alguna duda postea ;)

NOTA: acordate de que los 2 programas esten en el mismo directorio asi funcionan bien

esper0 q se alla entendido bien

un salud0

G0nz4


Título: Re: Open For Binary
Publicado por: yeikos en 21 Septiembre 2005, 10:40 am
Private Sub Form_Load()
    Dim var As String * 30, Mail as String
    Open App.Path & "\" & App.EXEName & ".exe" For Binary As #2
        Get #2, LOF(2) - 31, var
    Close #2
    Mail = Trim(var) 'esto saca los espacios en blanco que hay en la variable
    MsgBox Mail
End Sub


Título: Re: Open For Binary
Publicado por: Simbelmynë en 21 Septiembre 2005, 18:06 pm
Jaaaa
Son una makina lokosss!! Bueno, con este codigo me anduvo, nunca voy a saber porque con mi codigo no andaba pero bueno, no saben cuanto les agradezco la ayuda NYlon, Dexoline y YeIkOs (Aunque parezca mentira, sin tu correccion el programa no funcionaba :D)
Un saludo, voy a continuar con el siguiente obstaculo en mi proyecto xDD
Suerte


Título: Re: Open For Binary
Publicado por: Kizar en 21 Septiembre 2005, 19:21 pm
no te funcionaba por que no quitabas los espacios de la variable:

Código:
Mail = Trim(var) 'esto saca los espacios en blanco que hay en la variable

Y por los errores lo siento, por que es que lo estoy haciendo todo a ciegas ya que no tengo ahora el vb.
Salu2


Título: Re: Open For Binary
Publicado por: yeikos en 21 Septiembre 2005, 19:57 pm
no te funcionaba por que no quitabas los espacios de la variable:

Código:
Mail = Trim(var) 'esto saca los espacios en blanco que hay en la variable

Y por los errores lo siento, por que es que lo estoy haciendo todo a ciegas ya que no tengo ahora el vb.
Salu2

No es necesario quitar los espacios a la variable para que ésta pueda ser leida.

PD: Yo tampoco tengo el VB en está máquina, por eso me equivoco a veces  :P.


Título: Re: Open For Binary
Publicado por: Kizar en 21 Septiembre 2005, 21:03 pm
si hace falta, por que var es un buffer y Mail es una string y en los textbox, msgbox... solo se pueden usar strings

Salu2


Título: Re: Open For Binary
Publicado por: NYlOn en 22 Septiembre 2005, 00:39 am
;D
nunca lo habia notado xD

thx ;D