Гспода поможите разобраться в глюке. .386 .model flat,stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\advapi32.inc includelib \masm32\lib\advapi32.lib includelib \masm32\lib\kernel32.lib include \masm32\include\user32.inc includelib \masm32\lib\user32.lib IDR_MAIN_EXE equ 30001 .data MsgBoxCaption db "Iczelion Tutorial No.2",0 MsgBoxText db "Ýòî ÍÒ!",0 MsgBoxCaption1 db "Iczelion Tutorial No.2",0 MsgBoxText1 db "Ïðàâà Àäìèíà ÂÀÓ!",0 MsgBoxText2 db "Óïñ îáëîì :-(",0 LibName db "ntlib.dll",0 FunctionName db "IsNT",0 Name_Main_Exe db "main", 0 fName db "\ntlib.dll", 0 hFile dd 0 written dd 0 EXres PROTO .data? hLib dd ? IsNTAddr dd ? folderbuffer db 512 dup(?) .code start: invoke EXres invoke LoadLibrary,addr LibName mov hLib,eax invoke GetProcAddress,hLib,addr FunctionName mov IsNTAddr,eax call [IsNTAddr] .if eax == FALSE jmp endpr .endif invoke MessageBox, NULL, addr MsgBoxText, addr MsgBoxCaption, MB_OK invoke OpenSCManager, NULL, NULL, SC_MANAGER_ALL_ACCESS or eax,eax jnz admin invoke MessageBox, NULL, addr MsgBoxText2, addr MsgBoxCaption1, MB_OK jmp endpr admin: invoke CloseServiceHandle, eax invoke MessageBox, NULL, addr MsgBoxText1, addr MsgBoxCaption1, MB_OK jmp endpr endpr: invoke ExitProcess, NULL EXres PROC ;ñîçäà¸ì ôàéëû, èçâëåêàÿ èõ èç ðåñóðñîâ. local hResInfo_file_1:HRSRC local cb_file_1:UINT local pRes_1:LPVOID invoke FindResource, NULL, IDR_MAIN_EXE, addr Name_Main_Exe .if eax != NULL mov hResInfo_file_1, eax invoke LoadResource, NULL, hResInfo_file_1 .if eax != NULL mov pRes_1, eax invoke SizeofResource, NULL, hResInfo_file_1 mov cb_file_1, eax invoke LockResource, hResInfo_file_1 invoke lstrcat, ADDR folderbuffer, ADDR fName invoke CreateFile,OFFSET folderbuffer,GENERIC_WRITE,\ FILE_SHARE_READ,0,CREATE_ALWAYS,\ FILE_ATTRIBUTE_NORMAL,0 mov hFile,eax invoke WriteFile,hFile,pRes_1,cb_file_1,OFFSET written,NULL invoke CloseHandle,hFile .endif .endif EXres ENDP end start скажем так большая часть кода выдрана из install_machine ALx aka 1990 процедура EXres вся основана на его коде. Суть идеи вытащить из своих внутренностей дллку и поработать с ней. Вытаскивает и сохраняет ее нормально а потом когда оллидебаг доходит до invoke CloseHandle,hFile происходит улет в advapi32.dll и все программа совершила ошибку что к чему не понятно. Вот еще экзешник. _2120198578__msg.zip
Похоже ты после invoke CloseHandle,hFile забыл ret поставить По-этому после процедуры вытаскивания длл-ки выполняеться первая попавшаяся инструкция , а у тебя там как раз импорты (переходники в Advapi32.dll