Split ein byte-array in ein Trennzeichen

Bin ich ein bisschen ein Problem, und die anderen Fragen hier nicht helfen mir viel.

Ich bin eine Sicherheit-student, und ich bin versucht, zu schreiben einen crypter für ein Projekt. Für diejenigen, die nicht wissen, was es ist, Lesen Sie bitte hier.
http://www.gamekiller.net/tutorials-guides/17187-tut-making-crypter-vb6-using-rc4.html

Sowieso, eine schnelle Erklärung, crypters sind Programme gemeint, bypass-Antivirus durch Verschlüsselung ein Programm und dann das anbringen einer "stub", das ist ein Programm, das entschlüsselt, auf der Vorderseite. Ich habe da ein sehr nerviges Problem mit Spaltung meine Datei hoch.

Das große ärgernis ist, dass ich die verschlüsselten ausführbaren Datei in ein byte-array, da die Saiten töten bestimmte Zeichen in meinem verschlüsselte ausführbare Datei, so dass es unexecutable. Noch schlimmer zu machen ich habe noch "split" die exe-Datei und, das ist, wo das Problem beginnt.

Die grundlegende Idee der stub ist:

  • Holen Sie sich die aktuellen exe-Pfad
  • Lese alle bytes durch die Datei.ReadAllytes
  • Teilen Sie die Datei am Trennzeichen, "EVILDELIMITER"
  • Holen Sie das Letzte Feld (das ist Seit den verschlüsselten EXE-Datei)
  • Entschlüsselung mit RC4
  • Laufen mit RunPE.

Ich habe alles außer die Aufspaltung Teil derer, die am meisten nervt. Wie kann ich Spalten ein byte-array in den Begrenzer? Gibt es ein einfacher Weg, dies zu tun?

Hier ist der code für die Stubs habe ich so weit.

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);
}

Vielen Dank für jede Hilfe.

  • Die Codierung auf UTF8 ist nicht ideal. Erhalten Sie ungültige unicode-codepoints. Sie sollten versuchen, Durchlaufen die byte-array.
  • Wie ändere ich meinen string in ein byte-array? Ich muss mein Trennzeichen, bevor ich suchen kann, es sei denn, Sie kennen eine Funktion, lassen Sie mich durchsuchen, um ein byte-array mit einem string-Wert. Ich habe auch fixiert den code, den ich versehentlich mit einem alten stub-version, die ich hatte.
  • Es wirft einen Haufen Fehler bei mir:( Es sagt Zeichenfolge nicht ToArray<byte> () - Methode.
InformationsquelleAutor redcodefinal | 2012-03-18
Schreibe einen Kommentar