|
.类型 原_GetLocalTime, 子程序指针, , (lpSystemTime ).类型 原_GetSystemTime, 子程序指针, , (lpSystemTime ).类型 原_GetSystemTimeAsFileTime, 子程序指针, , (lpSystemTime ) |
原_GetLocalTime函数 | 原_GetLocalTime | | | 原_GetSystemTime函数 | 原_GetSystemTime | | | 原_GetSystemTimeAsFileTime函数 | 原_GetSystemTimeAsFileTime | | | |
VirtualProtect | 逻辑型 | | |
kernel32.dll | |
公开 | |
lpAddress | 整数型 | | | dwSize | 整数型 | | | flNewProtect | 整数型 | | | lpf噜阿噜dProtect | 整数型 | | |
|
memcpy | 整数型 | | |
msvcrt.dll | |
公开 | |
dest | 整数型 | | | src | 整数型 | | | count | 整数型 | | | |
伪造年 | 整数型 | | | 伪造月 | 整数型 | | | 伪造日 | 整数型 | | | 伪造时 | 整数型 | | | 伪造分 | 整数型 | | | 伪造秒 | 整数型 | | | 伪造毫秒 | 整数型 | | | |
SYSTEMTIME | | |
wYear | 整数型 | | | wMonth | 整数型 | | | wDayOfWeek | 整数型 | | | wDay | 整数型 | | | wHour | 整数型 | | | wMinute | 整数型 | | | wSecond | 整数型 | | | wMilliseconds | 整数型 | | |
.数据类型结束 |
FILETIME | | |
dwLowDateTime | 整数型 | | | dwHighDateTime | 整数型 | | |
.数据类型结束 写内存整数 (地址 + 偏移量, 值 )返回 () |
SystemTimeToFileTime | | | |
lpSystemTime | 整数型 | | | | lpFileTime | 整数型 | | | |
|
SystemTimeToFileTime | 逻辑型 | | |
kernel32.dll | |
SystemTimeToFileTime | |
lpSystemTime | 整数型 | | | lpFileTime | 整数型 | | | 返回 (SystemTimeToFileTime (lpSystemTime, lpFileTime )) |
新_GetLocalTime | | | |
lpSystemTime | 整数型 | | | | 写入内存整数 (lpSystemTime, 0, 伪造年 ) 写入内存整数 (lpSystemTime, 2, 伪造月 ) 写入内存整数 (lpSystemTime, 4, 0 ) 写入内存整数 (lpSystemTime, 6, 伪造日 ) 写入内存整数 (lpSystemTime, 8, 伪造时 ) 写入内存整数 (lpSystemTime, 10, 伪造分 ) 写入内存整数 (lpSystemTime, 12, 伪造秒 ) 写入内存整数 (lpSystemTime, 14, 伪造毫秒 ) 返回 () |
新_GetSystemTime | | | |
lpSystemTime | 整数型 | | | | 写入内存整数 (lpSystemTime, 0, 伪造年 ) 写入内存整数 (lpSystemTime, 2, 伪造月 ) 写入内存整数 (lpSystemTime, 4, 0 ) 写入内存整数 (lpSystemTime, 6, 伪造日 ) 写入内存整数 (lpSystemTime, 8, 伪造时 ) 写入内存整数 (lpSystemTime, 10, 伪造分 ) 写入内存整数 (lpSystemTime, 12, 伪造秒 ) 写入内存整数 (lpSystemTime, 14, 伪造毫秒 ) 返回 () |
新_GetSystemTimeAsFileTime | | | |
lpFileTime | 整数型 | | | |
.局部变量 st, SYSTEMTIME st.wYear = 伪造年 st.wMonth = 伪造月 st.wDay = 伪造日 st.wHour = 伪造时 st.wMinute = 伪造分 st.wSecond = 伪造秒 st.wMilliseconds = 伪造毫秒 SystemTimeToFileTime (取变量地址 (st ), lpFileTime )返回 () .局部变量 旧保护, 整数型 .局部变量 JMP指令, 字节集, , "5" .局部变量 相对地址, 整数型 VirtualProtect (原函数地址, 5, 0x40, 旧保护 ) JMP指令 = { 0xE9, 0x00, 0x00, 0x00, 0x00 }相对地址 = 新函数地址 - 原函数地址 - 5 字节集_替换 (JMP指令, 1, 4, 到字节集 (相对地址 )) 写内存字节集 (原函数地址, JMP指令 ) VirtualProtect (原函数地址, 5, 旧保护, 0 )返回 () |
UnhookAPI | | | |
原函数地址 | 整数型 | | | | 备份字节 | 字节集 | | | |
.局部变量 旧保护, 整数型 VirtualProtect (原函数地址, 5, 0x40, 旧保护 ) 写内存字节集 (原函数地址, 备份字节 ) VirtualProtect (原函数地址, 5, 旧保护, 0 )返回 () |
GetProcAddress | 整数型 | | |
kernel32.dll | |
GetProcAddress | |
hModule | 整数型 | | | lpProcName | 文本型 | | |
|
GetModuleHandleA | 整数型 | | |
kernel32.dll | |
GetModuleHandleA | |
lpModuleName | 文本型 | | | 返回 (GetProcAddress (GetModuleHandleA (模块名 ), 函数名 )) |
DllMain | | | |
hDll | 整数型 | | | | fdwReason | 整数型 | | | | lpvReserved | 整数型 | | | |
如果 (fdwReason = 1 )  原_GetLocalTime函数 = 取地址 ("kernel32.dll", "GetLocalTime" ) 原_GetSystemTime函数 = 取地址 ("kernel32.dll", "GetSystemTime" ) 原_GetSystemTimeAsFileTime函数 = 取地址 ("kernel32.dll", "GetSystemTimeAsFileTime" ) HookAPI (原_GetLocalTime函数, &新_GetLocalTime ) HookAPI (原_GetSystemTime函数, &新_GetSystemTime ) HookAPI (原_GetSystemTimeAsFileTime函数, &新_GetSystemTimeAsFileTime )返回 (1 )
|
CreateRemoteThread | 整数型 | | |
kernel32.dll | |
公开 | |
hProcess | 整数型 | | | lpThreadAttributes | 整数型 | | | dwStackSize | 整数型 | | | lpStartAddress | 整数型 | | | lpParameter | 整数型 | | | dwCreationFlags | 整数型 | | | lpThreadId | 整数型 | | |
|
VirtualAllocEx | 整数型 | | |
kernel32.dll | |
公开 | |
hProcess | 整数型 | | | lpAddress | 整数型 | | | dwSize | 整数型 | | | flAllocationType | 整数型 | | | flProtect | 整数型 | | |
|
WriteProcessMemory | 逻辑型 | | |
kernel32.dll | |
公开 | |
hProcess | 整数型 | | | lpBaseAddress | 整数型 | | | lpBuffer | 文本型 | | | nSize | 整数型 | | | lpNumberOfBytesWritten | 整数型 | | |
|
OpenProcess | 整数型 | | |
kernel32.dll | |
公开 | |
dwDesiredAccess | 整数型 | | | bInheritHandle | 逻辑型 | | | dwProcessId | 整数型 | | |
|
CloseHandle | 逻辑型 | | |
kernel32.dll | |
公开 | |
hObject | 整数型 | | |
|
GetProcAddress | 整数型 | | |
kernel32.dll | |
公开 | |
hModule | 整数型 | | | lpProcName | 文本型 | | |
|
GetModuleHandleA | 整数型 | | |
kernel32.dll | |
公开 | |
lpModuleName | 文本型 | | |
|
GetWindowThreadProcessId | 整数型 | | |
user32.dll | |
公开 | |
hWnd | 整数型 | | | lpdwProcessId | 整数型 | | |
|
FindWindowA | 整数型 | | |
user32.dll | |
公开 | |
lpClassName | 文本型 | | | lpWindowName | 文本型 | | |
|
CreateToolhelp32Snapshot | 整数型 | | |
kernel32.dll | |
CreateToolhelp32Snapshot | |
dwFlags | 整数型 | | | th32ProcessID | 整数型 | | |
|
Process32First | 逻辑型 | | |
kernel32.dll | |
Process32First | |
hSnapshot | 整数型 | | | lppe | 整数型 | | |
|
Process32Next | 逻辑型 | | |
kernel32.dll | |
Process32Next | |
hSnapshot | 整数型 | | | lppe | 整数型 | | |
.局部变量 快照句柄, 整数型 .局部变量 进程信息, 进程信息_EX, , "296" .局部变量 结果, 整数型 快照句柄 = CreateToolhelp32Snapshot (2, 0 ) 如果 (快照句柄 != 0 )  进程信息.dwSize = 296  如果 (Process32First (快照句柄, 进程信息 ))   判断循环首 (真)   如果 (到文本 (进程信息.szExeFile ) = 进程名 )    结果 = 进程信息.th32ProcessID    跳出循环 ()        如果 (Process32Next (快照句柄, 进程信息 ) = 假)   跳出循环 ()    判断循环尾 () CloseHandle (快照句柄 )返回 (结果 )变量名 | 类 型 | 静态 | 数组 | 备 注 | 进程ID | 整数型 | | | 进程句柄 | 整数型 | | | DLL路径 | 文本型 | | | 内存地址 | 整数型 | | | LoadLibraryA地址 | 整数型 | | | 线程ID | 整数型 | | |
进程ID = 获取进程ID (编辑框1.内容 ) 如果 (进程ID = 0 ) 信息框 ("未找到目标进程!", 0, ) 返回 () 进程句柄 = OpenProcess (0x1F0FFF, 假, 进程ID ) 如果 (进程句柄 = 0 ) 信息框 ("无法打开目标进程!可能需要管理员权限。", 0, ) 返回 () DLL路径 = 取运行目录 () + "\TimeHook.dll" 内存地址 = VirtualAllocEx (进程句柄, 0, 取文本长度 (DLL路径 ) + 1, 0x1000, 0x40 ) WriteProcessMemory (进程句柄, 内存地址, DLL路径, 取文本长度 (DLL路径 ) + 1, 0 ) LoadLibraryA地址 = GetProcAddress (GetModuleHandleA ("kernel32.dll" ), "LoadLibraryA" ) CreateRemoteThread (进程句柄, 0, 0, LoadLibraryA地址, 内存地址, 0, 线程ID ) VirtualAllocEx (进程句柄, 内存地址, 0, 0x8000, 0 ) CloseHandle (进程句柄 )信息框 ("DLL注入成功!目标进程的时间已被修改。", 0, )变量名 | 类 型 | 静态 | 数组 | 备 注 | 新时间 | 文本型 | | | 时间数组 | 文本型 | | 6" ' 年、月、日、时、分 |
新时间 = 编辑框2.内容 时间数组 = 分割文本 (新时间, "-" ) 如果 (取数组成员数 (时间数组 ) < 3 ) 信息框 ("时间格式错误!请使用YYYY-MM-DD HH:MM:SS格式。", 0, ) 返回 () 全局变量_伪造年 = 到整数 (时间数组 [1 ])全局变量_伪造月 = 到整数 (时间数组 [2 ])时间数组 = 分割文本 (时间数组 [3 ], " " )全局变量_伪造日 = 到整数 (时间数组 [1 ])时间数组 = 分割文本 (时间数组 [2 ], ":" )全局变量_伪造时 = 到整数 (时间数组 [1 ])全局变量_伪造分 = 到整数 (时间数组 [2 ])全局变量_伪造秒 = 到整数 (时间数组 [3 ])信息框 ("时间设置成功!下次注入将使用新时间。", 0, )
|
|