Я извиняюсь, но архитектура висты и семерки весьма схожа
У меня нет под рукой Висты, но догадываюсь, что нижеизложенное присутствует только начиная с Win7...
Итак, рассмотрим разницу в архитектуре. Сегодня пришлось столкнуться с тем, что под семеркой
CreateThread вызывает уже не
CreateRemoteThread, а её расширенный аналог
CreateRemoteThreadEx. При чём
CreateRemoteThreadEx импортируется не из Kernel32 (как можно было бы предположить), а из (даже страшно писать) API-MS-Win-Core-ProcessThreads-L1-1-0.dll
Сама
CreateRemoteThreadEx выглядит вообще забавно:
- Код: Выделить всё
.text:07401072 db 5 dup(0CCh)
.text:07401077 ; __stdcall CreateRemoteThreadEx(x, x, x, x, x, x, x, x)
.text:07401077 public _CreateRemoteThreadEx@32
.text:07401077 _CreateRemoteThreadEx@32 proc near
.text:07401077 xor eax, eax
.text:07401079 retn 20h
.text:07401079 _CreateRemoteThreadEx@32 endp
На самом деле после загрузки библиотеки тут будет располагаться прыжок на нормальную
CreateRemoteThreadEx, которая экспортируется модулем KernelBase.dll. Ну а там уже вызывается привычная (с Висты, если не ошибаюсь)
NtCreateThreadEx.
Такие вот пироги. Если в висте хоть немного по-другому (просьба к владельцам сего чуда - проверьте
), то до пенсии вы будете переносить на нее что-то из семерки.
А я все практикую лечение травами...