C++ Code in eigenes Projekt einbinden



  • Perfekt... Funktioniert (also das erzeugen 😃 )

    Das ganze sieht nun bei mir so aus

    // rtzu.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
    //
    
    #include "stdafx.h"
    #include <string>
    #include <sstream>
    #include <iomanip> 
    
    bool valid_serial(std::string const& str)
    {
        short checkserial = str[0] * (2, 8);
        int serial(checkserial * 5);
    
        for (std::size_t i(0); i < str.length(); ++i)
        {
            checkserial = str[i] * (2, 8);
            serial += checkserial;
    	}
    std::string hex[4];
    std::string ascii[4];
    std::ostringstream ss;
    
    for (std::size_t i(0); i < 4; ++i)
    {
        ss << serial * (i + 1);
        ascii[i] = ss.str();
    }
    ss.clear(); ss.str("");
    
    for (std::size_t i(0); i < 4; ++i)
    {
        ss << std::hex << serial * (i + 1);
        hex[i] = ss.str();
    }
    std::string final_serial;
        for (std::size_t i(0); i < 4; ++i)
        {
            char tmp[5] = { ascii[i][0], hex[i][1], ascii[i][2], hex[i][3], '\0' };
            if (i != 0) final_serial += "-";
            final_serial += tmp;
        }
        return str == final_serial;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	return 0;
    }
    

    Wie kann ich diese Funktion nun benutzen?

    Kann ich auf die Variable final_serial auch von ausserhalb der funktion zugreifen?

    Weill ich möchte ja mittels Eingabe den Namen erhalten und dan die dazugehörige Serial ausgeben....



  • ?

    #include <iostream>
    #include <string>
    #include <sstream>
    #include <iomanip>
    
    bool valid_serial(std::string const& str, std::string& result)
    {
    	result.clear();
        short checkserial = str[0] * (2, 8);
        int serial(checkserial * 5);
    
        for (std::size_t i(0); i < str.length(); ++i)
        {
            checkserial = str[i] * (2, 8);
            serial += checkserial;
        }
    	std::string hex[4];
    	std::string ascii[4];
    	std::ostringstream ss;
    
    	for (std::size_t i(0); i < 4; ++i)
    	{
    		ss << serial * (i + 1);
    		ascii[i] = ss.str();
    	}
    	ss.clear(); ss.str("");
    
    	for (std::size_t i(0); i < 4; ++i)
    	{
    		ss << std::hex << serial * (i + 1);
    		hex[i] = ss.str();
    	}
    	for (std::size_t i(0); i < 4; ++i)
    	{
    		char tmp[5] = { ascii[i][0], hex[i][1], ascii[i][2], hex[i][3], '\0' };
    		if (i != 0) result += "-";
    		result += tmp;
    	}
    	return str == result;
    }
    
    int main()
    {
    	const std::string serial("1234-1234-1234-1234");
    	std::string result;
    
    	if (valid_serial(serial, result) == true) std::cout << "Serial in Ordnung! (" << serial << ")" << std::endl;
    	else std::cerr << "FEHLER: Serial nicht in Ordnung! (" << serial << " != " << result << ")"  << std::endl;
    	std::cin.get();
    }
    


  • Warum haste nicht gleich ins Projekteforum eine Auftragsvergabe geschrieben? 🙄



  • Sorry... wusst nicht das es die gibt

    Danke für den Code...

    Jetzt is nur noch das Problem, das die serials nicht funktionieren 😃

    bei hedie als name gibts diese serial

    8048-8048-8048-8048

    diese hier wäre aber korrekt (reverse engeniring)

    8048-1040-2078-3090

    Irgendwass hast du (wir ? ) übersehen



  • Ja hab vergessen die stringstreams wieder zurück zu setzen 😉

    #include <iostream>
    #include <string>
    #include <sstream>
    #include <iomanip>
    
    void create_serial(std::string const& str, std::string& result)
    {
        result.clear();
        int serial(str[0] * 40);
    
        for (std::size_t i(0); i < str.length(); ++i)
            serial += str[i] * 8;
    
        std::string hex[4];
        std::string ascii[4];
        std::ostringstream ss;
    
        for (std::size_t i(0); i < 4; ++i)
        {
    		ss.clear(); ss.str("");
            ss << serial * (i + 1);
            ascii[i] = ss.str();
        }
    
        for (std::size_t i(0); i < 4; ++i)
        {
    		ss.clear(); ss.str("");
            ss << std::hex << serial * (i + 1);
            hex[i] = ss.str();
        }
        for (std::size_t i(0); i < 4; ++i)
        {
            char tmp[5] = { ascii[i][0], hex[i][1], ascii[i][2], hex[i][3], '\0' };
            if (i != 0) result += "-";
            result += tmp;
        }
    }
    
    int main()
    {
    	std::cout	<< "Keygen V1.0\n"
    				<< "Copyright (c) 2008 foo\n\n"
    				<< "Benutzername: " << std::flush;
    	std::string user_name;
    	std::cin >> user_name;
    
        std::string result;
        create_serial(user_name, result);
    	std::cout << "Serial: " << result << std::endl;
        std::cin.get();
    }
    

    So sollte das Programm doch ganz nett funktionieren!



  • Jaaaaaaaaaaa

    Danke... es funktioniert perferkt

    In jedem anderen forum hätte man gemekert das ich mir keine Dokus ansehe....

    aber du hast mir trozdem geholfen.... Sogar alles Programmiert

    Gosses Dankeschön !!



  • Darf man erfahren für welches Programm das ist?



  • Natürlich

    http://www.hackerboard.de/thread.php?threadid=31187

    is für dieses crackme



  • hedie schrieb:

    Neee 😃

    Ich lerne am liebsten und am besten durch beispiele...
    ...

    Aber "Rechnen-Lernen" hast Du doch auch nicht mit Einsteins allgem. Relativitätstheorie angefangen, oder ? 😉

    hedie schrieb:

    Jaaaaaaaaaaa

    Danke... es funktioniert perferkt...

    Und - was hast Du dabei gelernt ?

    Gruß,

    Simon2.



  • Ich habe gelernt wie man die Statische Bibliothek aktiviert,
    Ich habe gelernt wie man Variablen RICHTIG definiert
    Ich habe gelernt was std ist
    Ich habe gelernt wie man eine Funktion in C++ verwendet
    Ich habe gelernt wie man bei einer Funktion den Rückgabewerd definiert
    Ich habe gelernt wie man mit strings arbeitet
    Ich habe gelernt wie man Hex zu Decimal umwandelt
    Ich habe gelernt wie man ASCII zu Decimal umwandelt
    Ich habe gelernt wie man zeieln umbrüche darstellt
    Ich habe mehr über den Aufbau eines C++ Programmes gelernt

    Ich werde dank diesem Code noch lernen:

    was for genau macht und was es bedeutet
    wie man mit chars umgeht

    So ich denke das sollte mal fürs erste reichen 😃

    Nee hast recht... Mathe hab ich in der Schule beigebracht bekommen
    Hätten wir dort auch C++ müsst ich mich das net mit Beispielen aneignen 😃



  • hi (D)Evil ^^

    Was genau macht das std::flush ?
    Bin zu doof, was zu finden, was ich mir auch richtig erklären kann ^^

    Danke... : >



  • std::flush gibt den inhalt des streams sofort aus. Du musst dir vorstellen, dass die Ausgabe von text auf den Bildschirm oder das kopieren in eine datei relativ lange dauert. Man versucht also soviele Ausgabevorgänge wie möglich zu verhindern. Deswegen gibt es intern in den streams einen Speicher, der die Ausgabe zwischenspeichert. Wenn der Speicher voll ist, wird er geleert und seine Inhalte ausgegeben(ähnliches passiert, wenn du nach einer Ausgabe eine Eingabe erwartest, der Ausgabestrom wird dabei automatisch geleert).
    Das flush sagt dem stream einfach nur, dass er den Inhalt jetzt sofort ausgeben muss, das kann manchmal günstig sein.

    Ein Beispiel:

    std::cout<<"Bitte warten, das dauert ne weile";
    ewigLangeFunktion();
    

    ohne das Flush kann es vorkommen, dass die Ausgabe nicht auf dem Bildschirm erscheint, bevor die Funktion aufgerufen wurde, sondern irgendwann später. Der user könnte also unter umständen garnicht erfahren, dass das programm sich nun längere zeit nicht mehr melden wird.

    In dem Code von (D)Evil war das flush jetzt nicht nötig, aber schaden tuts auch nicht 🙂



  • Danke : >


Anmelden zum Antworten