C++ Code in eigenes Projekt einbinden



  • Schön, und wir sollen jede kleine Fehlermeldung erklären, obwohl sie durch Grundlagenwissen hätte vermieden werden können? Ist ja nur unsere Zeit und Nerven...



  • Tut mir leid.....

    Mir geht es hier in ersterlinie, darum einen Keygen zu bauen...

    Ob in Delphi oder C++ is nich so wichtig... Ich habs nun nur versucht, da der Code bereits C++ ist und ich ihn nicht verstehe um ihn in Delphi zu Portieren.



  • #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);
    		ss >> ascii[i];
    	}
    
    	ss.clear(); ss.str("");
    
    	for (std::size_t i(0); i < 4; ++i)
    	{
    		ss << std::hex << serial * (i + 1);
    		ss >> hex[i];
    	}
    
    	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;
    }
    

    ... so in etwa 😉



  • Cool... vielen dank

    ich nehme mal an, du gehst davon aus das der code funktioniert

    also bei mir sind wieder die fehler wie

    undefinierter bezeichner str



  • Hmm welcher Compiler? Ist Standard-C++ ... zwar nicht getestet, sollte aber gehen 😉



  • Ich benutze den standard Visual C++ Compiler...

    Nich lachen 😃 liegt es daran, das ich den code in ein Button click event getan hab?



  • ?? Was für ein Button-Click-Event? Und ja die Funktion darf nicht in einer anderen Sein 😉



  • Ich hab auf meiner Form einen Button

    und in diesen also in sein OnClick event habe ich den Code getan....

    Oder war dein Code eine eigene Funktion?

    Wenn ka, wie muss ich diese aufrufen? 😃



  • Hmm Forms hört sich aber nicht nach reinen C++ an 😉 Mach mal eine Win32 Konsolenanwendung und ja das war eine extra Funktion und an Sie musst du den Inhalt von dem mstr_ ding übergeben bekommen.



  • Ok hab das mal versucht.....

    da gibts wieder die gleichen fehler (ca 30)

    Unter anderen auch diesen

    C2784: "std::basic_istream<_Elem,_Traits> &std::operator >>(std::basic_istream<_Elem,_Traits> &,_Elem *)": template-Argument für "std::basic_istream<_Elem,_Traits> &" konnte nicht von "std::ostringstream" hergeleitet werden.
    

    Welchen Compiler benutzt du denn?

    GCC?

    Hast du ICQ, MSN oder so?

    Vielen Dank für deine Geduld

    Liebe Grüsse
    Claudio



  • Sorry es muss statt std::ostringstream ss; einfach std::stringstream ss; heißen, da du nicht nur rein sondern auch raus streams.
    oder:

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

    dann sollte es aber gehen 😉



  • 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.


Anmelden zum Antworten