C anweisung in C++ ?
-
ich habe diese zeile aus einem C-programm was sonst funktioniert und komme einfach nicht weiter das in C++ zu tranferieren:
func=(void*) &data; /*adresse des Arrays zuweisen - nun kann man es ausführen*/wie weise ich bitte func die adresse von data zu!? (ist ein array (data.h) das einen shellcode enthält)
-
Ich glaube, ich würde es so probieren.
typedef void functype(); func=reinterpret_cast<functype*>(&data);
-
volkard schrieb:
Ich glaube, ich würde es so probieren.
typedef void functype(); func=reinterpret_cast<functype*>(&data);der compiler gibt zwar keinen fehler, aber wenn ichs ausführe stürzt es ab

-
Die Frage ist:
Was zur Hölle willst du überhaupt machen? Was istdata? Was istfunc? Was machst du danach mitfunc?
http://www.c-plusplus.net/forum/viewtopic-var-t-is-200753.htmlGrüssli
-
Dravere schrieb:
Die Frage ist:
Was zur Hölle willst du überhaupt machen? Was istdata? Was istfunc? Was machst du danach mitfunc?
http://www.c-plusplus.net/forum/viewtopic-var-t-is-200753.htmlGrüssli
Hat er ausreichend gesagt, finde ich. Er hat Maschinencode in einem char[] und will den ausführen.
//main.c char main[] = { 0xE8, 13, 0, 0, 0, 'H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!', '\n' , 0x59, 0xB8, 4, 0, 0, 0, 0xBB, 1, 0, 0, 0, 0xBA, 13, 0, 0, 0, 0xCD, 0x80, 0xB8, 1, 0, 0, 0, 0xBB, 0, 0, 0, 0, 0xCD, 0x80 };
-
volkard schrieb:
Hat er ausreichend gesagt, finde ich. Er hat Maschinencode in einem char[] und will den ausführen.
Jein. Shellcode schön und gut, nur was für Shellcode? Als was hat er
funcdeklariert? Womöglich will er noch irgendwelche Parameter übergeben oder das ganze noch über eine Memberfunktion laufen lassen oder irgendwelche solche seltsamen Ideen
Nur mit den Informationen, welche er uns gegeben hat, kann man ihm nicht sehr weit helfen.
Grüssli
-
Ich seh das so wie Dravere. Im ersten Post steht einfach zu wenig. Zb fehlte die Info, wie sich das Problem äußert.
WhiteLion schrieb:
der compiler gibt zwar keinen fehler, aber wenn ichs ausführe stürzt es ab
Aha!
Naja, mal davon abgesehen, dass das Vorhaben höchst fragwürdig ist ... Du solltest es vielleicht mit einem extern "C" Funktionszeiger probieren. Ich meine, wenn's der C Compiler schon gefressen hatte und funktionierte, muss es auch in C++ klappen und das mit dem extern "C" ist der einzige Unterschied, der mir dazu einfällt.
extern "C" { typedef void c_func_type(); } : void hack() { c_func_type* fptr = reinterpret_cast<c_func_type*>(data); }(Angabe ohne Gewähr)
-
Aber es fehlt wirklich noch die Info, was es für ein Funktionszeiger sein soll. Bisher haben wir ja nur geraten!