c++ - 太多初始化值错误
问题描述
我只是编码的初学者。我知道 c++ 和 c# 的基础知识。我正在制作一个dll注入器。我还按照教程进行了部分操作。我从教程中获得的一部分内容有一个错误,它是“初始化器值太多”。我不知道那是什么意思,为什么它会在那里。错误nullptr
在下一行
void* allocated_memory(h_process, nullptr, MAX_PATH, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
它在第一行nullptr
。如果我删除那个 nullptr 那么我会在MAX_PATH
代码的最大部分:
#include <iostream>
#include <Windows.h>
#include <string>
#include <thread>
#include <libloaderapi.h>
void get_id(const char* windows_title, DWORD &process_id)
{
GetWindowThreadProcessId(FindWindow(NULL, windows_title), &process_id);
}
void error(const char* error_title, const char* error_message)
{
MessageBox(NULL, error_message, error_title, NULL);
exit(-1);
}
bool file_exists(std::string file_name)
{
struct stat buffer;
return (stat(file_name.c_str(), &buffer) == 0);
}
int main()
{
DWORD proc_id = NULL;
char dll_path(MAX_PATH);
const char* dll_name = "PW";
const char* window_title = "Pixel Worlds";
if (!file_exists(dll_name))
{
error("file_exists", "Something went wrong");
}
HANDLE h_process = OpenProcess(PROCESS_ALL_ACCESS, NULL, proc_id);
void* allocated_memory(h_process, nullptr, MAX_PATH, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
HANDLE h_thread = CreateRemoteThread(h_process, nullptr, NULL, LPTHREAD_START_ROUTINE(LoadLibraryA), allocated_memory, NULL, nullptr);
CloseHandle(h_process);
VirtualFreeEx(h_process, allocated_memory, NULL, MEM_RELEASE);
MessageBox(NULL, "Successfully injected", "Success", NULL);
}
解决方案
您似乎正在尝试使用VirtualAllocEx WinAPI 例程,但您没有在尝试的调用中命名该函数,这只是语法不正确。
代替行:
void* allocated_memory(h_process, nullptr, MAX_PATH, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
您需要声明void*
指针并通过如下调用分配它指向的内存:
void* allocated_memory = VirtualAllocEx(h_process, nullptr, MAX_PATH, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
推荐阅读
- html - 无法使用 node.js 读取简单的表单字段值并表达
- swiftui - 如何强制 SwiftUIView 显示预加载的数据而不需要用户手动更改其状态?
- r - R给出错误:模型中有混叠系数
- vue.js - 构建类型上不存在属性“隐藏”
- python - 模型处于预测阶段时如何获取输入数据形状?
- python - 从文档中提取页眉和页脚(每页上重复的文本)
- c - 在 C 中的 getline 中识别 EOF 与换行符
- sql - NestJS 中文章和标签与 TypeORM 的关系
- java - 他们是一种使 JLabels 可移动的方法吗?
- unit-testing - 如何在 Flutter 中测试密封状态类?