Autor
|
Tema: Ayuda con assembly.load(byte[]) imagen no valida. (Leído 7,063 veces)
|
70N1
Desconectado
Mensajes: 355
|
He montado este codigo, pero me dice que la imagen no es valida. Creo un array de bytes ( byte[] ) con el archivo dentro y al intentar lanzarlo con Assembly.Load(buffer) me da error. // alphabet.txt contains "abcdefghijklmnopqrstuvwxyz" using (FileStream fs = new FileStream (@"2.bin", FileMode .Open, FileAccess .Read)) { long length = fs.Length; Byte[] coming = new byte[length ]; byte readd; int i = 0; FileStream fileStream = new FileStream (fileName, FileMode .Create); for (offset = 1; offset <= fs.Length; offset++) { fs.Seek(-offset, SeekOrigin.End); //Console.Write(Convert.ToChar(fs.ReadByte())); int readb = fs.ReadByte(); readd = Convert.ToByte(readb); //fileStream.WriteByte(readd); coming[i] =readd; //Console.WriteLine(i); i++; //Console.ReadLine(); } //Console.Write(coming); MemExe(coming); } static void MemExe(byte[] buffer) { Assembly asm = Assembly.Load(buffer);//----------------->> AQUI DA EL ERROR. if (asm.EntryPoint == null) throw new ApplicationException ("No entry point found!"); MethodInfo ePoint = asm.EntryPoint; object ins = asm.CreateInstance(ePoint.Name); ePoint.Invoke(ins, null); }
|
|
« Última modificación: 13 Septiembre 2014, 01:06 am por Eleкtro »
|
En línea
|
70N1
|
|
|
0xDani
Desconectado
Mensajes: 1.077
|
Si no me equivoco esto es C#. En ese caso, deberías ponerlo en Programación .NET para que te ayuden.
Saludos.
|
|
|
En línea
|
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!
I code for $$$ Hago trabajos en C/C++ Contactar por PM
|
|
|
Eternal Idol
Kernel coder
Colaborador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
Por favor no hagas mas preguntas de .NET en este sub-foro (Programación C/C++).
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
Assembly.Load(buffer) me da error. Assembly asm = Assembly.Load(buffer);//----------------->> AQUI DA EL ERROR.
Bien, ¿pero piensas explicar el tipo de excepción y el mensaje de error, o esperas que lo adivinemos?. -> Assembly.Load Method (Byte()) - MSDNEl método Assembly.Load es para abrir ensamblados (entorno de ejecución .NET). -> Assembly (CLI) - Wikipedia¿El archivo 2.bin es un ensamblado .NET, una dll con la extensión camuflada?, ¿Cuales son tus verdaderas intenciones, que intentas conseguir?, ¿estás intentando clonar dicho ensamblado en la memoria para cargar el stream en tiempo de ejecución?; porfavor, se claro con el problema que tienes, el error, y el resultado que esperas conseguir. Saludos!
|
|
« Última modificación: 13 Septiembre 2014, 01:34 am por Eleкtro »
|
En línea
|
|
|
|
70N1
Desconectado
Mensajes: 355
|
2.bin es un exe creado con c++.
coming[] es el array de bytes que contiene el exe.
El error esta en assembly.load(buffer);
No se puede cargar el archivo o ensamblado 'ejecutable, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' ni una de sus dependencias. Intento de cargar un archivo ejecutable que no se puede comprobar (la tabla IAT tiene más de 2 secciones o una sección TLS). (Excepción de HRESULT: 0x80131019)
Porsierto... ya me podrian aver mandado un mensaje para avisar de que el tema fue movido
|
|
|
En línea
|
70N1
|
|
|
Eternal Idol
Kernel coder
Colaborador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
Porsierto... ya me podrian aver mandado un mensaje para avisar de que el tema fue movido
No hace ninguna falta, en el sub-foro donde donde incorrectamente publicaste hay dos hilos titulados: MOVIDO: Ayuda con assembly.load(byte[]) imagen no valida. MOVIDO: Una mano con este codigo. (array de byte dinamico)
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
2.bin es un exe creado con c++. No se mucho sobre este tema, no conozco mucho de C++ así que no puedo ayudarte casi, pero repetiré lo que dije: Utilizar el método Assembly.Load(byte[]) para cargar un ensamblado C++ que contenga código nativo NO está soportado. ¿Has buscado en Google el código de error?, porque hay muchos resultados con información y posibles soluciones (aparte de este enlace): “A mixed mode C++ EXE cannot be relocated in memory properly when loaded as a referenced assembly”
“[…] we only allow MSIL-Only images to be loaded […] since anything else is not safe”-- + -> Attempt to load an unverifiable executable with fixups (IAT with more than 2 sections or a TLS section.) (Exception from HRESULT: 0x80131019)Asi pues, si quieres "cargar" una dll de C++ según parece vas a tener que recurrir al P/Invoking, aunque no se si esa será la única solución, como ya he dicho no manejo mucho este tema de cargar una dll de C++ para invokar funciones o lo que pretendas hacer, pero así es como siempre lo he echo con librerías de terceros desarrolladas en C++ y por supuesto con las de la WinAPI, toma un ejemplo: Imports System.Runtime.InteropServices ' <System.Security.SuppressUnmanagedCodeSecurity> Friend Class SafeNativeMethods <DllImport("2.bin", EntryPoint:="Nombre_De_La_Función", SetLastError:=False, CharSet:=CharSet.Auto)> Friend Shared Function Nombre_A_Mostrar( ByVal Parametro1 As String, ByVal Parametro2 As IntPtr ) As <MarshalAs(UnmanagedType.Bool)> Boolean End Function End Class
+ NativeMethods - This class does not suppress stack walks for unmanaged code permission. (System.Security.SuppressUnmanagedCodeSecurityAttribute must not be applied to this class.) This class is for methods that can be used anywhere because a stack walk will be performed.
SafeNativeMethods - This class suppresses stack walks for unmanaged code permission. (System.Security.SuppressUnmanagedCodeSecurityAttribute is applied to this class.) This class is for methods that are safe for anyone to call. Callers of these methods are not required to perform a full security review to make sure that the usage is secure because the methods are harmless for any caller.
UnsafeNativeMethods - This class suppresses stack walks for unmanaged code permission. (System.Security.SuppressUnmanagedCodeSecurityAttribute is applied to this class.) This class is for methods that are potentially dangerous. Any caller of these methods must perform a full security review to make sure that the usage is secure because no stack walk will be performed.
PD: El compañero @Kubox creo que sabe bastante sobre este tema de C++ en .NET y te podrá ayudar mejor que yo en caso de que lea este post. Saludos.
|
|
« Última modificación: 13 Septiembre 2014, 13:45 pm por Eleкtro »
|
En línea
|
|
|
|
70N1
Desconectado
Mensajes: 355
|
Muchas gracias a todos. Seguire con mi investigacion, ya que lo que quiero es lanzar exe de c++ sin net.
|
|
|
En línea
|
70N1
|
|
|
kub0x
Enlightenment Seeker
Moderador
Desconectado
Mensajes: 1.486
S3C M4NI4C
|
2.bin es un exe creado con c++. ¿2.bin está generado en C++ .NET (CLI) o Win32? Actualmente es imposible cargar un ejecutable compilado en C++ Win32 con la clase Assembly. Podrías cargar cualquier ejecutable compilado bajo cualquier lenguaje de la plataforma .NET. ¿Quieres lanzar el programa 2.bin en el mismo proceso o en uno separado? Saludos!
|
|
|
En línea
|
|
|
|
70N1
Desconectado
Mensajes: 355
|
En el mismo proceso. Pero no quiero usar framework, lo quiero independiente
|
|
|
En línea
|
70N1
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
ayuda flash load
Diseño Gráfico
|
yopo
|
1
|
1,787
|
18 Marzo 2006, 06:00 am
por .Carlos
|
|
|
[Sources Code] RotBits [Byte TO Byte ]
Programación Visual Basic
|
x64core
|
8
|
5,705
|
22 Octubre 2011, 00:46 am
por BlackZeroX
|
|
|
ayuda para entender la definicion: un byte con valor 0 ó 255
Bases de Datos
|
jhonatanAsm
|
5
|
4,417
|
18 Enero 2012, 17:01 pm
por jhonatanAsm
|
|
|
Filestream . Byte a Byte
.NET (C#, VB.NET, ASP)
|
blaron
|
3
|
3,279
|
5 Abril 2014, 02:01 am
por Eleкtro
|
|
|
MOVIDO: Ayuda con assembly.load(byte[]) imagen no valida.
Programación C/C++
|
Eternal Idol
|
0
|
1,518
|
13 Septiembre 2014, 00:42 am
por Eternal Idol
|
|