Небольшой пруфкод, установка 0x21 шлюза прерывания(DPL = 3) без поднятия привилегий(!SE_TCB_PRIVILEGE). На XP робит.
Следует сказать как ISR отлаживать(по дефолту отладчиком это не пройти): Код (Text): FIXED_NTVDMSTATE_LINEAR equ 714H ; Ki386VdmReflectException -> VdmFetchULONG(). VDM_BREAK_EXCEPTIONS equ 8H VDM_BREAK_DEBUGGER equ 10H VDM_USE_DBG_VDMEVENT equ 4000H and dword ptr ds:[FIXED_NTVDMSTATE_LINEAR],NOT(VDM_BREAK_EXCEPTIONS or VDM_BREAK_DEBUGGER or VDM_USE_DBG_VDMEVENT) ; #STATUS_SEGMENT_NOTIFICATION etc.
bugaga Вроде как под 2к тоже должно работать. Но я не держу у себя таких костылей, как 2к и 98. Посему сами разбирайтесь.
Indy Понимаю, что это "бантики", но можно сократить сам код на сотню байт и уменьшить твой ехе с 3072 до 1124 байт
Mikl___ Вы бы лучше оптимизировали, удалив фиксированные смещения(хардкод) - ThVdm & VDM_TIB_SIZE, заюзав ntvdm!host_CreateThread()/cpu_createthread().
Ребята, а где такие *.inc- и брать чтобы все эти - ULONG, PVOID, PCHAR, CHAR - понимались? Поделитесь пожалуйста.
Что здесь непонятного, ULONG, PVOID, PCHAR это всё DWORD'ы, CHAR - байт. Зачем Вам этот код, если Вы не знаете основных типов?
_sheva740 Посмотри мой вариант -- он самодостаточен и из *.inc использует только windows.inc стандартного комплекта masm32
Нужно потрейсить ntvdm до ExitProcess(), чтобы инициализировался хип, после этого заюзать host_CreateThread(прототип как у CreateThread(), тока без последнего параметра). Проще наверно уже никак.
Mikl___ Нет ну у меня что-то не то явно Может что-то с линкером? (( Вот такой код Код (Text): .686 .model flat,stdcall option casemap:none includelib \masm32\lib\ntdll.lib include \masm32\include\windows.inc includelib \masm32\lib\kernel32.lib extern _imp__DbgPrint@8:dword .data $IsVdm db "IsVdmProcess: %X", 13, 10, 0 _outnumb dd -1 .code main proc lea edi,_outnumb push dword ptr [edi] push offset $IsVdm call _imp__DbgPrint@8 ret main endp end main Вываливает такое Код (Text): Microsoft (R) Macro Assembler Version 6.14.8444 Copyright (C) Microsoft Corp 1981-1997. All rights reserved. Assembling: C:\_temp\vm2.asm Microsoft (R) Incremental Linker Version 5.12.8078 Copyright (C) Microsoft Corp 1992-1998. All rights reserved. vm2.obj : error LNK2001: unresolved external symbol __imp__DbgPrint@8 vm2.exe : fatal error LNK1120: 1 unresolved externals _ Link error Для продолжения нажмите любую клавишу . . . Может я где-то торможу ?
Mikl___ Ты знаешь не помогло ((( Может с link.exe что-то ? А можешь у себя попробовать собрать vm2.asm с моими инками и либами ml и link? Если не напряжет конечно. http://webfile.ru/5459938