65 lines
1.1 KiB
C++
65 lines
1.1 KiB
C++
|
|
#include "pch.h"
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
//<2F><>ȡEXEʹ<45><CAB9>ͷ <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
|
int GetExeNutWrtNum(int Pos)
|
|||
|
|
{
|
|||
|
|
int num = *(int*)(0x40079F + (Pos * 4));
|
|||
|
|
return num;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//дEXEʹ<45><CAB9>ͷ <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
|
void SetExeNutWrtNum(int Pos, int num)
|
|||
|
|
{
|
|||
|
|
int* p = (int*)(0x40079F + (Pos * 4));
|
|||
|
|
*p = num;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><>ȡNutͷ <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
|
int GetNutArrNum(int Nutͷ<EFBFBD><EFBFBD>ַ, int Pos )
|
|||
|
|
{
|
|||
|
|
int num = *(int*)(Nutͷ<EFBFBD><EFBFBD>ַ + (Pos * 8));
|
|||
|
|
return num;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//дNutͷ <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
|
void SetNutArrNum(int Nutͷ<EFBFBD><EFBFBD>ַ, int Pos, int num)
|
|||
|
|
{
|
|||
|
|
int* p = (int*)(Nutͷ<EFBFBD><EFBFBD>ַ + (Pos * 8));
|
|||
|
|
*p = num;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ڴ<EFBFBD>ƫ<EFBFBD>Ƶ<EFBFBD>ַ
|
|||
|
|
int GetHook(int Addr, std::string <EFBFBD><EFBFBD>ַ)
|
|||
|
|
{
|
|||
|
|
size_t pos = <EFBFBD><EFBFBD>ַ.find("+");
|
|||
|
|
size_t size = <EFBFBD><EFBFBD>ַ.size();
|
|||
|
|
int GetHookArr[] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };
|
|||
|
|
int i = 0;
|
|||
|
|
|
|||
|
|
while (pos != std::string::npos)
|
|||
|
|
{
|
|||
|
|
std::string x = <EFBFBD><EFBFBD>ַ.substr(0, pos);
|
|||
|
|
GetHookArr[i] = stoi(x, 0, 16);
|
|||
|
|
i++;
|
|||
|
|
<EFBFBD><EFBFBD>ַ = <EFBFBD><EFBFBD>ַ.substr(pos + 1, size);
|
|||
|
|
pos = <EFBFBD><EFBFBD>ַ.find("+");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int num;
|
|||
|
|
num = *(int*)(Addr);
|
|||
|
|
|
|||
|
|
if (num != 0)
|
|||
|
|
{
|
|||
|
|
for (int z = 0; z < i; z++)
|
|||
|
|
{
|
|||
|
|
num = *(int*)(num + GetHookArr[z]);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return num;
|
|||
|
|
}
|