У меня есть несколько двоичных данных, которые содержат кучу функций и хотят вызвать один из них. Я знаю подпись этих функций вместе со смещением относительно начала файла. Соглашение о вызове является стандартным: __cdecl
. Файл уже загружен на страницу памяти с выполнением разрешений.Как вызвать функцию из двоичных данных
Например (A
, B
, C
являются некоторые типы)
void myFunction (A *arg1, B arg2, C arg3); // Signature
int myOffset = 0x42; // Offset
Как я могу указать, что myOffset
указывает на myFunction
?
Я не эксперт, но я думаю, что если вы вызовете функцию __cdecl, стек протекает, если ваша программа ожидает __stdcall. Значение по умолчанию должно быть __stdcall –
__stdcall используется для функций WINAPI. __cdecl является стандартом для других функций. См. Http://msdn.microsoft.com/en-us/library/zkwh89ks(VS.80).aspx – Etan
@Etan У меня есть аналогичная проблема, интересно, как вы получили смещение от всех подпрограмм ... пожалуйста, помогите! –