C++ Code in eigenes Projekt einbinden
-
Hallo
Ich bin neu bei der Programmiersprache C++
Ich habe vorhin lange Delphi programmiert.... (immer noch)
Nun habe ich mir Visual C++ geholt, hab mir mal ein paar test programme gemacht.. hat alles geklappt

Nun möchte ich Folgenden Code integrieren:
void CCrackme1Dlg::OnCheck() { UpdateData(TRUE); CString Hex1,Hex2,Hex3,Hex4,ASCII1,ASCII2,ASCII3,ASCII4; CString Final_1, Final_2, Final_3, Final_4, Final_1f, Final_2f, Final_3f, Final_4f, Final_1ff, Final_2ff, Final_3ff, Final_4ff, Final; int Länge = mstr_Name.GetLength(); int zahl = 0; int checkserial = ((mstr_Name[zahl])*(2,8)); int serial = (checkserial * 5); int serial_1 = 1; int serial_2 = 1; int serial_3 = 1; int serial_4 = 1; // ASCII-Wert for (zahl; zahl <= Länge; zahl++) { checkserial = ((mstr_Name[zahl])*(2,8)); serial += checkserial; } ASCII1.Format("%d",serial); ASCII2.Format("%d",(serial*2)); ASCII3.Format("%d",(serial*3)); ASCII4.Format("%d",(serial*4)); // Hex-Wert Hex1.Format("%x",serial); Hex2.Format("%x",(serial*2)); Hex3.Format("%x",(serial*3)); Hex4.Format("%x",(serial*4)); // 1-Block Final_1f = ASCII1[0]; Final_2f = Hex1[1]; Final_3f = ASCII1[2]; Final_4f = Hex1[3]; Final_1ff = Final_1f + Final_2f + Final_3f + Final_4f; // 2-Block Final_1f = ASCII2[0]; Final_2f = Hex2[1]; Final_3f = ASCII2[2]; Final_4f = Hex2[3]; Final_2ff = Final_1f + Final_2f + Final_3f + Final_4f; // 3-Block Final_1f = ASCII3[0]; Final_2f = Hex3[1]; Final_3f = ASCII3[2]; Final_4f = Hex3[3]; Final_3ff = Final_1f + Final_2f + Final_3f + Final_4f; // 4-Block Final_1f = ASCII4[0]; Final_2f = Hex4[1]; Final_3f = ASCII4[2]; Final_4f = Hex4[3]; Final_4ff = Final_1f + Final_2f + Final_3f + Final_4f; Final = Final_1ff + "-" + Final_2ff + "-" + Final_3ff + "-" + Final_4ff; if (mstr_Serial == Final) { MessageBox(_T("Der Serial ist richtig!"),_T("Geschafft"),NULL); } else { MessageBox(_T("Der Serial ist falsch!"),_T("Error"),NULL); } }Doch ich krieg das nicht hin....
Ich hoffe, ihr könnt mir vieleicht helfen...
Code ist dazu da, um eine Serial zu erzeugen. Nicht für illegales nur für ein Crackme
Und noch ne kleine Frage am rande... Bei dem Button in VC++ steht .NET Component. Ist das nun .NET oder C++?

Liebe Grüsse
Claudio
-
Was klappt denn nicht ?
Eventuell mal die Compilermeldung hier rein schreiben.
-
Es kommt zb.
C2065: 'CString': nichtdeklarierter Bezeichner C2065: 'Hex1': nichtdeklarierter Bezeichner
-
Naja du nutzt da Funktionen & Klassen der MFC (microsoft foundation class) und dafür müsstest du auch die Header davon einbinden. Du kannst aber auch einfach hingehen und die Klassen durch die Entsprechenden Klassen des Standards ersätzen und ggf. die Funktionen anzupassen.
Aber
void CCrackme1Dlg::OnCheck()sieht eigtl. auch nach MFC aus ... woher hast du den Code?
-
Den Code habe ich von hier
http://www.hackerboard.de/thread.php?postid=257871#post257871 (ganz unten)
Ok also die Klassen ersetzen....
Welche wären das?
Noch was, wenn ich eine erstellte Anwendung auf einem anderen PC Laufen lassen möchte, kommt folgender Fehler:
This application has failed to start because the application configuration is incorrect
-
Ehm ok also da ist was drin, was der Autor bestimmt nicht beabsichtigt hat

int checkserial = ((mstr_Name[zahl])*(2,8));hier wird nicht mit 2,8 multipliziert (was der Compiler bestimmt auch angemeckert hat, bevor er die Klammern darum machte) sondern mit 8. Was er meinte wäre 2**.**8 gewesen.
Um das ganze zu verstehen, was nicht weiter schwer ist, auch wenn der Programmierer wohl arrays usw. nicht kannte
, wäre evtl. ganz nett zu wissen was in mstr_Name steht.Aja CString durch std::string ersetzen und <string> einbinden.
-
Achja im Prinzip sieht es danach aus als würde er jeweils das 1. Zeichen einer Zahl (123 => 1) in dezimal, dann in hex, dann in dezimal und zum Schluss wieder in hex in einen String packen und das 4x. Dann gucken ob der String mit mstr_Name gleich ist.
-
Hab das so versucht:
std::string Hex1,Hex2,Hex3,Hex4,ASCII1,ASCII2,ASCII3,ASCII4;und so
#include <string>Jedoch meldet er nun das selbe und noch zusätzlich
C2653: 'std': Keine Klasse oder NamespaceC2065: 'string': nichtdeklarierter BezeichnerIn mstr_Name steht der name zu dem die Serial erzeugt werden soll
-
hedie , willste nicht mal C++-Grundlagen lernen? std::string sollte jedem C++-Programmierer aus dem FF bekannt sein.
Außerdem würde ich CString durch std::wstring und nicht std::string ersetzen!
-
Neee

Ich lerne am liebsten und am besten durch beispiele...
hat mir die Erfahrung gezeigt

Ok ich versuche mal
std::wstring
-
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
