主要实现了两个功能:
1. 自动化调用__cdecl函数,内部自动进行栈平衡
思路:所以接口都是代理函数,内部直接调用 _wkeRedirect,而这个函数会回溯到调用代理函数的那一帧,保存当前栈情况,调用完后返回本函数,本函数恢复栈帧,直接平衡栈,返回代理函数,类型32位或64位都支持
2. 自动化包装函数,把函数包装成__cdecl,返回包装函数地址
思路: 一般思路
于是可以:
不使用易语言dll表的@前缀(从而不用dll表),改成句柄调用miniblink的__cdecl
至于使用句柄的原因,可以参考peload等场景
自动化让封装函数变成只有一两句函数,就像这个样子:
附:Ex DirectUI 3.0 & MiniBlink合作例子
采用了离屏渲染方式,画面有更新的时候调用bitblt拷贝,sizing等wke不响应的时候通过wkePaint强制重绘。
高DPI适配(最低支持Visita,XP无)
虽然绘画方式保证了正确渲染,但MiniBlink普通版(非个人版...)有其自身限制
相比纯MiniBlink,优势:
请读者遇到了再自行对比
——————————————————
算了还是说一些吧:
mb不能调整窗口类名(所以不能调整任务栏那个图标)、不能修改窗口风格,拖到屏幕最上边不能最大化(默认没有此风格)……
附件太大带了node.dll,上传了几次都没成功,贴出关键函数吧:
关键函数直接参考:
|
_wkeRedirect | 整数型 | | |
funcName | 文本型 | | | | longlong | 长整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | stack | 字节集 | | | lpBottom | | | | lpTop | | | | ret | | | | 置入代码 ({ 137, 101, 248, 139, 69, 0, 131, 192, 4, 137, 69, 244, 137, 117, 240 }) stack = 指针到字节集 (lpBottom, lpTop - lpBottom + 4 ) ret = GetProcAddress (m_hlibWke, funcName )置入代码 ({ 139, 117, 252, 137, 46, 201, 201, 232, 0, 0, 0, 0, 89, 131, 193, 9, 137, 12, 36, 255, 224, 139, 46, 199, 6, 1, 0, 0, 0, 139, 78, 4, 43, 225, 86, 87, 252, 141, 118, 8, 139, 252, 131, 199, 8, 243, 164, 95, 143, 69, 252, 139, 117, 240, 137, 69, 240, 139, 77, 16, 133, 201, 116, 8, 139, 77, 12, 137, 1, 137, 81, 4 }) 返回 (ret )fn = { 85, 139, 236, 83, 185 } + 到字节集 (cArgv ) + { 107, 193, 4, 131, 192, 4, 3, 197, 255, 48, 131, 232, 4, 226, 249, 184 } + 到字节集 (lpfn ) + { 255, 208, 91, 201, 195 } 置入代码 ({ 139, 69, 252, 131, 192, 8, 139, 77, 8, 137, 1, 199, 69, 252, 0, 0, 0, 0 })
补充内容 (2020-5-7 20:57):
抱歉。带了node.dll,附件太大了,精易一直上传不了,大家不介意的话去傻逼网盘下载吧:
链接: https://pan.baidu.com/s/1BB67OKjGAY6ldA1HMR9gxA 提取码: 74r9 复制这段内容后打开百度网盘手机App,操作更方便哦 |