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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Como desencyptar y ejecutar en Memorya
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como desencyptar y ejecutar en Memorya  (Leído 1,803 veces)
PokiPoki

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Como desencyptar y ejecutar en Memorya
« en: 26 Mayo 2014, 03:10 am »

Muy buenas a todos los componentes del Foro,vengo a pediros informacion de como desencryptar un archivo y poder ejecutarlo en Memorya.

Recien empiezo a usar este leguaje y aun me cuesta entender el uso de algunas funciones,ya que mi ingles es muy basico y me ayudo del
vendito San Google  :( ,bueno este es el codigo que estoy utilizando como Loader.

Código
  1. Imports System.IO
  2. Imports System.Text
  3. Imports System.Runtime.InteropServices
  4. Imports System.Reflection
  5. Imports System.Threading
  6. Imports System.Windows.Forms
  7. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  8. Dim TH As New Thread(AddressOf ThreadWork)
  9. TH.Start()
  10. End Sub
  11. Private Sub ThreadWork()
  12. 'Dim LoadedBytes As Byte() = My.Resources.Test
  13. Dim LoadedBytes As Byte() = IO.File.ReadAllBytes(Application.StartupPath & "\Test.exe")
  14. Dim ExecutingAssemblyPath As String = String.Empty
  15. ExecutingAssemblyPath = Application.StartupPath
  16. Dim MyAssembly As System.Reflection.Assembly = System.Reflection.Assembly.Load(LoadedBytes)MyAssembly.EntryPoint.Invoke(Nothing, Nothing)
  17. End Sub

y este seria Test.exe,solo pongo la parte del sub main ya que el Form1 y los demas modulos llevan mucho code

Código
  1. Imports System.Windows.Forms
  2. Module Module1
  3. Sub Main()
  4. Application.Run(New Form1)
  5. End Sub
  6. End Module

Tanto si tengo Test.exe en el mismo directorio,como si lo agrego como recurso funciona bien,mi problema es cuando lo intento desencyptar,
bueno el caso es que yo encrypto Test.exe,con Base64 por ejemplo y lo guardo con otro nombre,a primera vista parece un archivo roto
digo roto por que no tiene icono ni nada,lo abro con notepad++ y dentro como es logico solo encuentro un string muy largo que
coresponde al encryptado de Test.exe,pues lo que quisiera saber es como desencryptarlo y ejecutarlo en memorya sin tener que escribir
otra vez los byte en el pc osea hacer todo el proceso en memorya.
E leido sobre como utilizar MemoryStream,pero devido a que recien empiezo a entender y comprender este lenguaje aun no e podido
hacerlo funcionar corectamente.

Un saludo compañeros

PD: No es mas sabio el que mas sabe,si no el que menos pregunta  <<<< By PokiPoki


En línea

kub0x
Enlightenment Seeker
Moderador
***
Desconectado Desconectado

Mensajes: 1.445


S3C M4NI4C


Ver Perfil
Re: Como desencyptar y ejecutar en Memorya
« Respuesta #1 en: 27 Mayo 2014, 00:14 am »

Muy buenas PokiPoki,

existen varías formas de codificar y decodificar base64, en tu caso si quisieras codificar el archivo utilizarías un array de bytes ( Byte() ). Si quisieras decodificar el archivo entonces extraerías la cadena base64 del ejecutable y la decodificarías con la siguiente función:

Código
  1. Public Function FromBase64(ByVal base64 As String) As Byte()
  2.        If base64 Is Nothing Then Throw New ArgumentNullException("base64")
  3.        Return Convert.FromBase64String(base64)
  4.    End Function

El code fue extraido de : http://www.nonhostile.com/page-vb-net-base64-encoding-decoding.asp, pues ando bastante vago :D

Este code simplemente convertiría el string base64 extraído del ejecutable codificado en un Array de bytes ( Byte() ) el cual podrías cargar en el proceso deseado mediante Assembly.Load.

Si tu propósito fuera codear un Crypter entonces necesitarías decodificar un bloque de datos ( Byte() ) que represente el programa en b64.

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

PokiPoki

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Como desencyptar y ejecutar en Memorya
« Respuesta #2 en: 27 Mayo 2014, 18:19 pm »

Hola kub0x,no se si no lo hago bien,pero no me funciona,asi e dejado el code
la funcion que tu me as dejado ya la estaba utilizando 'Convert.FromBase64String' esto hace la funcion si no me equivoco :huh:

Código
  1. Private Sub ThreadWork()
  2.  
  3.        'Dim LoadedBytes As Byte() = My.Resources.Encrypt
  4.        Dim LoadedBytes As String = Application.StartupPath & "\Encrypt.exe"
  5.        Dim MyApp As Byte() = Convert.FromBase64String(Base64_To_String(LoadedBytes))
  6.        Dim ExecutingAssemblyPath As String = String.Empty
  7.        ExecutingAssemblyPath = Application.StartupPath
  8.        Dim MyAssembly As System.Reflection.Assembly = System.Reflection.Assembly.Load(MyApp)
  9.        MyAssembly.EntryPoint.Invoke(Nothing, Nothing)
  10.  
  11.    End Sub
  12.  
  13.    Private Function Base64_To_String(ByVal str As String) As String
  14.        Return System.Text.Encoding.Default.GetString(Convert.FromBase64String(str))
  15.    End Function
  16.  

y con esto encrypto Test.exe para pasarlo a Encrypt.exe,esto si lo e sacado de un crypter...pero mi intencion no es hacer un crypter
si no,poder desencryptar Encrypt.exe y ejecutar esos byte en el Assembly.Load,ya que esa funcion crea un proceso en memorya si no
me equivoco

Código
  1. Imports System
  2. Imports System.Text
  3. Imports System.Windows.Forms
  4.  
  5. Public Class Form1
  6.  
  7.    Dim FileNameOriginal As String = Application.StartupPath & "\Test.exe"
  8.    Dim FileNameEncrypt As String = Application.StartupPath & "\Encrypt.exe"
  9.  
  10.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  11.        Dim FileOk, NameOk As String
  12.        FileOpen(1, Application.StartupPath & "\Test.exe", OpenMode.Binary, OpenAccess.Read)
  13.        FileOk = Space(LOF(1))
  14.        FileGet(1, FileOk)
  15.        FileClose(1)
  16.  
  17.        FileOpen(1, NameOk & "Encrypt.exe", OpenMode.Binary, OpenAccess.ReadWrite)
  18.        FilePut(1, String_To_Base64(FileOk))
  19.        FileClose(1)
  20. End Sub
  21.  
  22. Private Function String_To_Base64(ByVal str As String) As String
  23.        Return Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(str))
  24.    End Function  
  25. End Class
  26.  

