typedef ULONG (__stdcall *_RtlRandomEx) ( PULONG Seed );
ULONG get_random(ULONG seed, ULONG lowerBound, ULONG upperBound)
{
assert(lowerBound <= upperBound);
_RtlRandomEx RtlRandomEx = (_RtlRandomEx) GetProcAddress(GetModuleHandle("ntdll.dll"), "RtlRandomEx");
ULONG r = RtlRandomEx(&seed);
return (r % upperBound - lowerBound) + lowerBound;
}
ULONG get_random(ULONG seed)
{
return get_random(seed, 0, 0xffffffffUL);
}
ULONG get_random()
{
return get_random(1);
}
int main(void)
{
for (int i = 0; i < 100; i++)
std::cout << get_random(i, 0, 1000) << std::endl;
return 0;
}