读写用的一个DLL注入c++
Reading and writing with a DLL injection C++
我遇到了一点问题,我不确定如何做我想做的事情。
我正在使用c++将DLL注入到应用程序中,我想更改地址。问题是我不太确定如何定位它——让我解释一下……
我知道如何使用指针:
int x;
int *myPointer;
myPointer = &x;
*myPointer = 5;
std::cout << x << endl; // 5
我知道你可以指向指针:
int x;
int *myPointer;
int **myPointer2;
myPointer = &x;
myPointer2 = &myPointer;
**myPointer = 5;
std::cout << x << endl; // 5
我试图使一个基本的游戏黑客注入一个DLL到游戏中,然后将弹药设置为一个固定值的按键。注入正在工作,按键正在工作,但每当我尝试访问内存时,我都会崩溃。
我已经使用欺骗引擎来获得我想要更改的变量的静态地址,以及3个偏移量。
作弊引擎中的地址信息是这样的:
Address: 0288A520 = 19
Type: 4 bytes
0 [0288A520 + 0] -> 0288A520
14 [0288A520 + 14] -> 0288A520
384 [0288A3D0 + 384] -> 02881A30
ac_client.exe+109B74 -> 0288A3D0
值19是我想在DLL中修改的值。
如果我关闭游戏并重新打开它,我通过使用这些指针得到正确的值,但现在我的问题是我不确定如何在c++中实现这一点。我如何在c++中表示这个静态地址?
我的主线程现在看起来是这样的…
DWORD WINAPI Main_Thread(LPVOID lpParam)
{
while(1)
{
if(GetAsyncKeyState(VK_HOME)) {
// Output value here???
}
Sleep(100);
}
}
我已经让它工作了。我之前一直在尝试的事情都发生了,因为我有一个错误的基地地址。我的解决方案如下:
定义地址#define BASE_ADDR 0x00400000
#define AMMO_ADDR 0x00109B74
#define AMMO_OFS1 0x00000384
#define AMMO_OFS2 0x00000014
获取地址函数
DWORD getAddress(DWORD baseAddress, DWORD offsets[], int offsetCount)
{
DWORD address; // Where the final address will be stored
address = *(DWORD*)(BASE_ADDR + baseAddress); // Add the base address to the modules base address.
// Loop through each offset
for(int i = 0; i < offsetCount; i++) {
address = *(DWORD*)(address + offsets[i]);
}
return address;
}
修改
DWORD ammoOffsets[] = {AMMO_OFS1, AMMO_OFS2};
DWORD ammoAddress = getAddress(AMMO_ADDR, ammoOffsets, 2);
int* ammoPointer = (int*) ammoAddress;
*ammoPointer = 20;
相关文章:
- 在 C++/CLI 中将 .NET 事件从一个 DLL 引发到另一个 DLL
- 从 .lib 文件创建一个.dll文件
- 我可以用C++/WinRT编写一个DLL,供windows桌面应用程序(而不是UWP)或Unity插件使用吗
- 将 std::string 作为参数从一个 DLL 传递到另一个 DLL 引发访问冲突错误
- Java加载DLL,该DLL从JNI中的另一个DLL导出方法
- 如何在另一个 DLL 上使用 '/DELAYLOAD' 的 DLL
- 在一个 DLL 中嵌入所有必需的 DLL
- 用C++为java构建一个dll,它正在调用另一个dll(Eclipse上的JNI)
- 是否有从另一个DLL中加载DLL的最佳实践
- 如果你链接到一个DLL,如果该DLL丢失,是否可以启动你的可执行文件
- 第一次尝试创建一个包含许多类的DLL,捆绑在一个DLL中
- 如何正确删除从另一个DLL接收的派生对象
- 在 jmpq 上崩溃到另一个 dll 中的函数与 mingw64
- 将一个 dll 导入另一个 dll C++
- Visual Studio,C++,在另一个DLL导出的类中使用DLL导出的类
- 从另一个 dll 链接动态 dll 会导致错误
- 将一个C++ DLL 加载到 matlab 中,该 matlab 调用另一个 DLL 中的函数
- 用C++中的另一个Dll调用Dll
- LNK2019错误一个DLL链接到MFC DLL
- 导出另一个dll的静态成员