no se que lechugas hago mal,no lo se,igual tendria que añadir algo mas?
si como lo e planteado no esta bien agradeceria que me organizaces un poco el code

Un saludo para el Foro
« Última modificación: 27 Mayo 2014, 22:50 pm por PokiPoki » En línea

kub0x
Enlightenment Seeker
Moderador
***
Desconectado Desconectado

Mensajes: 1.445


S3C M4NI4C


Ver Perfil
Re: Como desencyptar y ejecutar en Memorya
« Respuesta #3 en: 27 Mayo 2014, 23:07 pm »

Citando tu código:

Código
  1. Private Sub ThreadWork()
  2.  
  3.        'Dim LoadedBytes As Byte() = My.Resources.Encrypt
  4.        Dim LoadedBytes As String = Application.StartupPath & "\Encrypt.exe"
  5.        Dim MyApp As Byte() = Convert.FromBase64String(Base64_To_String(LoadedBytes)) 'TERRIBLE FALLO
  6.        'más y más código...
  7.        '....
  8.    End Sub
  9.  
  10.    Private Function Base64_To_String(ByVal str As String) As String
  11.        Return System.Text.Encoding.Default.GetString(Convert.FromBase64String(str))
  12.    End Function
  13.  

En tu ejecutable codificado tendrás el string en base64 que representa el conjunto de instrucciones o código de ese ejecutable. Lo que tienes que hacer es abrir dicho ejecutable, extraer la cadena en b64 y decodificarla en un array de bytes ( Byte() ) de esa forma podrías hacer Assembly.Load para cargar el ensamblado dinámicamente.

En tu código simplemente formas un string con la ruta del archivo codificado y mandas dicho string a ser decodificado en b64, a ver si nos fijamos un poquito más la siguiente vez ;)

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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
como ejecutar programa en memoria sin ejecutar el archivo « 1 2 »
Programación Visual Basic
Sai-To 13 8,747 Último mensaje 25 Mayo 2008, 18:14 pm
por Sai-To
ejecutar como
Windows
luisaranda 7 2,176 Último mensaje 25 Junio 2011, 11:51 am
por luisaranda
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines