首页
社区
课程
招聘
[原创]R0/R3 通用高效取随机数
发表于: 2019-4-21 12:46 6435

[原创]R0/R3 通用高效取随机数

2019-4-21 12:46
6435
R3有 srand(?) rand(),凑合使用.
但是最近搞的驱动需要随机参数,R0又没有随机数值的获取.
因为x64不能直接 _asm{}了,根据网上流传的汇编方式获取随机数的方法,改成了这样的
ULONG dv_rand(ULONG min, ULONG max)
{

	ULONG t1 = __rdtsc();

	//ULONG v = (((t1*(min^ t1) + t1 * (max*min)) * 0x17) / 7) % (max + 1) + min; 之前写错的
        ULONG v = (((((t1*(min^ t1) + t1 * (max*min )) * 0x17) / 7) % (max- min+1)) + min);//修正 2019-5-20
	return  v;
}

ULONG dv_rand(ULONG min, ULONG max)
{

	ULONG t1 = __rdtsc();

	//ULONG v = (((t1*(min^ t1) + t1 * (max*min)) * 0x17) / 7) % (max + 1) + min; 之前写错的
        ULONG v = (((((t1*(min^ t1) + t1 * (max*min )) * 0x17) / 7) % (max- min+1)) + min);//修正 2019-5-20
	return  v;
}


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2019-5-20 22:57 被游乐娃子编辑 ,原因: 修改错误.
收藏
免费 1
支持
分享
最新回复 (7)
雪    币: 19
活跃值: (205)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
马克!感谢
2019-4-21 13:48
0
雪    币: 6124
活跃值: (4661)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
3
嗯 这个方法不错
2019-5-19 14:02
0
雪    币: 7559
活跃值: (5397)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
之前写错了 随机算法,min大于0的时候会导致随机结果大于max,复制粘贴过的重写复制下吧
2019-5-20 22:58
0
雪    币: 248
活跃值: (3789)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
路过,mark
2019-5-21 02:13
0
雪    币: 8216
活跃值: (3887)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
赞一个
2019-5-24 00:07
0
雪    币: 261
活跃值: (547)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
RtlRandomEx 了解一下
2019-5-27 14:21
0
雪    币: 7559
活跃值: (5397)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
chengqiyan RtlRandomEx 了解一下
单独使用没意义.
2019-5-28 02:18
0
游客
登录 | 注册 方可回帖
返回
//