|
线程_注入_修复NtOpenFile | 逻辑型 | |
|
目标进程ID | 整数型 | | | |
要注入的DLL文件名 | 文本型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 |
长度 | 整数型 | | |
局_内存值 | 整数型 | | |
局_进程句柄 | 整数型 | | |
局_函数地址 | 整数型 | | |
局_线程ID | 整数型 | | |
NtOpenFile_函数地址 | 整数型 | | |
NtOpenFile_原函数头 | 字节集 | | |
局_进程句柄 =
OpenProcess (2035711, 0, 目标进程ID
)
如果真 (局_进程句柄 = 0
)
信息框 (“打开进程失败!”, 16, ,
)
返回 (假)
NtOpenFile_函数地址 =
GetProcAddress1 (GetModuleHandleA (“ntdll”),
“NtOpenFile”)NtOpenFile_原函数头 =
取空白字节集 (5
)ReadProcessMemory_字节集 (局_进程句柄, NtOpenFile_函数地址, NtOpenFile_原函数头, 5, 0
)
如果真 (取字节集左边 (NtOpenFile_原函数头, 1
) =
{ 233
})
ReadProcessMemory_字节集 (-1, NtOpenFile_函数地址, NtOpenFile_原函数头, 5, 0
)
WriteProcessMemory_字节集 (局_进程句柄, NtOpenFile_函数地址, NtOpenFile_原函数头, 5, 0
)
长度 =
取文本长度 (要注入的DLL文件名
)局_内存值 =
VirtualAllocEx (局_进程句柄, 0, 长度, 4096, 4
)
如果真 (局_内存值 = 0
)
返回 (假)
WriteProcessMemory_字节集 (局_进程句柄, 局_内存值,
到字节集 (要注入的DLL文件名
), 长度, 0
)局_函数地址 =
GetProcAddress1 (GetModuleHandleA (“Kernel32”),
“LoadLibraryA”)局_线程ID =
CreateRemoteThread (局_进程句柄, 0, 0, 局_函数地址, 局_内存值, 0, 0
)
如果真 (局_线程ID = 0
)
返回 (假)WaitForSingleObject (局_线程ID, 4294967295)VirtualFreeEx (局_进程句柄, 局_内存值, 0, 32768
)CloseHandle (局_线程ID
)CloseHandle (局_进程句柄
)返回 (真)