发一个剑网三的任务名称获取方法
剑网三的任务名称获取方法本方法是找到这个游戏的所有任务名称。
DWORD missonNameAdderss;
void GetMissonNameAddress() //找出游戏内指定大小内存的地址,这个地址是游戏存放任务名称以及ID的地方。
{
MEMORY_BASIC_INFORMATION addressInfo;
int a;
DWORD startAddress = 0x20D00000; //开始搜索的地址
a = VirtualQuery ((LPCVOID)startAddress,&addressInfo,sizeof(addressInfo));
if(a != 0)
{
while(addressInfo.RegionSize != 0x167000)//判断搜出来的内存大小是否为0x167000
{
StartAdderss = startAdderss + 0x10000;
VirtualQuery ((LPCVOID)startAddress,&addressInfo,sizeof(addressInfo)); //VirtualQueryEx是一种函数功能,查询地址空间中内存地址的信息。
if(addressInfo.RegionSize == 0x167000)
{
break;
}
}
missonNameAdderss = (DWORD)adderssInfo.BaseAddress + 0x12c;
}
}
vector<MISSONINFO> tmp_MissonName;
void BianliMissonName()
{
DWORD tmp_address, tmp_nameaddress, tmp_nameaddress1;
MISSONINFO misson;
int i = 0, a;
if (MissonNameAddress == 0) {
GetMissonNameAddress ();
}
tmp_address = MissonNameAddress + 0x7c * 2;
a = *(int*)tmp_address;
while (a != 0) {
tmp_nameaddress = tmp_address + 0x7c * i;
tmp_nameaddress1 = *(DWORD*)(tmp_nameaddress + 4);
misson.nID = *(int*)(tmp_nameaddress); //任务ID
a = misson.nID;
misson.xiabiao = i;
misson.szName = (char*)(tmp_nameaddress1); //任务名称
i++;
if(misson.nID != 0) {
tmp_MissonName.push_back(misson);
}
}
} 路过 楼下的接上 就喜欢楼主这样的哈哈哈
貌似很不错的样子 支持楼主,感谢楼主!
页:
[1]