Привет, всем как можно отлаживать Native приложения и в общем интересно узнать как вы их запускаете...
Странно да.. у меня оля чудесно дебажит нативные приложения. Вот к smss приаттачился нормаль так, никаких проблем нету. Csrss тоже нормально открывается, в заголовке модуля меняю Subsystem как и сказал и всё гуд.
Запускать во время загрузки венды, хз как точно это назвать. / Кладешь свою прогу в system32 Затем в реестре HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager в ключ BootExecute добавляешь имя программы. Вроде все.
SmanxX1 так и делаю, тока не понятно как отладку правильно вести, пока додумался только логами и листаю учебники по WinDbg... Я на фасме творю, и это типа первое мое native приложение и я не совсем понимаю о чем идет речь, нужно мне всего для начала вывести пару строк и еще пытаюсь прочитать файл... если не трудно подскажите простенькие доки по этому делу, а то у меня уже мозг плавится...
Имеется ввиду поле Subsystem из опционального заголовка PE. Код (Text): #define IMAGE_SUBSYSTEM_UNKNOWN 0 // Unknown subsystem. #define IMAGE_SUBSYSTEM_NATIVE 1 // Image doesn't require a subsystem. #define IMAGE_SUBSYSTEM_WINDOWS_GUI 2 // Image runs in the Windows GUI subsystem. #define IMAGE_SUBSYSTEM_WINDOWS_CUI 3 // Image runs in the Windows character subsystem. #define IMAGE_SUBSYSTEM_NATIVE_WINDOWS 8 // image is a native Win9x driver. #define IMAGE_SUBSYSTEM_WINDOWS_CE_GUI 9 // Image runs in the Windows CE subsystem.
Clerk подмена подсистемы не прокатит если юзается NtDisplayString или еще что-нибудь такое, что возможно только до загрузки вин32 подсистемы. А вот WinDbg прекрасно справляется с отладкой.
Решил поднять тему т. к. появляются вопросы, задать их не кому, а китайский я пока очень плохо знаю... Буду благодарен если скажете от куда мне импортировать функции:
Из ядра, оно их экспортирует, это обёртки вокруг сервисов BootVid.dll Это не для юзермодных приложений, а из драйверов юзается.
А как же тогда реализовать обратный отсчет в приложении, что бы не было черной полоски? autochk.exe как то же это делает...
dgs через символ \r, который переводит курсор в начало строки. NtDisplayString поддерживает только два управляющих символа - \r и \n