में फ़ंक्शन पॉइंटर को कास्टिंग करके शेलकोड निष्पादित करें यह ठीक काम करता है।विजुअल सी ++
unsigned char b[50] = "\xda\xd1 ... \x0"; //some shellcode with terminating \x0
((void(*)())b)(); //cast b to function pointer from void to void, then run it
लेकिन जब यह विजुअल C++ में डाल दिया है, यह पता थूक यह त्रुटि संदेश:
1>..\test.cpp(132): error C2440: 'type cast' : cannot convert from 'unsigned char [50]' to 'void (__cdecl *)(void)'
1> There is no context in which this conversion is possible
किसी को भी पता है कि यह क्यों इतना है कोड कुछ प्रकार है?
'(* (शून्य (*)()) और बी [0])()' कोशिश करें। –
भले ही आप इसे किसी भी तरह काम करने के लिए प्राप्त करते हैं, यह एक बहुत बुरा विचार है। –
या: 'reinterpret_cast (static_cast (बी))() '। –