elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Ayuda con assembly.load(byte[]) imagen no valida.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con assembly.load(byte[]) imagen no valida.  (Leído 7,063 veces)
70N1


Desconectado Desconectado

Mensajes: 355


Ver Perfil
Ayuda con assembly.load(byte[]) imagen no valida.
« en: 12 Septiembre 2014, 23:05 pm »

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.

Código
  1. // alphabet.txt contains "abcdefghijklmnopqrstuvwxyz"
  2.        using (FileStream fs = new FileStream(@"2.bin", FileMode.Open, FileAccess.Read))
  3.        {
  4.            long length = fs.Length;
  5.            Byte[] coming = new byte[length ];
  6.            byte readd;
  7.            int i = 0;
  8.            FileStream fileStream = new FileStream(fileName, FileMode.Create);
  9.            for (offset = 1; offset <= fs.Length; offset++)
  10.            {
  11.                fs.Seek(-offset, SeekOrigin.End);
  12.                //Console.Write(Convert.ToChar(fs.ReadByte()));
  13.                int readb = fs.ReadByte();
  14.                 readd = Convert.ToByte(readb);
  15.                //fileStream.WriteByte(readd);
  16.                coming[i] =readd;
  17.  
  18.                //Console.WriteLine(i);
  19.                i++;
  20.                //Console.ReadLine();
  21.            }
  22.            //Console.Write(coming);
  23.            MemExe(coming);
  24.  
  25.  
  26.        }
  27.  
  28.  
  29.  
  30.  
  31.  static void MemExe(byte[] buffer)
  32.    {
  33.        Assembly asm = Assembly.Load(buffer);//----------------->> AQUI DA EL ERROR.
  34.  
  35.        if (asm.EntryPoint == null)
  36.            throw new ApplicationException("No entry point found!");
  37.  
  38.        MethodInfo ePoint = asm.EntryPoint;
  39.        object ins = asm.CreateInstance(ePoint.Name);
  40.        ePoint.Invoke(ins, null);
  41.    }


« Última modificación: 13 Septiembre 2014, 01:06 am por Eleкtro » En línea

70N1
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: Ayuda con assembly.load(byte[]) imagen no valida.
« Respuesta #1 en: 13 Septiembre 2014, 00:10 am »

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 Desconectado

Mensajes: 5.969


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Ayuda con assembly.load(byte[]) imagen no valida.
« Respuesta #2 en: 13 Septiembre 2014, 00:42 am »

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 Desconectado

Mensajes: 9.885



Ver Perfil
Re: Ayuda con assembly.load(byte[]) imagen no valida.
« Respuesta #3 en: 13 Septiembre 2014, 01:27 am »

Assembly.Load(buffer) me da error.

Código
  1. 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()) - MSDN

El 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 Desconectado

Mensajes: 355


Ver Perfil
Re: Ayuda con assembly.load(byte[]) imagen no valida.
« Respuesta #4 en: 13 Septiembre 2014, 10:54 am »

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 Desconectado

Mensajes: 5.969


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Ayuda con assembly.load(byte[]) imagen no valida.
« Respuesta #5 en: 13 Septiembre 2014, 11:31 am »

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 Desconectado

Mensajes: 9.885



Ver Perfil
Re: Ayuda con assembly.load(byte[]) imagen no valida.
« Respuesta #6 en: 13 Septiembre 2014, 13:21 pm »

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:

El método Assembly.Load es para abrir ensamblados (entorno de ejecución .NET).

-> Assembly (CLI) - Wikipedia

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:

Código
  1. Imports System.Runtime.InteropServices
  2.  
  3. ' <System.Security.SuppressUnmanagedCodeSecurity>
  4. Friend Class SafeNativeMethods
  5.  
  6.    <DllImport("2.bin", EntryPoint:="Nombre_De_La_Función", SetLastError:=False, CharSet:=CharSet.Auto)>
  7.    Friend Shared Function Nombre_A_Mostrar(
  8.            ByVal Parametro1 As String,
  9.            ByVal Parametro2 As IntPtr
  10.    ) As <MarshalAs(UnmanagedType.Bool)> Boolean
  11.    End Function
  12.  
  13. End Class

+

Cita de: MSDN
   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 Desconectado

Mensajes: 355


Ver Perfil
Re: Ayuda con assembly.load(byte[]) imagen no valida.
« Respuesta #7 en: 13 Septiembre 2014, 20:02 pm »

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 Desconectado

Mensajes: 1.486


S3C M4NI4C


Ver Perfil
Re: Ayuda con assembly.load(byte[]) imagen no valida.
« Respuesta #8 en: 13 Septiembre 2014, 22:08 pm »

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

Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate

70N1


Desconectado Desconectado

Mensajes: 355


Ver Perfil
Re: Ayuda con assembly.load(byte[]) imagen no valida.
« Respuesta #9 en: 15 Octubre 2014, 18:24 pm »

En el mismo proceso.
Pero no quiero usar framework, lo quiero independiente
En línea

70N1
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda flash load
Diseño Gráfico
yopo 1 1,787 Último mensaje 18 Marzo 2006, 06:00 am
por .Carlos
[Sources Code] RotBits [Byte TO Byte ]
Programación Visual Basic
x64core 8 5,705 Último mensaje 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 Último mensaje 18 Enero 2012, 17:01 pm
por jhonatanAsm
Filestream . Byte a Byte
.NET (C#, VB.NET, ASP)
blaron 3 3,279 Último mensaje 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 Último mensaje 13 Septiembre 2014, 00:42 am
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines