Когда я использую функцию CreateRemoteThread(), функция возвращает NULL, и если я использую getLastError(), я получаю ошибку 6 (что означает неверный дескриптор). Я пытался внедрить свою собственную dll в процесс notepad.exe и получил эту ошибку, но внедрение не произошло. Чтобы получить дескриптор процесса, я использовал следующее => HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,processID);
Затем я попробовал следующее HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,GetCurrentPoccessID()); это то же самое, за исключением того, что dll внедряется в текущий исполняемый процесс, и это сработало. Я предполагаю, что это проблема с разрешением, но я отключил все антивирусы, включая защитника Windows. Я действительно хочу знать, что мешает мне выполнить инъекцию, поскольку все остальные, похоже, смогут выполнить инъекцию с использованием аналогичного кода. Я использую 64-битную систему Windows 11. найдите ниже код инъекции и код dll. Примечание.
1: .dll и .exe — это 64-разрядные файлы.
2: я запускаю их от имени администратора.
3: как я скомпилировал .dll x86_64-w64-mingw32-g++ -shared -o mydll.dll mydll.cpp
4: vs компилятор кода конфигурации:
{
"configurations": [
{
"name": "Win64",
"includePath": [
"${workspaceFolder}/**",
"c:/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "C:\\msys64\\mingw64\\bin\\gcc.exe",
"cStandard": "c17",
"cppStandard": "gnu++17",
"intelliSenseMode": "windows-gcc-x64"
}
],
"version": 4
}
[ОБНОВЛЕНИЕ] *Я создал процесс и скомпилировал его так же, как я скомпилировал injector.cpp, я смог внедрить его в процесс
injection.cpp< /strong>
#include
#include
int main(int argc, char* argv[])
{if (argc < 2) {
printf("(--) usage: dll.exe
");
return EXIT_FAILURE;
}
DWORD PID = atoi(argv[1]);
// Path to the target process
const char* targetProcess = "C:\\Windows\\System32\\notepad.exe";
// Path to the DLL to inject
const char* dllPath = "C:\\Users\\fagner\\Desktop\\windowsM\\dll\\dlli2.dll";
// Load the target process
HANDLE hProcess = OpenProcess(PROCESS_VM_WRITE | PROCESS_VM_OPERATION | PROCESS_CREATE_THREAD, FALSE,PID);// if I replace process ID with GetCurrentProcessId() it works
if (hProcess == NULL)
{
std::cout
Подробнее здесь: https://stackoverflow.com/questions/761 ... motethread
Мобильная версия