Usando ILSpy para ver el código fuente y adaptarlo a Visual C# o Visual C++

Iniciado por Meta, 23 Mayo 2015, 16:48 PM

0 Miembros y 1 Visitante están viendo este tema.

Meta

Hola:

Estoy usando el programa ILSpy que puedes descargar aquí.
http://ilspy.net/

Se trata que muestra algo del código fuente.

Aquí hay un programa hecho en C, creo que lo hizo con el Visual Studio v8.0 del C o el C++, no estoy seguro.

La descarga es un ejecutable. Es el que quiero hacerle ingeniería inversa.

Descarga directa el programa llamado bankswap.exe. Puedes tener aviso en tu navegador favorito porque descarga un archivo exe y por seguridad lo bloquea.

Intento 1.
Pues no me sirve el ILSpy ya que solo usa VB, C# y otro que no tiene nada que ver con C nativo, sino el tema del .net, no puede hacer nada.

Si hay otro programa mejor para ver algo de código del que está hecho y hacer el propio programa desde cero con C# o el C++ de visual Studio Express.

¿Alguna ayuda?

Saludos.

Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

kub0x

Te dejo el .NET Reflector, es el mejor para este tipo de cosas pues permite decompilar en C#, F#, VB.NET, Delphi y C++/CLI. ILSpy es más viejo que el sol XD

https://mega.co.nz/#!Ck5VgAJR!ib8k4_ssP-gkGW4oFTnEBUOIbtZ19F_P6nDB1TuuZPE

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

Visita mi perfil en ResearchGate


MCKSys Argentina

Cita de: kub0x en 23 Mayo 2015, 21:22 PM
ILSpy es más viejo que el sol XD

No tan viejo y aún lo siguen desarrollando...  :P

Citar
Development started after Red Gate announced that the free version of .NET Reflector would cease to exist by end of February 2011.

...

Release History

Want to know when major new features are added? When a new stable version is released? Follow us on Twitter!

    3/9/2015 Version 2.3
    6/29/2014 Version 2.2

De todas formas, reflector también es una buena opción para decompilar.

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Meta

Hola:

Intento 2. No funciona.


Me da que el bankswap está hecho con C/C++ nativo y nada del .NET.

Lo que hace ese programa es que al arrastrar un archivo aunque sea una foto, audio mp3, lo que sea hacia el bankswap.exe crea dos archivos partidos a 1024 Kbytes cada uno.

Pues no se, no tengo idea. A lo mejor otro compilador que descompile C/C++ nativo.

Saludos y gracias. A seguir intentando.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

ThunderCls

Si he entendido bien, lo que quieres lograr es obtener el codigo fuente del ejecutable "bankswap.exe", bueno aqui hay un par de cosas teniendo en encuenta la premisa de que la app que desas decompilar esta creada en VC++:

1- ILSpy, Reflector, etc solo te serviran para decompilar aplicaciones creadas en .NET (VB.NET, C#, etc), no vale para otro tipo de aplicaciones.
2- El "codigo fuente" o lo mas cerca a esto que se pueda (pseudocodigo en lenguaje de alto nivel) a aplicaciones en C++ solo lo he visto usando IDA+HexRays Decompiler (no se si exista algo mas parecido a esto) o algun decompiler como el mismo IDA, OllyDbg, etc, pero en este caso solo obtendrias codigo de bajo nivel, nada como lo que quieres.

Saludos
-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/

Meta

Hola:

Ok.

El bankswap solo coge archivos y los partes por la mitad, por ejemplo, tengo un archivo que pesa 2048 KB, lo parte justamente a la mitad a 1024 KB cada uno y lo nombra así:

Archivo_1.bin y Archivo_2.bin

Por eso quiero saber que hace, para programarlo en C#.

Saludos.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

tincopasan

entonces este tema debería ir en programación C# y no en este, ahora bien no parece tan dificil lo que hace,no  se c# pero en otros lenguajes  solo tendrías que buscar información sobre drag and drop (para arrastar el archivo) len (para sacar el tamaño del archivo) operaciónes  con integer (el largo / 2) y manejo de archivos como readfile y writefile para leer y escribir los archivos. 

ThunderCls

@Meta

Bueno si lo que quieres es simplemente dividir un fichero en partes iguales de 1MB no creo que tengas que hacer reversing a una app para saber como se hace, la cosa es bien sencilla, vendria siendo algo como esto mas o menos basicamente:

Código (csharp) [Seleccionar]
const int CHUNKSIZE = 1024 * 1024;
byte[] buffer;
int i = 1;

FileStream infile = new FileStream(@"C:\app.xxx", FileMode.Open, FileAccess.Read);
BinaryReader reader = new BinaryReader(infile);

reader.BaseStream.Position = 0;
buffer = reader.ReadBytes(CHUNKSIZE);
while (buffer.Length != 0)
{
    FileStream outfile = new FileStream(@"C:\File_" + i + ".bin", FileMode.CreateNew, FileAccess.Write);
    BinaryWriter writer = new BinaryWriter(outfile);
   
    writer.Write(buffer);
    writer.Flush();
    writer.Close();
    outfile.Close();

    buffer = reader.ReadBytes(CHUNKSIZE);
    i++;
}

reader.Close();
infile.Close();


Y si, como dice tincopasan, esto deberia ir en Programacion C# y no aqui  :-\
Saludos
-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/

Meta

Hola:

Gracias, lopondré en programación.

Código (csharp) [Seleccionar]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.IO; // No olvidar.

namespace Partir_Archivo
{
    class Program
    {
        static void Main(string[] args)
        {

            const int CHUNKSIZE = 1024 * 1024;
            byte[] buffer;
            int i = 1;

            FileStream infile = new FileStream(@"Illusion of Time (E).smc", FileMode.Open, FileAccess.Read);
            BinaryReader reader = new BinaryReader(infile);

            reader.BaseStream.Position = 0;
            buffer = reader.ReadBytes(CHUNKSIZE);
            while (buffer.Length != 0)
            {
                FileStream outfile = new FileStream(@"File_" + i + ".bin", FileMode.CreateNew, FileAccess.Write);
                BinaryWriter writer = new BinaryWriter(outfile);

                writer.Write(buffer);
                writer.Flush();
                writer.Close();
                outfile.Close();

                buffer = reader.ReadBytes(CHUNKSIZE);
                i++;
            }

            reader.Close();
            infile.Close();
        }
    }
}


Tengo un archivo que pesa 2049 K Bytes, a partirlo con el BankSawp.exe si lo parte en dos, pero este que hice arriba gracias a ustedes me lo parte en tres cachos. El último cacho a 1 KB.

Saludos.

Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

ThunderCls

#9
Cita de: Meta en 25 Mayo 2015, 20:00 PM
Tengo un archivo que pesa 2049 K Bytes, a partirlo con el BankSawp.exe si lo parte en dos, pero este que hice arriba gracias a ustedes me lo parte en tres cachos. El último cacho a 1 KB.

Bro es solo cuestion de matematicas:
2049 KB = 1024 KB + 1024 KB + 1 KB

O lo que seria lo mismo dos partes de 1024 KB y una parte de 1 KB lo que completaria los 2049 KB.
-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/