找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 2912|回复: 7

【VB】VB6实现高效位操作的模块

[复制链接]

9

主题

176

回帖

1万

积分

用户组: 真·技术宅

UID
4293
精华
6
威望
441 点
宅币
8670 个
贡献
850 次
宅之契约
0 份
在线时间
338 小时
注册时间
2018-9-19
发表于 2020-7-6 21:32:21 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
本帖最后由 系统消息 于 2020-9-9 17:51 编辑

==========================================================================;

  发布时间:2019-8-15 22:16
  版权所有 ? YY菌{3EA3E263-6945-4E1F-A573-492FB5A7799E}.

  技术交流群(QQ):250264265、112915633、522856605、264417277
  用途:增加 VB6 不支持的位移、字序交换、浮点数重解释转换等位操作相关功能

  请保留原作者信息,否则视为侵权。

***************************************************************************/

VB6位操作说明

前缀名称:
Shl 为逻辑左移,低位补0。
Shr 为逻辑右移,高位补0.
Sha 为算法右移,符号位不会变。
Rol 为循环左移,高低位互补(位移次数为负等于循环右移)
Ldexp 为浮点数缩放(位移次数为正数代表左移,负数代表右移),通过对浮点数的指数位加减或底数位位移(当指数位为0时),快速实现 X * 2 ^ Y。
Bswap 为字序交换,大小端互换(主要用于网络通信)。
Flt2Int 为浮点数重解释为整数,和CLng、CCur不同的是,此转换方式直接把浮点数内存数据转成整数,而不是对浮点数取整。
Int2Flt 为整数重解释为浮点数,和 Flt2Int 的作用刚刚相反

后缀数字:
8   对8位(1字节)数操作(Byte)
16  对16位(2字节)数操作(Integer)
32  对32位(4字节)数操作(Long、Single)
64  对64位(8字节)数操作(Currency、Double)

注意:生成exe时需要修改条件编译常量,否则不会得到优化,导致效率明显下降。

VB6位操作模块(没有密码).rar

4.33 KB, 阅读权限: 10, 下载次数: 19

VB6位移

本帖被以下淘专辑推荐:

回复

使用道具 举报

1111

主题

1651

回帖

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
244
威望
743 点
宅币
24237 个
贡献
46222 次
宅之契约
0 份
在线时间
2297 小时
注册时间
2014-1-26
发表于 2020-7-7 23:21:59 | 显示全部楼层
没有密码?嗯?
回复 赞! 靠!

使用道具 举报

9

主题

176

回帖

1万

积分

用户组: 真·技术宅

UID
4293
精华
6
威望
441 点
宅币
8670 个
贡献
850 次
宅之契约
0 份
在线时间
338 小时
注册时间
2018-9-19
 楼主| 发表于 2020-7-8 09:57:03 | 显示全部楼层
0xAA55 发表于 2020-7-7 23:21
没有密码?嗯?

拼音:meiyoumima
回复 赞! 靠!

使用道具 举报

1111

主题

1651

回帖

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
244
威望
743 点
宅币
24237 个
贡献
46222 次
宅之契约
0 份
在线时间
2297 小时
注册时间
2014-1-26
发表于 2020-7-8 22:49:29 | 显示全部楼层
如果我是你,我会考虑使用运行时动态检测是否在IDE内(而不是预编译参数),以及是否处在用户控件的编辑模式。在确保自身是以native指令运行的条件下,再进行自我Hook。

然后我会把所有的自我Hook集中到一个初始化函数里,由这个初始化函数进行一并的Hook。而非每个函数被第一次调用时进行自我Hook。
此外,推荐使用LDE进行代码长度检查,将截断的指令NOP掉,从而避免产生指令屑。
回复 赞! 靠!

使用道具 举报

30

主题

210

回帖

2778

积分

用户组: 版主

UID
1821
精华
7
威望
69 点
宅币
2159 个
贡献
206 次
宅之契约
0 份
在线时间
480 小时
注册时间
2016-7-12
发表于 2020-7-9 23:19:07 | 显示全部楼层
0xAA55 发表于 2020-7-8 22:49
如果我是你,我会考虑使用运行时动态检测是否在IDE内(而不是预编译参数),以及是否处在用户控件的编辑模 ...

以前我都是把ntdll的位操作函数 动态 hook到vb的函数上,就是调试起来麻烦
回复 赞! 靠!

使用道具 举报

9

主题

176

回帖

1万

积分

用户组: 真·技术宅

UID
4293
精华
6
威望
441 点
宅币
8670 个
贡献
850 次
宅之契约
0 份
在线时间
338 小时
注册时间
2018-9-19
 楼主| 发表于 2020-7-10 09:33:51 | 显示全部楼层
0xAA55 发表于 2020-7-8 22:49
如果我是你,我会考虑使用运行时动态检测是否在IDE内(而不是预编译参数),以及是否处在用户控件的编辑模 ...

之前我也是单独一个初始化函数,里面运行时判断是不是IDE的,后来考虑更好的优化所以就改条件编译了,同时自己HOOK自己不仅仅为了省一个初始化,而是可以绝对保证写入指令长度不会超过函数范围(因为要写入的指令都在原始函数的指令立即数里面。
回复 赞! 靠!

使用道具 举报

0

主题

27

回帖

59

积分

用户组: 小·技术宅

UID
8351
精华
0
威望
2 点
宅币
28 个
贡献
0 次
宅之契约
0 份
在线时间
5 小时
注册时间
2023-7-5
发表于 2023-7-6 11:14:07 | 显示全部楼层
还真是没有密码
回复 赞! 靠!

使用道具 举报

1

主题

159

回帖

624

积分

用户组: 大·技术宅

UID
7535
精华
0
威望
0 点
宅币
464 个
贡献
0 次
宅之契约
0 份
在线时间
71 小时
注册时间
2021-10-16
发表于 2024-1-19 08:49:54 | 显示全部楼层
啥也不说了,帖子就是带劲!
回复 赞! 靠!

使用道具 举报

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-4-20 20:35 , Processed in 0.041181 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表