|
楼主 |
发表于 2021-10-10 20:32:21
|
显示全部楼层
浙江省绍兴市
' ---------------------------------------------------------------
' 2021/10/10 模块源码2.82 更新:
' 1:修改 X64_远程调用函数() 远线程调用指定进程中某个函数入口,成功=返回函数执行后的RAX值,其他寄存器值通过参数三返回.失败返回-1 超时返回-2(如果超时 寄存器值将不是有效返回)
' ---增加 绑定主线程 参数,可空.默认=0=创建新的远线程执行,-1=绑定进程主模块线程(初始EXE模块的线程),-2=绑定主线程(进程创建的第一个线程),其他负值(-窗口句柄)=绑定窗口线程,其他大于0值=自定义线程ID(负数功能建议代码外部构成提供线程ID 其他线程效果以测试为准 如果线程正在沉睡 可执行代码并不会立即执行),可用于这方面防护的突破
' ---增加 超时间隔 参数,可空.毫秒计,默认=8000毫秒,提供小于等于零则强制性一直等待返回 否则按照给定的毫秒时间等待返回,如果超时 子程序返回 -2, *注意内部并不处理事件 自身主线程调用时结合实际情况
' 2:删除 call_OpenThread() call_ZwClose() call_ZwGetContextThread() call_ZwSetContextThread() x64_取线程上下文结构体() x64_置线程上下文结构体() 这些都不需要了
' 3:修复 X64_取线程上下文() X64_置线程上下文() 在wow64环境下调用偶尔成功偶尔失败的问题 替代了(2:)中删除的子程序
' 4:新增 X64_进程注入dll() 把x64dll注入到x64进程中去,支持绑定线程注入,成功返回模块基址 失败返回-1 超时并不代表注入失败
' 5:新增 X64_进程卸载dll() 卸载通过 X64_注入dll() 加载的dll,支持绑定线程卸载
' 6:新增 x64_内存注入dll() 支持以字节集的方式将dll内存注入到目标进程 支持绑定线程注入 使之无影无踪 成功返回模块基址 失败返回-1
' ---该功能 参考引用网络开源的 X64_ShellCode 跳板指令 结合我方源码实现
' ---注入成功返回的模块基址 亦可用我方模块命令枚举出导出函数
' ---其他方式难以再次获得内存注入的模块基址 如需另做它用 务必在注入时保存
' 7:新增 x64_内存释放dll () 释放 通过 x64_内存注入dll() 注入的内存dll *注意 如果此时dll有线程代码在执行 可能导致目标进程崩溃
' 8:新增 X64_构造保护寄存器指令集 () 返回将15个通用寄存器和1个标志寄存器压入栈中临时保护的字节集汇编指令 与 X64_构造恢复寄存器指令集() 配对使用
' 9:新增 X64_构造恢复寄存器指令集() 返回将15个通用寄存器和1个标志寄存器从栈中弹出并恢复到各寄存器的字节集汇编指令 与 X64_构造保护寄存器指令集() 配对使用
' 10:新增 X64_构造rip跳转指令集()构造一个 jmp[rip] 的长跳转指令集 jmp qword ptr ds[rip] 占6字节 紧随其后需要8字节跳转地址 共返回14字节
' 11:新增 X64_取进程主模块()根据进程句柄 取进程主模块信息 成功由参数二返回模块信息
' 12:新增 X64_取进程主线程ID()成功=返回 进程第一个创建的线程ID 失败=0 *注意:(它不绝对等于EXE主模块线程)
' 13:新增 X64_取进程主模块线程ID()成功=返回执行进程EXE主模块的线程ID 失败=0 *注意:进程主模块线程ID(不绝对等于)进程主线程ID
' 14:新增 dll定义 取窗口线程ID_ () user32.dll-->GetWindowThreadProcessId 返回=线程ID,参数二 能返回进程ID
' 15:新增 X64_取进程名称 () 进程句柄取进程名,成功返回进程名,失败=“”
' 16:新增 X64_构造保护XMM寄存器指令集() 返回 16个XMM寄存器压入到栈中临时保护的字节集指令 指令执行后rsp-0x100
' 17:新增 X64_构造恢复XMM寄存器指令集() 返回 从栈中取出临时保存的XMM寄存器值到XMM寄存器中 指令执行后 rsp+0x100
' --------------------------------------------------------------- 本次小更新,就不再次发帖了,更新内容就在本帖置顶,需要的朋友进企鹅群内下载源码。
|
|