绕过系统文件保护的另一种方法
来源:互联网 发布:上古世纪战魔捏脸数据 编辑:程序博客网 时间:2024/06/05 10:54
起到系统文件保护作用的是sfc_os.dll这个文件
他被注入到了Winlogon中
我的思路就是在Winlogon中的进程找到这个DLL的线程然后挂起掉自然就失效了
以下是Powerbasic写的源代码XPSP3通过测试
#编译的EXE
#暗淡
#INCLUDE“Win32Api.inc”
#包括“TlHelp32.inc的”
只要长UniqueThread 完型型CLIENT_ID UniqueProcess AS
型
的AS龙
TebBaseAddress只要
ClientID的, 只要 BasePriority CLIENT_ID
为LONG AffinityMask
优先的
长
端型THREAD_BASIC_INFORMATION ExitStatus
声明的功能GetModuleFileNameEx的LIB“PSAPI.DLL”的别名_的
“GetModuleFileNameExA”(_
BYVAL hProcess,
_ DWORD BYVAL HMODULE,为dword ,
_ 的ASCIIZ lpFileName的对象,
0的DWORD n大小),只要
申报的功能GetMappedFileName的LIB“PSAPI.DLL”的别名“GetMappedFileNameA”(_
BYVAL hProcess为dword,
BYVAL LPV为dword,
_ 的ASCIIZ lpFileName的对象,
_ 0的DWORD n大小
)为dword
函数RtlAdjustPrivilege的LIB _
“NTDLL.DLL”别名“RtlAdjustPrivilege”(只要BYVAL特权, _
BYVAL启用只要,只要客户BYVAL,_
WasEnabled了如龙)只要
申报功能ZwQueryInformationThread的LIB“NTDLL.DLL的”别名“ZwQueryInformationThread”(ThreadHandle BYVAL AS LONG,BYVAL _
只要ThreadInformationClass,BYVAL ThreadInformation只要BYVAL ThreadInformationLength, AS长期,BYVAL ReturnLength只要DWORD)的
函数NtSuspendThread _
的LIB“NTDLL.DLL”别名“NtSuspendThread的”(0龙ThreadHandle,
为ByRef PreviousSuspendCount为LONG)的AS,长期
函数NtResumeThread的_
的LIB“NTDLL.DLL”别名“ NtResumeThread“(0龙ThreadHandle,
为LONG LONG为ByRef PreviousSuspendCount)
%ThreadBasicInformation = 0
%ThreadQuerySetWin32StartAddress = 9的
功能PBMAIN()只要
当地hSnapshot的AS DWORD,LRESULT为dword,TE32,原样THREADENTRY32,PE32为PROCESSENTRY32的
RtlAdjustPrivilege(20,1,0,0)
hSnapshot = CreateToolHelp32SnapShot(%TH32CS_SNAPPROCESS BYVAL 0)
PE32.dwSize = LEN(PE32)
LRESULT = Process32First(hSnapshot,PE32)
IF hSnapshot <>%INVALID_HANDLE_VALUE,那么
LRESULT <> 0
如果InStr(LCASE $(PE32.szExeFile),LCASE $(“Winlogon.exe中”))> 0,THEN
hSnapshot = CreateToolHelp32SnapShot(%TH32CS_SNAPTHREAD或%TH32CS_SNAPMODULE的,PE32.th32ProcessID BYVAL)
hSnapshot <> INVALID_HANDLE_VALUE THEN
TE32.dwSize = SIZEOF(TE32)
LRESULT = Thread32First(hSnapshot,TE32)
而ISTRUE LRESULT
如果TE32.th32OwnerProcessID = PE32.th32ProcessID THEN
如果InStr(LCASE $((TE32.th32ThreadID)GetImageNameByThread),LCASE $(“sfc_os.dll”))> 0,
然后作为长期本地hThread
hThread = OpenThread(THREAD_SUSPEND_RESUME%, %的假,TE32.th32ThreadID)
NtSuspendThread(hThread,0)
结束IF LRESULT = Thread32Next(hSnapshot,TE32) WEND CloseHandle hSnapshot 完 如果end IF LRESULT = Process32Next(hSnapshot,PE32) WEND CloseHandle hSnapshot 完如果 end 功能
的功能GetImageNameByThread(BYVAL工业贸易署为LONG)字符串
局部脑外伤作为THREAD_BASIC_INFORMATION
本地状态,只要
当地hThread
本地hProcess 长只要
当地StartAddr作为长期
局部模组名称AS的ASCIIZ *%MAX_PATH个
本地ImageName的ASCIIZ *%MAX_PATH个
hThread = OpenThread
STATUS = ZwQueryInformationThread(hThread VARPTR(StartAddr)的,LEN(StartAddr),ThreadQuerySetWin32StartAddress%;%空)(的的BYVAL%THREAD_QUERY_INFORMATION,BYVAL%的假,BYVAL工贸署)
STATUS = ZwQueryInformationThread(hThread,的%ThreadBasicInformation,VARPTR(脑外伤)大小(TBI)的,NULL)
hProcess =调用OpenProcess(%或%PROCESS_VM_READ PROCESS_QUERY_INFORMATION,虚假%,TBI.ClientId.UniqueProcess)
GetMappedFileName(hProcess,BYVAL StartAddr,ImageName sizeof(ImageName)的)'可执行代码所在模块
ImageName = TRIM的$(ImageName)
如果ImageName =“”或ImageName =“?” 然后ImageName =“NULL”的
CloseHandle(hThread)
CloseHandle(hProcess)
函数=的ImageName
完功能
- 绕过系统文件保护的另一种方法
- 绕过Linux不可执行堆栈保护的方法浅析
- Android程序的签名保护及绕过方法
- Android程序的签名保护及绕过方法
- Android程序的签名保护及绕过方法
- Android程序的签名保护及绕过方法
- Android程序的签名保护及绕过方法
- 保护系统的方法
- 另一种sysenter hook方法(绕过绝大多数的rootkit检测工具的检测)
- 另一种sysenter hook方法(绕过绝大多数的rootkit检测工具的检测)
- 另一种sysenter hook方法(绕过绝大多数的rootkit检测工具的检测)
- 另一种sysenter hook方法(绕过绝大多数的rootkit检测工具的检测)
- 文件上传的一些绕过方法
- 文件上传漏洞的相关绕过方法
- Ubuntu 下另一种隐藏文件的方法
- 绕过win2003堆栈保护机制的新方法
- 绕过libsafe的保护--覆盖_dl_lookup_versioned_symbol技术
- 浅析mcafee的“缓冲区溢出保护”及绕过方法【安焦Leven】
- struts2中#,%,$用法区别?
- android 光标问题
- VIM命令记录
- linux命令-- ps命令
- HTML 5 播放streaming video造成卡住的问题
- 绕过系统文件保护的另一种方法
- 使用with语句来写一个稍微复杂sql语句(经典,转载)
- linux下的各个目录的含义
- Coding的极致
- Hadoop InputFormat浅析
- SQL Server 2008无监听服务器的镜像安装(工作组)
- 中国历朝历代规则表
- java方法中的参数传值
- extern "C"的用法解析