Делаю функцию загрузки DLL в процесс, альтернативу LoadLibrary. В краце алгоритм - загружаю библиотеку в память, настраиваю релоки, настраиваю таблицу импорта, передаю управление на точку входа. Для тестов сделал DLL, которая просто выводит MessageBox, оптимизацию отключил, зависимость от msvcr80.dll тоже. Все проходит нормально, до того момента, как серия вызовов функций не доходит до 0x7C809100 инструкции (уже в kernel32.dll), вываливается исключение, мол "привелигированная инструкция": Код (Text): 7C8090F8 44 inc esp 7C8090F9 4C dec esp 7C8090FA 4C dec esp 7C8090FB 2E 52 push edx 7C8090FD 74 6C je 7C80916B 7C8090FF 41 inc ecx 7C809100 6C ins byte ptr es:[edi],dx 7C809101 6C ins byte ptr es:[edi],dx 7C809102 6F outs dx,dword ptr [esi] 7C809103 63 61 74 arpl word ptr [ecx+74h],sp 7C809106 65 48 dec eax 7C809108 65 61 popad 7C80910A 70 00 jo 7C80910C Не могу понять в чем дело. Цикл вызовов проходит нормально, проверял дизассемблером/отладчиком (то есть ситуация, что произошел jmp/call на середину инструкции и все инструкции "поплыли", отпадает). Фактически в ольке проходит эта инстукция нормально, а когда я гружу DLL в любой другой процесс, например в notepad.exe, бедный блокнот валится с таким исключением. Как Вы думаете, в чем может быть дело?
Rel Это не HeapAlloc, а адрес строки RtlAllocateHeap. В своей dll неверно настраиваете импорт сквозного экспорта kernel32.