找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 5022|回复: 1

有谁知道,如何编程关闭WIN7的文件保护啊?

[复制链接]

1

主题

1

回帖

0

精华

初来乍到

积分
7
发表于 2011-11-10 20:43:11 | 显示全部楼层 |阅读模式
          如标题,跪求!{:soso_e109:}

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2011-11-10 21:06:00 | 显示全部楼层
放一份收藏多年的关闭WINDOWS FILE PROTECT的代码给你,POWERBASIC写的,至于现在还能不能用,那就不知道了。

  1. #COMPILE EXE
  2. #DIM ALL
  3. #INCLUDE "Win32Api.inc"
  4. #INCLUDE "TlHelp32.inc"

  5. TYPE CLIENT_ID
  6.         UniqueProcess AS LONG
  7.         UniqueThread AS LONG
  8. END TYPE

  9. TYPE THREAD_BASIC_INFORMATION
  10.     ExitStatus AS LONG
  11.     TebBaseAddress AS LONG
  12.     ClientId AS CLIENT_ID
  13.     AffinityMask AS LONG
  14.     PRIORITY AS LONG
  15.     BasePriority AS LONG
  16. END TYPE

  17. DECLARE FUNCTION GetModuleFileNameEx LIB "PsApi.DLL" ALIAS _
  18. "GetModuleFileNameExA"( _
  19. BYVAL hProcess AS DWORD, _
  20. BYVAL hModule AS DWORD, _
  21. lpFilename     AS ASCIIZ, _
  22. BYVAL nSize    AS DWORD) AS LONG
  23. DECLARE FUNCTION GetMappedFileName LIB "PSAPI.DLL" ALIAS "GetMappedFileNameA" ( _
  24.         BYVAL hProcess AS DWORD, _
  25.         BYVAL lpv AS DWORD, _
  26.         lpFileName AS ASCIIZ, _
  27.         BYVAL nSize AS DWORD _
  28. ) AS DWORD
  29. DECLARE FUNCTION RtlAdjustPrivilege LIB _
  30.             "ntdll.dll" ALIAS "RtlAdjustPrivilege"(BYVAL Privilege AS LONG, _
  31.             BYVAL ENABLE AS LONG, BYVAL CLIENT AS LONG, _
  32.             WasEnabled AS LONG) AS LONG
  33. DECLARE FUNCTION ZwQueryInformationThread LIB "NTDLL.DLL" ALIAS "ZwQueryInformationThread" (BYVAL ThreadHandle AS LONG,BYVAL _
  34.                 ThreadInformationClass AS LONG,BYVAL ThreadInformation AS LONG,BYVAL ThreadInformationLength AS LONG,BYVAL ReturnLength AS LONG) AS DWORD
  35. DECLARE FUNCTION NtSuspendThread _
  36.                LIB "ntdll.dll" ALIAS "NtSuspendThread"(BYVAL ThreadHandle AS LONG, _
  37.                                 BYREF PreviousSuspendCount AS LONG) AS LONG
  38. DECLARE FUNCTION NtResumeThread _
  39.                LIB "ntdll.dll" ALIAS "NtResumeThread"(BYVAL ThreadHandle AS LONG, _
  40.                                 BYREF PreviousSuspendCount AS LONG) AS LONG
  41. %ThreadBasicInformation = 0
  42. %ThreadQuerySetWin32StartAddress = 9
  43. FUNCTION PBMAIN () AS LONG
  44.     LOCAL hSnapshot AS DWORD, lResult AS DWORD, TE32 AS THREADENTRY32, PE32 AS PROCESSENTRY32

  45.     RtlAdjustPrivilege(20, 1, 0, 0)

  46.     hSnapshot = CreateToolHelp32SnapShot (%TH32CS_SNAPPROCESS, BYVAL 0)
  47.     PE32.dwSize = LEN(PE32)
  48.     lResult = Process32First(hSnapshot, PE32)
  49.     IF hSnapshot <> %INVALID_HANDLE_VALUE THEN
  50.         WHILE lResult <> 0
  51.             IF INSTR(LCASE$(PE32.szExeFile),LCASE$("Winlogon.exe")) > 0 THEN
  52.                 hSnapshot = CreateToolHelp32SnapShot (%TH32CS_SNAPTHREAD OR %TH32CS_SNAPMODULE, BYVAL PE32.th32ProcessID)
  53.                     IF hSnapshot <> %INVALID_HANDLE_VALUE THEN
  54.                     TE32.dwSize = SIZEOF(TE32)
  55.                     lResult = Thread32First (hSnapshot, TE32)
  56.                     WHILE ISTRUE lResult
  57.                         IF TE32.th32OwnerProcessID = PE32.th32ProcessID THEN
  58.                             IF INSTR(LCASE$(GetImageNameByThread(TE32.th32ThreadID)),LCASE$("sfc_os.dll")) >0 THEN
  59.                                 LOCAL hThread AS LONG
  60.                                 hThread = OpenThread(%THREAD_SUSPEND_RESUME, %FALSE, TE32.th32ThreadID)
  61.                                 NtSuspendThread(hThread,0)
  62.                             END IF
  63.                         END IF
  64.                         lResult = Thread32Next (hSnapshot, TE32)
  65.                     WEND
  66.                     CloseHandle hSnapshot
  67.                 END IF
  68.             END IF
  69.             lResult = Process32Next(hSnapshot, PE32)
  70.         WEND
  71.         CloseHandle hSnapshot
  72.     END IF
  73. END FUNCTION

  74. FUNCTION GetImageNameByThread(BYVAL TID AS LONG) AS STRING
  75.     LOCAL TBI AS THREAD_BASIC_INFORMATION
  76.     LOCAL STATUS AS LONG
  77.     LOCAL hThread AS LONG
  78.     LOCAL hProcess AS LONG
  79.     LOCAL StartAddr AS LONG
  80.     LOCAL ModName AS ASCIIZ * %MAX_PATH
  81.     LOCAL ImageName AS ASCIIZ * %MAX_PATH

  82.     hThread = OpenThread(BYVAL %THREAD_QUERY_INFORMATION, BYVAL %FALSE, BYVAL TID)
  83.     STATUS = ZwQueryInformationThread(hThread,%ThreadQuerySetWin32StartAddress,VARPTR(StartAddr), LEN(StartAddr),%NULL)
  84.     STATUS = ZwQueryInformationThread(hThread,%ThreadBasicInformation,VARPTR(TBI), SIZEOF(TBI),%NULL)
  85.     hProcess = OpenProcess(%PROCESS_QUERY_INFORMATION OR %PROCESS_VM_READ, %False, TBI.ClientId.UniqueProcess)

  86.     GetMappedFileName(hProcess,BYVAL StartAddr, ImageName, SIZEOF(ImageName))'可执行代码所在模块
  87.     ImageName = TRIM$(ImageName)
  88.     IF ImageName = "" OR ImageName = "?" THEN ImageName = "NULL"
  89.     CloseHandle(hThread)
  90.     CloseHandle(hProcess)
  91.     FUNCTION = ImageName
  92. END FUNCTION
复制代码
代码作者好像是“倒霉蛋儿”。
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表