我在Visual Studio 2017中使用C ++ \ CLR项目。当我尝试操作内存时,我创建了一个无名游戏的黑客并尝试操纵游戏。
我的问题是我尝试创建一个随机整数,为此我将函数CREATE NONCLUSTERED INDEX FINullDateCol
ON <myTable> (DateCol)
WHERE DateCol IS NULL ;
GO
与firstSetRand rand()
结合使用。
srand()
这是我的随机计数功能,在这里我称之为:
using namespace System;
int * randomName()
{
srand((unsigned)time(0));
int i = 1;
static int name[5];
for (int i = 1; i < 5; i++)
{
name[i] = 97 + rand() % 122;
}
std::cout << name << std::endl;
return name;
}
问题是因为这是一个while(true)循环,我多次调用该函数。并且我不知道如何使int main(array<System::String ^> ^args)
{
while (true)
{
switch (inputCheat) //check which case match with the user input
{
case 4:
Console::WriteLine("test: ");
random:: randomName(firstSetRand);
//WriteProcessMemory(handle, (LPVOID)localName, &inputNumber, sizeof(), NULL); //Write to the local adress memory and change the value
Console::WriteLine("\nWhat did you want to cheat up: ");
break;
}
}
Sleep(200);
}
函数仅在我得到相同的随机数时被调用。
我来自Java。在Java中,我会在一个类中完成整个代码,而不是在构造函数中编写变量,但我认为在C ++中这是不可能的。因为当我在一个类中执行整个代码时,我得到错误:
srand()
以下是我的项目的完整代码:
Severity Code Description Project File Line Suppression State
Error LNK2019 unresolved external symbol _main referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) AssaultCubeHack C:\Users\schup\source\repos\AssaultCubeHack\AssaultCubeHack\MSVCRTD.lib(exe_main.obj) 1
在这里你可以看到它不起作用。
答案 0 :(得分:2)
解决方案1
您可以使用函数static
变量。
static bool firstTime = true;
if ( firstTime )
{
srand((unsigned)time(0));
firstTime = false;
}
解决方案2
如果您不想为每次调用函数支付支票的价格,您可以使用帮助程序类/结构。
struct InitRandHelper
{
InitRandHelper() { srand((unsigned)time(0)); }
};
int* randomName()
{
// Initialize the random number generator.
static InitRandHelper init;
int i = 1;
static int name[5];
for (int i = 1; i < 5; i++)
{
name[i] = 97 + rand() % 122;
}
std::cout << name << std::endl;
return name;
}
解决方案3
在srand
循环开始之前调用main
中的while
。
int main(array<System::String ^> ^args)
{
srand((unsigned)time(0));
while (true)
{
switch (inputCheat) //check which case match with the user input
{
case 4:
Console::WriteLine("test: ");
random:: randomName(firstSetRand);
//WriteProcessMemory(handle, (LPVOID)localName, &inputNumber, sizeof(), NULL); //Write to the local adress memory and change the value
Console::WriteLine("\nWhat did you want to cheat up: ");
break;
}
}
Sleep(200);
}
并从random::randomName
移除来电。
答案 1 :(得分:0)
好的,我找到了答案。问题是这一行:
std::cout << name << std::endl;
控制台中的输出不是值,而是来自阵列的地址。为了做到这一点,我必须这样做:
int i = 1;
static int name[5];
for (int i = 1; i < 5; i++)
{
name[i] = 97 + rand() % 122;
std::cout << name[i] << std::endl; //this line is the right thing to do it
}
return name;