Хорошо, это странно. Это первый раз, когда я видел такую строку кода. В основном это вызывает точку входа в приложение, как только вы указали смещение (адрес) из PE-заголовка программы.Void pointer void type cast function call?
Как вы можете сказать - я играл в последнее время с написанием своего собственного загрузчика PE. Я все еще новичок и пытаюсь понять структуру, но что же означает этот вызов функции?
((void (*) (void)) EntryPoint)();
//where 0x4484502 is gotten from:
PIMAGE_NT_HEADERS nt_header;
DWORD EntryPoint = nt_header->OptionalHeader.ImageBase + nt_header->OptionalHeader.AddressOfEntryPoint;
((void(*)(void))0x4484502)();
О, я вижу. Спасибо, что объяснили. Я был смущен, потому что раньше я не видел пустоты (*). Google не был находчивым - он просто дал мне указатели void (voidSTAR). –
Рад, что это помогло :) В общем случае указатель функции объявлен как 'return-type (* ptr_name) (.. parameters);' Например, 'int (* f) (int, short)' является указателем , 'f', к функции, которая возвращает int и принимает два параметра: int и short. – Jimbo