⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 invisible.bat

📁 Cracker终结者——提供最优秀的软件保护技术
💻 BAT
字号:
;@GOTO TRANSLATE

.586P

.MODEL            FLAT, STDCALL

   OPTION         CASEMAP: NONE
   INCLUDE        WINDOWS.inc
   UNICODE        = FALSE
   INCLUDE        APIMACRO.mac

   INCLUDE        ApiHooks.inc

   INCLUDELIB     iKERNEL32.lib
   INCLUDELIB     iUSER32.lib

   INCLUDELIB     iApiHooks.lib

;------------------------------------------------------------------
.DATA?
   CurPID                   DWORD  ?
   OrigEnumWinProc          DWORD  ?
   prinfo     PROCESS_INFORMATION  <>
   stinfo     STARTUPINFO          <>
   PathHooks  SIGN  MAX_PATH DUP   (?)


   LOADPARMS32 STRUCT
    lpEnvAddress LPSTR ?
    lpCmdLine    LPSTR ?
    lpCmdShow    LPSTR ?
    dwReserved   DWORD ?
   LOADPARMS32 ENDS

.CODE
   ALIGN    4
   DynaHooks  API_HOOK <HOOKS_DYNAMIC>
   BeginHooks Invisible
   MkHook    ,      , CreateProcessA;, HOOK_ALL+HOOK_HARD
   MkHook    ,      , LoadModule;,     HOOK_ALL+HOOK_HARD
   MkHook    ,      , WinExec;,        HOOK_ALL+HOOK_HARD
   MkHook    ,      , LoadLibraryA;,   HOOK_ALL+HOOK_HARD
   MkHook    ,      , LoadLibraryExA;, HOOK_ALL+HOOK_HARD
   MkHook    ,      , GetProcAddress;, HOOK_ALL+HOOK_HARD

   MkHook    ,      , Process32Next;,  HOOK_ALL+HOOK_HARD
   MkHook    ,      , Thread32Next;,   HOOK_ALL+HOOK_HARD
   MkHook    ,USER32, EnumWindows;,    HOOK_ALL+HOOK_HARD
   MkHook    ,USER32, GetWindow;,      HOOK_ALL+HOOK_HARD
  NoHooks = ($-Invisible)/API_HOOK
   EndHooks

   TEXTA      KERNEL32,                 <KERNEL32.dll/0>
   TEXTA      USER32,                   <USER32.dll/0>
   TEXTA      CreateProcessA,           <CreateProcessA/0> 
   TEXTA      LoadModule,               <LoadModule/0> 
   TEXTA      WinExec,                  <WinExec/0> 
   TEXTA      LoadLibraryA,             <LoadLibraryA/0> 
   TEXTA      LoadLibraryExA,           <LoadLibraryExA/0> 
   TEXTA      GetProcAddress,           <GetProcAddress/0> 

   TEXTA      Process32Next,            <Process32Next/0>
   TEXTA      Thread32Next,             <Thread32Next/0>
   TEXTA      EnumWindows,              <EnumWindows/0>
   TEXTA      GetWindow,                <GetWindow/0>

   TEXTA      Proc2Hide,                <Calc.exe/0>
   TEXT       Wind2Hide,                <SciCalc/0>

;------------------------------------------------------------------
  DllMain:
   CMP        DWORD PTR [ESP+8], DLL_PROCESS_ATTACH
   JNE        @F
   iWin32     GetCurrentProcessId
   MOV        CurPID, EAX
   MOV        stinfo.cb, SIZEOF STARTUPINFO
   iWin32i    GetModuleFileName, [ESP+12], OFFSET PathHooks, MAX_PATH
  @@:
   PUSH       TRUE
   POP        EAX
   RETN       12    

;Helper part-----------
;------------------------------------------------------------------
  NewCreateProcessA  PROC lpApplicationName, lpCommandLine,\
                          lpProcessAttributes, lpThreadAttributes,\
                          bInheritHandles, dwCreationFlags, \
                          lpEnvironment, lpCurrentDirectory,\
                          lpStartupInfo, lpProcessInformation
                     MOV  EAX, dwCreationFlags
                     OR   EAX, CREATE_SUSPENDED
                     iWin32 CreateProcessA, lpApplicationName, lpCommandLine,\        
                                            lpProcessAttributes, lpThreadAttributes,\ 
                                            bInheritHandles, EAX,\       
                                            lpEnvironment, lpCurrentDirectory,\        
                                            lpStartupInfo, lpProcessInformation       
                     TEST  EAX, EAX
                     JE    @Failed
                     PUSHp EAX, EBX
                     MOV   EBX, lpProcessInformation
                     ASSUME EBX: PTR PROCESS_INFORMATION
                     iWin32 EstablishApiHooksA, OFFSET PathHooks, [EBX].dwProcessId
                     TEST  dwCreationFlags, CREATE_SUSPENDED
                     JNE   @F
                     iWin32 ResumeThread, [EBX].hThread
                    @@:
                     POPc  EAX, EBX
                    @Failed:
                     RET                    
  NewCreateProcessA  ENDP                   
