精易论坛
标题:
求助大佬可以转换易语言
[打印本页]
作者:
逍≮遥≯神
时间:
2025-2-25 14:15
标题:
求助大佬可以转换易语言
typedef HANDLE(__stdcall* CreateMutexWFn)(LPSECURITY_ATTRIBUTES lpMutexAttributes, BOOL bInitialOwner, LPCWSTR lpName);
HANDLE __stdcall hookCreateMutexW(LPSECURITY_ATTRIBUTES lpMutexAttributes, BOOL bInitialOwner, LPCWSTR lpName) {
CreateMutexWFn fn = *(CreateMutexWFn*)0x0155A1A4;
return fn(lpMutexAttributes, bInitialOwner, NULL);
}
#ifdef EN_MULTI_PROC
//支持双开
writeCallCode((LPVOID*)0x0112D97E, (PVOID)hookCreateMutexW);
*(BYTE*)0x0112D983 = 0x90;
writeCallCode((LPVOID*)0x00706872, (PVOID)hookCreateMutexW);
*(BYTE*)0x00706877 = 0x90;
*(BYTE*)0x0116D0DC = 0xEB;
#endif // EN_MULTI_PROC
求助大佬可以转换易语言吗?
作者:
逍≮遥≯神
时间:
2025-2-25 14:32
0112D977 8D45 D4 lea eax,dword ptr ss:[ebp-0x2C]
0112D97A 50 push eax
0112D97B 6A 01 push 0x1
0112D97D 56 push esi
0112D97E FF15 A4A15501 call dword ptr ds:[0x155A1A4] ; 多开call处理1 原型
0070686A 83C4 04 add esp,0x4
0070686D 50 push eax
0070686E 6A 00 push 0x0
00706870 6A 00 push 0x0
00706872 FF15 A4A15501 call dword ptr ds:[0x155A1A4] ; 多开call处理2 原型
打赏
作者:
top777
时间:
2025-2-25 14:46
问deepseek或豆包,又快又好。
作者:
top777
时间:
2025-2-25 14:48
.版本 2
.支持库 eAPI
.程序集 窗口程序集_启动窗口
.程序集变量 CreateMutexW 原地址, 整数型
.程序集变量 钩子函数地址, 整数型
.子程序 __启动窗口_创建完毕
.如果真 (是否定义常量 (“EN_MULTI_PROC”))
初始化钩子 ()
.如果真结束
.子程序 初始化钩子
局部变量 模块jz, 整数型
局部变量 偏移地址1, 整数型
局部变量 偏移地址2, 整数型
局部变量 偏移地址3, 整数型
局部变量 偏移地址4, 整数型
局部变量 偏移地址5, 整数型
模块jz = 取当前进程模块jz ()
偏移地址1 = 1129854 ' 0x0112D97E 转换为十进制
偏移地址2 = 1129859 ' 0x0112D983 转换为十进制
偏移地址3 = 734322 ' 0x00706872 转换为十进制
偏移地址4 = 734327 ' 0x00706877 转换为十进制
偏移地址5 = 1160348 ' 0x0116D0DC 转换为十进制
CreateMutexW 原地址 = 模块jz + 15994276 ' 0x0155A1A4 转换为十进制
钩子函数地址 = 到整数 (&钩子_CreateMutexW)
写调用代码 (模块jz + 偏移地址1, 钩子函数地址)
写内存字节 (模块jz + 偏移地址2, 144) ' 0x90 转换为十进制
写调用代码 (模块jz + 偏移地址3, 钩子函数地址)
写内存字节 (模块jz + 偏移地址4, 144) ' 0x90 转换为十进制
写内存字节 (模块jz + 偏移地址5, 235) ' 0xEB 转换为十进制
.子程序 写调用代码
.参数 目标地址, 整数型
.参数 函数地址, 整数型
局部变量 代码, 字节集
代码 = {233} ' 0xE9 是 JMP 指令操作码
代码 = 代码 + 整数到字节集 (函数地址 - 目标地址 - 5, 4)
写内存字节集 (目标地址, 代码)
.子程序 写内存字节
.参数 地址, 整数型
.参数 字节值, 字节型
局部变量 字节集数据, 字节集
字节集数据 = {字节值}
写内存字节集 (地址, 字节集数据)
.子程序 写内存字节集
.参数 地址, 整数型
.参数 字节集数据, 字节集
调用API (“kernel32.dll”, “WriteProcessMemory”, 逻辑型, , 取当前进程句柄 (), 地址, 字节集数据, 取字节集长度 (字节集数据), 0)
.子程序 钩子_CreateMutexW
.参数 lpMutexAttributes, 整数型
.参数 bInitialOwner, 逻辑型
.参数 lpName, 整数型
局部变量 原函数, 子程序指针
原函数 = 到子程序指针 (CreateMutexW 原地址)
返回 (原函数 (lpMutexAttributes, bInitialOwner, 0))
.子程序 取当前进程模块jz
局部变量 模块句柄, 整数型
调用API (“kernel32.dll”, “GetModuleHandleW”, 整数型, , 0)
返回 (模块句柄)
.子程序 取当前进程句柄
返回 (调用API (“kernel32.dll”, “GetCurrentProcess”, 整数型, ))
.子程序 是否定义常量
.参数 常量名, 文本型
返回 (取常量数值 (常量名) ≠ 0)
欢迎光临 精易论坛 (https://125.confly.eu.org/)
Powered by Discuz! X3.4