Свободные места для расположения всяких хуков:
Code: Select all
;RST 10h
jp sys ; вектор ДОС-а
ds 0x18-$, -1 ;свободно
;RST 20h, заглушка
jp empty__ ;свободно
ds 0x28-$, -1 ;свободно
;RST 28h, свободный
jp empty__ ; заглушка, свободно
ds 0x30-$, -1 ;свободно
загрузка либ можно пока оставить на system.exe, а вот L_CALL, L_INFO и L_FREE можно скрыть под досом, в 0м окне. чтобы корректно вылетать из них в либу, можно использовать стэк, с адреса 0x10 в странице с вызывалкой либы (L_CALL, L_INFO и L_FREE) поставить возврат страницы с досом. Либман в шелле может узнать эту страницу через In a,(0x82) и подставив в возвратную процедуру ld a,dss_page:out (0x82),a. следующим байтом будет стоять ret который откинет нас в страницу и адрес с либой. конечно, она должна быть предварительно уже включена, с запоминанием страницы юзера. и т.д.
но это всё, конечно, будет накладывать лишний тормоз. но это пока... мы же пока тренируемся)))