;------------------------------------------------------------------
  NewLoadModule  PROC lpModuleName, lpParameterBlock
       MOV       EAX, lpParameterBlock
       ASSUME    EAX: PTR LOADPARMS32
       MOV       ECX, [EAX].lpCmdShow
       MOV       EDX, [EAX].lpCmdLine
       CMP       WORD PTR [ECX], 2
       JNE       @Fail
       MOV       CX, [ECX+2]
       CMP       BYTE PTR [EDX], 0
       MOV       stinfo.wShowWindow, CX
       MOV       ECX, 0
       JE        @F
       LEA       ECX, [EDX+1]
      @@:
       iWin32    CreateProcessA, lpModuleName, ECX, \
                                 NULL, NULL, FALSE, CREATE_SUSPENDED,\
                                 [EAX].lpEnvAddress, NULL,\            
                                 OFFSET stinfo, OFFSET prinfo
       TEST      EAX, EAX
       JNE       @F
      @Fail:
       LEAVE
       iWin32j   LoadModule
      @@:
       iWin32    EstablishApiHooksA, OFFSET PathHooks, prinfo.dwProcessId
       iWin32    CloseHandle, prinfo.hProcess
       iWin32    ResumeThread, prinfo.hThread
       iWin32    CloseHandle, prinfo.hThread
       MOV       EAX, 32
       RET
   NewLoadModule ENDP
;------------------------------------------------------------------
  NewWinExec     PROC lpszCmdLine, fuCmdShow
       MOV       EAX, fuCmdShow
       MOV       stinfo.wShowWindow, AX
       iWin32    CreateProcessA, NULL, lpszCmdLine, \
                                 NULL, NULL, FALSE, CREATE_SUSPENDED,\
                                 NULL, NULL,\            
                                 OFFSET stinfo, OFFSET prinfo
       TEST      EAX, EAX
       JNE       @F
       LEAVE
       iWin32j   WinExec
      @@:
       iWin32    EstablishApiHooksA, OFFSET PathHooks, prinfo.dwProcessId
       iWin32    CloseHandle, prinfo.hProcess
       iWin32    ResumeThread, prinfo.hThread
       iWin32    CloseHandle, prinfo.hThread
       MOV       EAX, 32
       RET
   NewWinExec    ENDP
;------------------------------------------------------------------
  NewGetProcAddress  PROC  hLibrary, lpszProc
                   CMP     lpszProc, 10000H
                   JB      @GoGPA
                   iWin32  GetModuleHandleA, sKERNEL32
                   CMP     EAX, hLibrary
                   JNE     @GoUser32

        CmpApi     MACRO   __ApiNomen
                   iWin32  lstrcmp, lpszProc, s&__ApiNomen
                   TEST    EAX, EAX
                   JNE     @F
                   MOV     EAX, New&__ApiNomen
                   JMP     @RetGPA
                  @@:
                   ENDM

                   CmpApi  CreateProcessA
                   CmpApi  LoadModule
                   CmpApi  WinExec
                   CmpApi  LoadLibraryA
                   CmpApi  LoadLibraryExA
                   CmpApi  GetProcAddress
                   CmpApi  Process32Next
                   CmpApi  Thread32Next
                   JMP     @GoGPA

                  @GoUser32:
                   iWin32  GetModuleHandleA, sKERNEL32
                   CMP     EAX, hLibrary
                   JNE     @GoGPA
                   CmpApi  EnumWindows
                   CmpApi  GetWindow

                  @GoGPA:
                   LEAVE
                   iWin32j GetProcAddress
                  @RetGPA:
                   RET
  NewGetProcAddress  ENDP

;------------------------------------------------------------------
  PrepareDynamic   PROC lpLibFileName
   MOV        EAX, lpLibFileName
   MOV        ECX, NoHooks
   JECXZ      Fin
   MOV        EDX, OFFSET DynaHooks ;Invisible - API_HOOK
  @@:
   ADD        EDX, API_HOOK
   MOV        (API_HOOK PTR [EDX]).ModuleImport, EAX
   LOOP       @B
  Fin:
   RET 
  PrepareDynamic   ENDP
;------------------------------------------------------------------
  NewLoadLibraryA  PROC    lpLibFileName
                   iWin32  LoadLibraryA, lpLibFileName
                   TEST    EAX, EAX
                   JE      @F
                   PUSH    EAX
                   sWin32  PrepareDynamic, lpLibFileName
                   iWin32  EstablishApiHooksA, OFFSET DynaHooks, CurPID
                   POP     EAX
                  @@:
                   RET
  NewLoadLibraryA  ENDP
