🛰️ ShellCode模块(SH)
📌 函数: HD汇编_转机器码
描述
汇编文本转换机器码
原型
__int64 __stdcall HCSH_GetShellCode(__int32 模式,char* 汇编文本,BYTE* 机器码缓冲区,__int32 机器码缓冲区大小,__int64 返回机器码字节大小的地址,__int64 错误1变量的地址,__int64 错误2变量的地址);
参数
__int32 模式 - 32位(4)/64位(8)
char* 汇编文本 - 缓冲区字符串地址
byte* 机器码缓冲区 - 用来存转换的机器码缓冲区(单位
__int32 机器码缓冲区大小 - 机器码缓冲区大小(单位
__int64 返回机器码字节大小的地址 - 用来存转换的机器码缓冲区的大小变量的地址注意是传递变量的地址,在CALL内部写入值(单位
__int64 错误1 - 返回错误1(第几行有错误)注意是传递变量的地址,在CALL内部写入值
__int64 错误2 - 返回错误2(具体错误描述)注意是传递变量的地址,在CALL内部写入值
返回值
查看返回值表
注意事项
无
HD汇编_转机器码 - 基础示例
.版本 2
.子程序 _读表达式UTF8文本示例
.局部变量 文本内容, 文本型
文本内容 = HD内存_读表达式文本UTF8 (0, "game.exe+0x123456+0x50", 50)
调试输出 ("读取到的UTF8文本: " + 文本内容)
HD汇编_转机器码 - 进阶用法
.版本 2
.子程序 示例2
调试输出("示例2")
HD汇编_转机器码 - 高级应用
.版本 2
.子程序 高级示例
调试输出("高级示例")
📌 函数: HD汇编_写入机器码
描述
机器码写入到进程
原型
__int64 __stdcall HCSH_WriteShellCode(__int32 pid,BYTE* 机器码缓冲区,__int32 机器码缓冲区大小,__int64 返回变量的地址);
参数
__int32 pid - 进程pid
byte* 机器码缓冲区 - 机器码缓冲区
__int32 机器码缓冲区大小 - 机器码缓冲区大小
返回地址 - 返回写入的地址注意是传递变量的地址,在CALL内部写入值
返回值
查看返回值表
注意事项
这里执行用的是HD驱动来申请和写入这个机器码,注意要把HD驱动安装好
拿到了写入地址可以使用HD驱动创建远线程来执行
HD汇编_写入机器码 - 基础示例
.版本 2
.子程序 表单填写示例
.局部变量 窗口序号, 整数型
.局部变量 用户名, 文本型
.局部变量 密码, 文本型
.局部变量 邮箱, 文本型
.局部变量 备注, 文本型
窗口序号 = 1
用户名 = "HDUser2024"
密码 = "MyPassword123!"
邮箱 = "test@example.com"
备注 = "这是使用HD自动化库填写的表单,支持中英文混合输入。"
调试输出 ("开始自动填写表单")
' 填写用户名(ASCII)
HD键鼠_左键点击 (窗口序号, 300, 100) ' 点击用户名输入框
延时 (200)
HD键鼠_组合键 (窗口序号, "ctrl+a", 50) ' 全选现有内容
HCMKB_SendStringA (窗口序号, 用户名)
调试输出 ("用户名填写完成:" + 用户名)
延时 (300)
' 填写密码(ASCII)
HD键鼠_按键 (窗口序号, "tab", 50) ' 切换到密码框
延时 (200)
HCMKB_SendStringA (窗口序号, 密码)
调试输出 ("密码填写完成")
延时 (300)
' 填写邮箱(ASCII)
HD键鼠_按键 (窗口序号, "tab", 50) ' 切换到邮箱框
延时 (200)
HCMKB_SendStringA (窗口序号, 邮箱)
调试输出 ("邮箱填写完成:" + 邮箱)
延时 (300)
' 填写备注(Unicode,支持中文)
HD键鼠_按键 (窗口序号, "tab", 50) ' 切换到备注框
延时 (200)
HCMKB_SendStringW (窗口序号, 到字节集 (备注))
调试输出 ("备注填写完成:" + 备注)
延时 (500)
' 提交表单
HD键鼠_按键 (窗口序号, "tab", 50) ' 切换到提交按钮
延时 (200)
HD键鼠_按键 (窗口序号, "return", 50) ' 回车提交
调试输出 ("表单提交完成")
HD汇编_写入机器码 - 进阶用法
.版本 2
.子程序 示例2
调试输出("示例2")
HD汇编_写入机器码 - 高级应用
.版本 2
.子程序 高级示例
调试输出("高级示例")