更改易语言组件类名

易语言 2020-08-18 11:13:10

更改易语言组件类名

ApiHook.StopHook () ' 停止拦截API
lpClassName_ = lpClassName
.如果 (寻找文本 (lpClassName, “_EL”, , 假) ≠ -1) ' EL是易语言组件的前缀类名(5.92实测)
wc.cbSize = 12 × 4
GetClassInfoExA (hInstance, lpClassName, wc) ' 获取类信息
lpClassName_ = 子文本替换 (lpClassName, “_EL”, “_BXV”, , , 真)
wc.lpszClassName = lpClassName_ ' 更改前缀为 _BXV
RegisterClassExA (wc) ' 注册类
返回值 = CreateWindowExA (dwExStyle, wc.lpszClassName, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam) ' 创建主窗口
ApiHook.UninstallApiHook () ' 卸载APIHOOK
.否则
返回值 = CreateWindowExA (dwExStyle, lpClassName_, lpWindowName, dwStyle, x, y, nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
.如果结束
UnregisterClassA (lpClassName_, 0) ' 反注册类
ApiHook.BeginHook () ' 开始拦截API
返回 (返回值)

pFunAddress = GetProcAddress (GetModuleHandleA (lpLibFileName), lpProcName) ' 获取API函数地址
.如果真 (pFunAddress = 0)
返回 (假)
.如果真结束
VirtualProtect (pFunAddress, 8, #PAGE_EXECUTE_READWRITE, OldProtect) ' 把内存块设置为可读写
NewData = { 184 } + 到字节集 (lpfn) + { 255, 224 } ' 生成新机器码数据
OldData = 指针到字节集 (pFunAddress, 8) ' 保存旧机器码数据
HookInfo = lpLibFileName + “|” + lpProcName