;------------------------------------------------------------------
  NewLoadLibraryExA PROC   lpLibFileName, hFile, dwFlags
                   iWin32  LoadLibraryExA, lpLibFileName, hFile, dwFlags
                   TEST    EAX, EAX
                   JE      @F
                   CMP     dwFlags, DONT_RESOLVE_DLL_REFERENCES
                   JE      @F
                   CMP     dwFlags, LOAD_LIBRARY_AS_DATAFILE
                   JE      @F
                   PUSH    EAX
                   sWin32  PrepareDynamic, lpLibFileName
                   iWin32  EstablishApiHooksA, OFFSET DynaHooks, CurPID
                   POP     EAX
                  @@:
                   RET
  NewLoadLibraryExA ENDP
;------------------------------------------------------------------

;Executive part
   NewProcess32Next PROC hSnapshot, lpProcEntry32
     Nochmals:
      iWin32     Process32Next, hSnapshot, lpProcEntry32
      TEST       EAX, EAX
      JE         Fin
      PUSH       EAX
      MOV        EAX, lpProcEntry32
      ADD        EAX, PROCESSENTRY32.szExeFile
    @@:
      CMP        BYTE PTR [EAX], 0
      JE	 @F
      CMP	 BYTE PTR [EAX], "\"
      JE	 @Fond
      INC	 EAX
      JMP	 @B
    @Fond:
      INC	 EAX
      MOV	 EDX, EAX
      JMP	 @B
    @@:
      iWin32     lstrcmpiA, EDX, sProc2Hide
      TEST       EAX, EAX
      POP        EAX
      JE         Nochmals
    Fin:
      RET   
   NewProcess32Next ENDP
;--------------------------------------------------------------------------------
   NewThread32Next PROC USES EBX, hSnapshot, lpThreadEntry32
     Nochmals:
      iWin32     Thread32Next, hSnapshot, lpThreadEntry32
      TEST       EAX, EAX
      MOV        EBX, EAX
      JE         Fin
      iWin32i    FindWindow, sWind2Hide, NULL
      TEST       EAX, EAX
      JE         Fin
      PUSH       ECX
      iWin32     GetWindowThreadProcessId, EAX, ESP
      MOV        ECX, lpThreadEntry32
      POP        EAX
      CMP        EAX, (THREADENTRY32 PTR [ECX]).th32OwnerProcessID
      JE         Nochmals
    Fin:
      MOV        EAX, EBX 
      RET   
   NewThread32Next ENDP
;--------------------------------------------------------------------------------
  NewEnumWindows PROC lpEnumFunc, lParam
   CMP        OrigEnumWinProc, NULL
   JE         @F
   iWin32     EnumWindows, lpEnumFunc, lParam
   RET
  @@:
   PUSH       lpEnumFunc 
   POP        OrigEnumWinProc
   iWin32     EnumWindows, NewEnumProc, lParam
   AND        OrigEnumWinProc, NULL
   RET
  NewEnumWindows ENDP

  NewEnumProc PROC USES ESI, hwnd, lParam
   iWin32i    FindWindow, sWind2Hide, NULL
   TEST       EAX, EAX
   JE         OrigEnumP
   CMP        EAX, hwnd
   PUSH       TRUE
   POP        EAX
   JE         @F
  OrigEnumP:
   sWin32     OrigEnumWinProc, hwnd, lParam
  @@:
   RET
  NewEnumProc ENDP
;--------------------------------------------------------------------------------
  NewGetWindow PROC  USES EBX, hWnd, uCmd
   iWin32i    FindWindow, sWind2Hide, NULL
   TEST       EAX, EAX
   JE         NotMe
   MOV        EBX, EAX
   CMP        EAX, hWnd
   JNE        NotMe
   CMP        uCmd, GW_CHILD
   JNE        @F
   SUB        EAX, EAX
   RET
  @@:
   iWin32     GetWindow, EAX, uCmd
  Next:
   MOV        hWnd, EAX
  NotMe:
   iWin32     GetWindow, hWnd, uCmd
   TEST       EAX, EAX
   JE         Fin
   CMP        EAX, EBX
   JE         Next
  Fin: 
   RET
  NewGetWindow ENDP
;------------------------------------------------------------------

END DllMain

:TRANSLATE
@ECHO OFF
ML    /c /coff /nologo Invisible.bat
eLINK Invisible /nologo /DLL /EXPORT:Invisible,@1,NONAME /SUBSYSTEM:WINDOWS /MERGE:.rdata=.text /MERGE:.idata=.text /IGNORE:4078,4086REM  /BASE:0X77240000
DEL   Invisible.obj
DEL   Invisible.exp
DEL   Invisible.lib
pause
cls

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -