ProMiNick wrote:
IgorA wrote:
ProMiNick wrote:
banner dq ?
Сюда по возможности желательно поставить KOLIBRI1 вместо MENUET01
элементарно. без проблем. Не вместо а добавить в мписок допустимых
Code:
MAX_SUPPORTED_MENUET_FILE_VERSION = 2
align 4
test_app_header:
virtual at eax
APP_HEADER_00 APP_HEADER_00_
end virtual
virtual at eax
APP_HEADER_01 APP_HEADER_01_
end virtual
cmp dword [eax], 'MENU'
je .menuet_may_be
cmp dword [eax], 'KOLI'
jne .fail
cmp dword [eax+4], 'BRI1'
jne .fail
jmp .banner_OK
.menuet_may_be:
cmp word [eax+4], 'ET'
jne .fail
.banner_OK:
mov ecx, [APP_HEADER_00.start]
mov [ebx+APP_HDR.eip], ecx
mov ecx, [APP_HEADER_00.mem_size]
mov edx, [APP_HEADER_00.i_end]
cmp ecx, edx ; {diamond}[20.08.2006] test that inited mem fit in allocated mem to prevent kernel faults
jb .fail
mov [ebx+APP_HDR._emem], ecx
mov [ebx+APP_HDR._edata], edx
mov dx, word [eax+6]
cmp dx, 'I1'
jz .skip_menuet_checks
sub dx, '00'
jne .check_01_header
mov [ebx+APP_HDR.path], 0
shr ecx, 1
sub ecx, 0x10
mov edx, [APP_HEADER_00.i_param]
jmp @F
.check_01_header:
cmp dx, MAX_SUPPORTED_MENUET_FILE_VERSION
ja .fail
.skip_menuet_checks:
mov ecx, [APP_HEADER_01.i_icon]
mov [ebx+APP_HDR.path], ecx
mov ecx, [APP_HEADER_01.stack_top]
mov edx, [APP_HEADER_01.i_param]
@@:
mov [ebx+APP_HDR.esp], ecx
mov [ebx+APP_HDR.cmdline], edx
ret
.fail:
xor eax, eax
ret
из (root)/kernel/trunk/core/taskman.inc всего одну функцию модифицировать. (этот вариант помоему даже короче по размеру не смотря на добавленую проверку (а не колибри ли в баннере хнднра?)