我为游戏制作了版本检查器。我们从任何地方都看不到游戏版本。我们刚刚使用作弊引擎找到了版本字符串。这是版本字符串地址= 56 32 2E ?? ?? ?? 00 00
我正在使用Memory.DLL
进行ArrayOfBytes
扫描,然后将其更改为字符串。
我尝试了很多方法,但无法解决。
此处错误:
using Memory;
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while (true)
{
int pID = m.getProcIDFromName("Growtopia");
bool openProc = false;
if (pID > 0) openProc = m.OpenProcess(pID);
long myAobScan = m.AoBScan(0x700000000000, 0x7FFFFFFFFFFF, "56 32 2E ?? ?? ?? 00 00").Result; //ERROR AT HERE... // VERSION ADDRESS
vers.Text = myAobScan.ToString();
if (openProc)
{
m.writeMemory("0x7FF6F22818C7", "bytes", "0x90 0x90"); // BAN BYPASS
}
}
}
IEnumerable参数:
public async Task<IEnumerable<long>> AoBScan(long start, long end, string search, bool writable = false, bool executable = true, string file = "")
答案 0 :(得分:0)
IEnumerable可以包含0到数十万个long。因此,您的问题是,它需要知道您想使用多长时间。
不知道AoBScan的行为方式(仅知道参数对理解方法的作用没有多大帮助),很难说您是否期望它很长,或者是否有很多选择。
话虽如此,要将IEnumerable转换为单个实例,您必须选择其中一项。有几种方法可以做到...
您可以使用以下内容拉出第一个
long myAobScan = m.AoBScan(0x700000000000, 0x7FFFFFFFFFFF, "56 32 2E ?? ?? ?? 00 00").Result.First();
或者在下面拉出最后一个
long myAobScan = m.AoBScan(0x700000000000, 0x7FFFFFFFFFFF, "56 32 2E ?? ?? ?? 00 00").Result.Last();
或编写一个“ Where”谓词来抽取与您期望的条件匹配的谓词
long myAobScan = m.AoBScan(0x700000000000, 0x7FFFFFFFFFFF, "56 32 2E ?? ?? ?? 00 00").Result.Where(lng => lng > 10);
所有这些都会使IEnumerable长时间退出。如果您需要将所有内容都提取出来并将其转换为字符串,则完全是另一个问题。