易语言源码2021/10/3 模块源码2.6 更新:
1:增加 drx硬件断点hook VehDrx_hook64_安装() 每个进程限4个hook位置 VehDrx_hook64_恢复() VehDrx_hook64_卸载() VehDrx_hook64_暂停()
r3层 硬件断点hook 硬断不会改写目标进程执行代码 不会引发crc检测机制 但是会被检测drx机制检测 由于易语言的特殊性 数据之间依然存在通讯 实际应该称为x64远程硬件断点hook 这种方式只建议特殊情况使用 在效率和稳定性上不如 远程hook64指令_安装() 在安装时对进程目标所有线程有效 后创建的新线程不会引发断点 除非再次安装
2:增加 x64_进程句柄到进程ID()成功返回对应进程的PID,失败返回-1

模块源码2.5 更新:
1:修正 内存64_读字节集() 一个写法错误,修正为一次性读取指定长度的字节集
2:增加 本地加载64位dll演示() 的一个参考代码
3:增加 X64_查线程信息() ntdll.dll->ZwQueryInformationThread 实现
4:增加 X64_打开线程() ntdll.dll->ZwOpenThread
5:增加 X64_枚举进程() 全面的枚举系统进程信息,返回比较详细的进程信息结构,成功返回当前枚举到的进程个数,失败为0
参数 进程信息, 进程信息64, 数组, 从这个参数返回枚举到进程信息结构体数组
成员 线程数目, 整数型
成员 创建时间, 长整数型 可用 FileTime转为时间格式()转换为北京时间
成员 用户时间, 长整数型
成员 内核时间, 长整数型
成员 进程名, 文本型
成员 基本优先级, 长整数型
成员 进程PID, 长整数型
成员 父进程PID, 长整数型
成员 句柄数目, 整数型
成员 虚拟内存统计
成员 IO操作统计
6:增加 X64_枚举线程() 枚举进程线程信息,返回比较详细的线程信息结构,成功返回指定进程枚举到的线程个数,失败为0
参数 进程PID, 整数型, , 必须是一个目前正在运行的进程PID
参数 线程信息, 线程信息64, 数组, 从这个参数返回枚举到线程信息结构体数组
成员 内核时间, 长整数型
成员 用户时间, 长整数型
成员 创建时间, 长整数型 可用 FileTime转为时间格式()转换为北京时间
成员 等待时间, 长整数型
成员 启动地址, 长整数型, 线程在R3层第一条指令地址,一般是RtlUserThreadStart函数线程进程安全入口.如需获得真实线程入口 使用 X64_取线程入口()
成员 进程ID, 长整数型
成员 线程ID, 长整数型
成员 线程优先级, 整数型
成员 基本优先级, 整数型
成员 切换计数, 整数型
成员 线程状态, 整数型
成员 等待原因, 整数型
7:增加 X64_取线程TEB() 返回指定线程句柄对应的线程TEB结构所在内存地址 返回结果到参数二
参数 线程句柄, 整数型, , 提供目标线程句柄, -2=易语言执行线程句柄
参数 线程TEB, 长整数型, 参考, 返回TEB构所在内存地址
8:修改 原WoW64模块的 X64_取线程上下文() ntdll.dll->ZwGetContextThread 相当于 GetThreadContext函数 需要获得线程上下文必须先挂起线程 并根据CONTEXT64结构ContextFlags成员获得相应信息 wow64环境下有很大几率调用失败,不建议使用本接口 以供参考或临时使用
9:修改 原WoW64模块的 X64_置线程上下文() ntdll.dll->ZwSetContextThread 相当于 SetThreadContext函数 置上下文成员必须先挂起线程 并根据CONTEXT64结构ContextFlags成员决定重置项 wow64环境下有很大几率调用失败,不建议使用本接口 以供参考或临时使用
10:增加 x64_取线程上下文结构体() wow64环境下有很大几率调用失败,不建议使用本接口 以供参考或临时使用
11:增加 x64_置线程上下文结构体() wow64环境下有很大几率调用失败,不建议使用本接口 以供参考或临时使用
12:增加 X64_取线程真实入口() 根据线程句柄返回线程的入口地址,失败返回0
13:增加 X64_线程句柄到进程ID() 成功返回对应进程的PID,失败返回0
14:增加 X64_线程句柄到线程ID() 成功返回对应的线程ID,失败返回0
15:增加 FileTime转为时间格式() 将18位长整数型的File系统文件创建时间 转换成日期时间型 如 132762591809225412 转为 2021年9月16日19时46分
16:另增加了一些参与的变量类型转指针接口;增加或修正一些必要的数据类型;增加一些dll命令 暂停线程__()等
17:开辟一个新程序集 [Veh_hook64]本程序集时间原因未完成开发 预留备用 VEH+硬断 hook
内部有一些 预备子程序 如有需要可以参考
call_OpenThread() 在目标进程打开指定线程,返回打开后的线程句柄值,这个句柄在我方进程不能使用,权限属于目标进程,我们只是需要获得这个值,已做它用
call_ZwClose() 在目标进程中调用 ZwClose 函数关闭目标进程中某个已经打开的对象句柄
call_ZwGetContextThread() 根据 线程句柄 找到 线程所属进程 中去调用 ZwGetContextThread 函数取得上下文后 从参数二返回 CONTEXT64结构体 调用本接口请挂起线程 否则该数据将不是即时有效的 本接口能稳定获得上下文
call_ZwSetContextThread() 根据 线程句柄 找到 线程所属进程 中去调用 ZwSetContextThread 函数 重写CONTEXT64结构体,本接口重置所有寄存器,确保在同一次挂起线程中配合call_ZwGetContextThread()改写,否则后果自负 本接口能稳定获得上下文
call_RtlAddVectoredExceptionHandler() 在目标进程中远线程执行RtlAddVectoredExceptionHandler函数,注册一个向量化异常处理接口,成功返回注册的向量异常处理程序的句柄
call_RtlRemoveVectoredExceptionHandler()取消注册向量异常处理程序。如果函数成功,则返回值非零。

发表评论

后才能评论