Привет, подскажите, в процессе написания PE-лоадера столкнулся с проблемой обработки TLS: ловлю исключение
Колбэки выполняю примерно так:
Есть ли какая-то разница в их обработке на архитектурах х86/х64?
STATUS_ILLEGAL_INSTRUCTION при выполнении нужной мне экспортируемой функции из загруженного модуля. Та же длл, собранная под х86 работает как нужно, но именно с х64 какие-то траблы. Для теста попробовал donut - та же проблема.Колбэки выполняю примерно так:
C:
void exec_tls(LPVOID addr) {
PIMAGE_TLS_DIRECTORY tls = /* RVA of IMAGE_DIRECTORY_ENTRY_TLS directory */;
PIMAGE_TLS_CALLBACK* cb = (PIMAGE_TLS_CALLBACK*)tls->AddressOfCallBacks;
if (cb) {
while (*cb) {
(*cb)(addr, DLL_PROCESS_ATTACH, NULL);
cb++;
}
}
}