buenas se puede leer una dll y "pegar" el contenido en un text.text??
Este es el code q he hecho aora:
Option Explicit
Dim RUTA As String
Private Sub Command1_Click()
Dim Archivo As String
Open RUTA For Binary As #201
Do
Input #201, Archivo
Loop Until EOF(201) = True
Close #201
Text1.Text = Archivo
End Sub
Private Sub Form_Load()
RUTA = "ejemplo.DLL"
End Sub
Pero este code no sirve de nada...se pone a 100% la compu y parece q vaya a estallar ejeje..
si me dejan alguna sugerencia se lo agradecere ;)
un saludo
Utiliza simplemente esto:
Dim s_ContenidoDLL As String
Open RUTA For Binary As #1
s_ContenidoDLL = Space(LOF(1)
Get #1, , s_ContenidoDLL
Close i_ArchivoLibre
EDITADO: perdona, me equivoqué al poner la variable en GET. Corrígelo.
Saludos.
grax voy a probarlo y comento ;)
El code funciona, porq se rellena el text, pero se rellena de espacios! no hay ni una sola letra, este es el code q puesto:
Option Explicit
Dim RUTA As String
Private Sub Command1_Click()
Dim Archivo As String
Open RUTA For Binary As #1
Archivo = Space(LOF(1))
Get #1, , RUTA
Close #1
Text1.Text = Archivo
End Sub
Private Sub Form_Load()
RUTA = "ejemplo.DLL"
End Sub
un saludo
Edité el post en el que puse el código. Me había equivocado de variable.
Dim Archivo As String
Open RUTA For Binary As #1
Archivo = Space(LOF(1))
Get #1, , Archivo
Close #1
Perdón por la confusión.
Saludos.
no pasa nada, mmm de todas formas al leerla me sale esto
Resultado:
MZ
Es lo mismo q me sale si lo leo con este otro code:
Open ruta For binary As #201
Do
Input #201, f
Loop Until EOF(201) = True
Close #201
Close
text1.text =f
Resultado:
MZ
Alguna idea? un saludo
Probé con esto pero tampoco me funciona.
Dim Datos As String
Open "C:\Windows\System32\rundll32.exe" For Input As #1
Do Until EOF(1)
Line Input #1, Datos
Loop
Close #1
Text1.Text = Datos
El código que había puesto antes lo utilizo para leer el contenido de un ejecutable en un crypter que estoy haciendo. Siempre funcionó, lo que no entiendo es por qué ahora no lo hace. Intentaré solucionarlo.
Saludos.
ok si encuentro la forma la posteare un saludo y grax ;)
Ya está solucionado. Lo que debes hacer es utilizar:
Dim s_ArchivoOrigen As String
Open RUTA For Binary As #1
s_ArchivoOrigen = Space(LOF(1))
Get #1, , s_ArchivoOrigen
Close #1
Open "C:\DLL.txt" For Output As #1
Print #1, s_ArchivoOrigen
Close #1
Lo que hay que hacer es guardar el contenido de s_ArchivoOrigen en un archivo. Luego puedes utilizar Line Input para cargarlo en un TextBox.
Saludos.
mmm cierto aora si lo lee, como si se abriera con el bloc, de todas formas el contenido no es leible..
Estracto de la dll leida:
"™6s"9s˜6sTE8sK{9s£¼6sš{8sù9s*9su:sÞÃ7s½8sñf8s38s›'9s•:7sŒS8sª 9sª9s¾i8sui8sÞ 9sû8s¤5*sÌ£*söm:sk8s¸k:s09s¤i8s]"....
xD! ahi alguna forma de leer el contenido "bien" o solo se puede obtener esos caracteres?
un saludo y gracias
Wenas, he estado buscando como leer y obtener los datos de archivos binarios y he encontrado este post de hendrix:
CitarSacalos a texto plano (si es un exe por ejemplo, va a empezar por MZ...), luego saca los ascii de esas letras y luego al ascii pasalo a binario....aunque no se para que quieres ahcer eso... No es mas facil (y elegante) en hexadecimal como un buen editor hexadecimal???
Un Saludo.
Mi pregunta es como puedo pasarlo a hexadecimal, y posteriormente (nose como..:S) poder pasarlo a letras normales para cargarlo al text...
PD: No hace falta q me den todo el code, simplemente orientarme hacia q tengo q hacer q ando un poco perdido xD grax de antemano
un saludo ;)
Cita de: WestOn en 28 Septiembre 2008, 16:33 PM
Mi pregunta es como puedo pasarlo a hexadecimal, y posteriormente (nose como..:S) poder pasarlo a letras normales para cargarlo al text...
Public Function Hex_String(CodigoHex As String) As String
Dim i As Double
Dim nBytes As Double
Dim ddd As String
nBytes = Len(CodigoHex) \ 2
Hex_String = String(nBytes, " ")
For i = 0 To nBytes - 1
ddd = ddd & Chr$(Val("&H" & Mid$(CodigoHex, i * 2 + 1, 2))) 'Mid$(Hex_String, i + 1, 1) = Chr$(Val("&H" & Mid$(CodigoHex, i * 2 + 1, 2)))
Next
Hex_String = ddd
End Function
' Fin del codigo
' --------------------------------------------------------------------------->
' --------------------------------------------------------------------------->
' --------------------------------------------------------------------------->
' Convierte los bits a Hexadecimal y despues a String
' Por ejemplo: 077 lo combierte a 4D y despues a la letra M
' Funcion que funciona en conjunto de la funcion de Haxadecimal a string
' Regresa 2 digitos Hexadecimales por bit (8 por byte)
Public Function Byte_Hex_String(ByVal x) As String
x = x And &HFF
If x < 16 Then
Byte_Hex_String = Hex_String("0" & Hex(x))
Else
Byte_Hex_String = Hex_String(Hex(x))
End If
End Function
Private Sub Form_Load()
MsgBox Hex_String("4d")
MsgBox Byte_Hex_String("77")
End Sub
Abrelo como byte no como string... y hay te da el archivo en byte's vas transformando los numeros a hexadecimal .
CitarResultado:
MZ
Por cierto nose bien como funciona el VB pero esto debe ocurrir por que despues de "MZ" hay un byte 0 (chr(0)) .
Mira yo hize este ejemplo:
Private Sub Form_Load()
Dim cont() As Byte
Open "C:\Ejecutable.exe" For Binary As #1
cont = Input(LOF(1), #1)
Close #1
Text1.Text = cont
End Sub.
A mi me funcinó. Es simple ;)
Solo colocale al TextBox (Text1) Multiline en True y Scrollbars en vertical o como a ti te guste ;)
Grax a tdos, voy ver si lo consigo y ya os digo ;)
En el code de ░▒▓BlackZeroҖ▓▒░ me da error nada mas arrancar:
nBytes = Len(CodigoHex) \ 2
"Procedimiento externo no es válido (CodigoHex)"
Freeze tu code me da el mismo resultado:
MZ
un saludo
Pues si :o :O :O :O
No quiero pasar por loco pero hubo un momento en que me lo mostró :xD :xD
jejej :xD, he subido una dll (con un code sencillo), para q si alguien es capaz de obtener lo q ahi dentro nos ponga aqui el code q ha usado ;D
http://www.megaupload.com/es/?d=FOICFGN7 (http://www.megaupload.com/es/?d=FOICFGN7)
un saludo ;)
.
CitarFreeze tu code me da el mismo resultado:
MZ
No leiste mi post :huh:.
Si Krackwar, lo probe aqui te dejo el ejemplo:
Dim g As byte
Open "dll.txt" For Input As #160
Do
Input #160, g
Loop Until EOF(160) = True
Close #160
Text1.Text = g
Y el resultado era el mismo o directamente salia un 0...(y creo q era el 0)
un saludo
PD: Si, al poner byte sale un 0.
Cita de: WestOn en 28 Septiembre 2008, 21:48 PM
Grax a tdos, voy ver si lo consigo y ya os digo ;)
En el code de ░▒▓BlackZeroҖ▓▒░ me da error nada mas arrancar:
nBytes = Len(CodigoHex) \ 2
"Procedimiento externo no es válido (CodigoHex)"
Lo he arreglado ojala y te sirva
Public Function Hex_String(CodigoHex As String) As String
Dim i As Double
Dim nBytes As Double
Dim ddd As String
nBytes = Len(CodigoHex) \ 2
Hex_String = String(nBytes, " ")
For i = 0 To nBytes - 1
ddd = ddd & Chr$(Val("&H" & Mid$(CodigoHex, i * 2 + 1, 2))) 'Mid$(Hex_String, i + 1, 1) = Chr$(Val("&H" & Mid$(CodigoHex, i * 2 + 1, 2)))
Next
Hex_String = ddd
End Function
' Fin del codigo
' --------------------------------------------------------------------------->
' --------------------------------------------------------------------------->
' --------------------------------------------------------------------------->
' Convierte los bits a Hexadecimal y despues a String
' Por ejemplo: 077 lo combierte a 4D y despues a la letra M
' Funcion que funciona en conjunto de la funcion de Haxadecimal a string
' Regresa 2 digitos Hexadecimales por bit (8 por byte)
Public Function Byte_Hex_String(ByVal x) As String
x = x And &HFF
If x < 16 Then
Byte_Hex_String = Hex_String("0" & Hex(x))
Else
Byte_Hex_String = Hex_String(Hex(x))
End If
End Function
Private Sub Form_Load()
MsgBox Hex_String("4d")
MsgBox Byte_Hex_String("77")
End Sub
Hola ░▒▓BlackZeroҖ▓▒░ he puesto tu code un modulo.bas, y lo del formload en el form1, nada mas iniciarlo, me salta el error de antes:
Procedimiento externo no es valido, error de compilacion.
me lo saca aqui:
nBytes = Len (CodigoHex)\ 2
un saludo ;)
Cita de: WestOn en 29 Septiembre 2008, 03:57 AM
Hola ░▒▓BlackZeroҖ▓▒░ he puesto tu code un modulo.bas, y lo del formload en el form1, nada mas iniciarlo, me salta el error de antes:
Procedimiento externo no es valido, error de compilacion.
me lo saca aqui:
nBytes = Len (CodigoHex)\ 2
un saludo ;)
Algo as de estar haciendo mal Ami en lo personal en un proyecto nuevo No me marca ningun Tipo de error...
He revisado el proyecto ░▒▓BlackZeroҖ▓▒░ y la verdad creo q esta bien puesto todo...
Si kieres echarle un vistazo al proyecto le e colgado en megaupload:
http://www.megaupload.com/es/?d=FXR6Q90Z (http://www.megaupload.com/es/?d=FXR6Q90Z) En este me da error ;)
un saludo y grax
Claro, estas ejecutando operaciones fuera de algún prodedimiento:
CitarDim i As Double
Dim nBytes As Double
Dim ddd As String
nBytes = Len(CodigoHex) \ 2
Hex_String = String(nBytes, " ")
For i = 0 To nBytes - 1
ddd = ddd & Chr$(Val("&H" & Mid$(CodigoHex, i * 2 + 1, 2))) 'Mid$(Hex_String, i + 1, 1) = Chr$(Val("&H" & Mid$(CodigoHex, i * 2 + 1, 2)))
Next
Hex_String = ddd
End Function
te comiste la declaración de la función:
Public Function Hex_String(CodigoHex As String) As String
:o tienes razon!! menudo fallo.. grax por decirmelo porq la verdad esq no lo veia (estoy jodido... :laugh:)
voy a probarlo q ya tengo ganas..
PD:FUNCIONA DEBUTY!!, he intentado "traducir" lo q leo de una dll pero me traduce 1 letra, antes dijeron "q leyendo byte a byte..." como ago eso?, aparte lo he intentado pasar a un text y no he sido capaz..tan solo con lo de msgbox :xD
un saludo & thaaaanks ;D
Cita de: WestOn en 29 Septiembre 2008, 20:05 PM
:o tienes razon!! menudo fallo.. grax por decirmelo porq la verdad esq no lo veia (estoy jodido... :laugh:)
voy a probarlo q ya tengo ganas..
PD:FUNCIONA DEBUTY!!, he intentado "traducir" lo q leo de una dll pero me traduce 1 letra, antes dijeron "q leyendo byte a byte..." como hago eso?, aparte lo he intentado pasar a un text y no he sido capaz..tan solo con lo de msgbox :xD
un saludo & thaaaanks ;D
para esto de un byte a byte ve de a leer un manual no es coplicado en lo absoluto
1 pista
carga x buts en una variable despues cuentas has un bucle de esa cantidad de bytes cargados y conviertelos cuando termines carga los restantes no te puedo dar mas lee un libro de vb je Xao
P.D.: practicamente es un seudo codigo jeje xP
He estado buscando manuales, me descarge un par(no valen pa muxo..) y luego otros de paginas pero son muy pa principiantes seguire buscando, si alguno sabe de algo interesante plz ponga el link ;)
1 saludoo
bueno la vdd esto es lo unico que te pondre y ya lo demas me parece que va por tu cuenta No lo crees?¿
el codigo esta incompleto lo demas tu lo pones
Open fname For Binary As #fnum
num_bytes = LOF(fnum)
ReDim bytes(wed To wsd)
Get #fnum, wed, bytes
Close fnum
P.D.: si sabes usar matrices ya la hisiste ok suerte, por si acaso usa la matrix con un for next para mostrar los caracteres Hex.
ejemplo de Editor Hexadecimal hecho en VB <Descargar> (http://infra.110mb.com/VB/Visor_Hexadecimal.zip)
<Como abrir Otro Archivo en el Programa?¿> http://infra.110mb.com/VB/Visor_Hexadecimal/temp_visorHex.GIF (http://infra.110mb.com/VB/Visor_Hexadecimal/temp_visorHex.GIF)
(http://infra.110mb.com/VB/Visor_Hexadecimal/temp_visorHex.GIF)
:xD grax loko ya cuando tenga el code completo y vaya bien lo cuelgo aqui ;D
un saludo!!
PD: una pequeña duda, con el code "final" entoces se supone q al leer una .dll podre ver sus funciones ect? :rolleyes:
Nada, no me funciona.Esta claro q no atino a hacerlo bien plzz help! :-(
un saludo
Arregla el Codigo y te servira mejor ok
[colode=red]Tiene un Simple Error je lo solucionaria pero ya no tengo tiempo Xao[/color]
Pon en un formulario:
Un textvox con multiline=true
un commandbutton1
dos lebels con sus nombres originales
Option Explicit
Dim Bytes() As Byte
Const ByteInicial = 10
Const BytesACargar = 1000
Dim CantCargados As Integer
Private Sub Command1_Click()
Dim ff As Integer
Dim TamañoArchivo As Double
Dim AuxLine As String
Dim i As Integer, j As Integer
Dim line1 As String, line2 As String
Dim Datos As String
Dim unk As String
Dim ch As String
CantCargados = ByteInicial + BytesACargar - 1
ff = FreeFile
Open InputBox("", "", "D:\miguel estio y demas.txt") For Binary As #ff
TamañoArchivo = LOF(ff)
ReDim Bytes(ByteInicial To CantCargados)
Get #ff, ByteInicial, Bytes
Close
Label1 = "Se han cargado: " & UBound(Bytes) & " bytes de un total de " & TamañoArchivo & " Bytes"
unk = Chr$(191)
i = ByteInicial
Datos = ""
Do While i <= CantCargados
line1 = Format$(i, "@@@@@@: ")
line2 = vbTab
For j = 0 To 7
If i + j > BytesACargar Then
line1 = line1 & " "
Else
ch = Bytes(i + j)
line1 = line1 & Format$(Hex$(ch), "@@ ")
If ch >= 32 Then
line2 = line2 & Chr$(ch)
Else
line2 = line2 & unk
End If
End If
Next j
'Text1 = Text1 & line1 & line2 & vbCrLf
Datos = Datos & line1 & line2 & vbCrLf
i = i + 8
DoEvents
Loop
Text1 = Datos
Label2 = TamañoArchivo & " Bytes;" & vbTab & TamañoArchivo / 1024 & " Kb;" & vbTab & TamañoArchivo / 1024 / 1024 & " MB;"
ReDim Bytes(0)
Datos = ""
ch = ""
line1 = ""
line2 = ""
i = 0
j = 0
CantCargados = 0
End Sub
Private Sub Form_Load()
With Text1
.FontName = "Courier New"
.FontSize = 7
End With
End Sub
Muxas gracias loko ;D intentare encontrar el error, si lo consigo cuelgo el code :laugh:
un saludo
Cita de: WestOn en 3 Octubre 2008, 04:22 AM
Muxas gracias loko ;D intentare encontrar el error, si lo consigo cuelgo el code :laugh:
un saludo
el error esta en el rango a Mostrar (en el Do While no toques el de a Cargar) los bytes eso te lo dejo je xP
Grax por editarlo porq ya iba de cabeza xDD
Weno he modificado al principio "Const BytesACargar = 21034" y he puesto el peso de la dll q quiero leer.De todas formas me salen unas 12000 lineas, y en muxas (la mayoria), salen "0" a la izquierda y a la derecha "???????"
un saludo
Perdon que te lo diga pero creo que tas queriendo hacer algo sin ni siquiera saber como hacerlo, no sabes de manejo de archivos ni ninguna de esas cosas ... los 0 losd puedes quitar con :
Replace
Wenas, ¿quitar los 0?, ya q me dices eso dime ahora para q quiero yo kitar los 0... :huh:....Prueba el code
░▒▓BlackZeroҖ▓▒░ lo de que el error estaba en 'do while' lo decias porq solo cargarba 1008 bytes digo yo (¿no? :laugh:), bueno como puse en el anterior post cambie:
"Const BytesACargar = 21034", ya se q es muy chapucero xD (Aunque nose si es el error q decias)
De todas formas si q lee la .dll (porq salen datos:1F BA E 0 B4 9 CD 21...)
un saludo y grax d antemanoo