Всем привет. Скомпилировал x64 шеллкод на C++ в виде EXE без импорта. В нем получаю NTDLL через PEB->Ldr, получаю адреса нужных функций, и пробую вручную загружать EXE переданный в качестве параметра в точку входа EXE. Облом случается при попытке загрузить kernel32 (kernelbase грузтся отлично) на Win7 x64. Код вызываю через call 33:xxxxxxxx. Делаю лог - фейл случается при вызове LdrLoadDll с библиотекой kernel32 - STATUS_CONFLICTING_ADDRESSES. Из-за этого не может загрузиться ни одна библиотека. Повторюсь kernelbase и ntdll работают отлично, память под секции и заголовки выделяется успешно, проблема при обработки импорта.
Я хотел бы узнать, как можно обойти данное поведение. К примеру если я вручную буду загружать kernel32 и добавлю соответствующие записи в PEB->Ldr будет ли это работать? Просто в списке лоадера, насколько я знаю, есть кроме трех основных листов еще список по хешам имен библиотек, который различается на разных версиях винды. Может кто делал подобное, просто не хочется делать напрасную работу в этом направлении,а потом обломится что это не будет работать.
Спасибо.