Всем здрасьте! У меня такой вопрос к уважаемым гуру - как будет выглядеть код на MASMe (из статьи - Ваш друг имперсонация): - Проверка прав - ;----------------------------------------------------------------------------- ; Функция CheckTokenMemberShip находится в advapi32.dll ; Если используется для имперсоницированного токена (token), не возвратит ; правильного результата SECURITY_BUILTIN_DOMAIN_RID equ 20h DOMAIN_ALIAS_RID_ADMINS equ 220h SECURITY_NT_AUTHORITY equ 5 ; на выходе: eax - булевое значение is_caller_admin proc near pushad @SEH_SetupFrame <jmp is_caller_admin_end> @pushvar <dd ?> pop eax and dword ptr [eax], 0 push eax push eax align 4 call $+24 db 0ffh, 25h, 60h db 1 ; создаем SID администратора db 2 db 0, 0, 0, 0, 0, SECURITY_NT_AUTHORITY dd SECURITY_BUILTIN_DOMAIN_RID dd DOMAIN_ALIAS_RID_ADMINS add dword ptr [esp], 3 push 0 ; проверяем токен выполняющегося треда call CheckTokenMembership ; for admin SID pop eax mov eax, dword ptr [eax] is_caller_admin_end: @SEH_RemoveFrame mov dword ptr [esp.Pushad_eax], eax popad retn is_caller_admin endp Заренее спасибо!
Вот ошибки выведенные MASMом при компиляции: Log.asm(53) : error A2008: syntax error : @SEH_SetupFrame Log.asm(54) : error A2008: syntax error : jmp is_caller_admin_end Log.asm(56) : error A2008: syntax error : @pushvar Log.asm(77) : error A2008: syntax error : @SEH_RemoveFrame Log.asm(78) : error A2006: undefined symbol : Pushad_eax Как мне адаптировать вышеприведенный код под MASM?
@pushvar - объяви макрос. call @1 dd xxxx pushad_eax - тоже непонятно что делает. Да и вообще он не определен. Вообще, приведи пример всех этих макросов - может сами макросы не нравятся масму. И вообще, выкинь нафиг ты эти макросы. Этот код писал извращенец! Согласен, профессионал, но извращенец Если не можешь написать без макросов, скажи - попробую помочь чем смогу. А еще проще - посмотри в MSDN описание CheckTokenMembership и вызывай ее сам. Все остальное в этом коде, как например установка сеха, - мусор! Код мржно представить так: Код (Text): is_caller_admin proc near pushad call @F dd 0 @@: pop eax and dword ptr [eax], 0 push eax push eax align 4 call $+24 db 0ffh, 25h, 60h db 1 ; создаем SID администратора db 2 db 0, 0, 0, 0, 0, SECURITY_NT_AUTHORITY dd SECURITY_BUILTIN_DOMAIN_RID dd DOMAIN_ALIAS_RID_ADMINS add dword ptr [esp], 3 push 0 ; проверяем токен выполняющегося треда call CheckTokenMembership ; for admin SID pop eax mov eax, dword ptr [eax] mov dword ptr [esp+7*4], eax popad retn is_caller_admin endp