Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

[C++] Помощь с инжектом

  • Автор темы Автор темы uonese
  • Дата начала Дата начала
инжектор у тебя нормальный, он работает правильно
dll нужно обязательно распаковывать куда-нибудь перед инжектом и указывать полный путь к ней

Пожалуйста, авторизуйтесь для просмотра ссылки.
 
инжектор у тебя нормальный
Не соглашусь, он очень плохо написан, не в обиду тс.
1. char buf[50] = {0}; и sprintf + printf не нужно, printf и так умеет принимать аргументы как и sprintf, buf выкинуть и сразу печатать через printf
2. в C++ переменные должны быть объявлены как можно ближе к использованию, не нужно их писать в начале функции, объявляй сразу где они появляются
3. выбери единый стиль для названия переменных и другого, у тебя одна переменная капсом, другая в виндовом стиле, третья в кэмилькейсе
4. не проверяешь результаты выделения памяти, записи памяти и создания потока в удаленном процессе, это важно
5. записывая имя дллки в удаленный процесс ты записываешь ТОЛЬКО ее длину, это анстаб, будет крашить у рандомных людей, сложновыявляемая ошибка, нужно выделять и записывать (длина + 1) * sizeof(char), т.к. нужно записать еще нулевой символ потому что LoadLibrary принимает строку заканчивающуюся нулем, да sizeof(char) сейчас бесполезен, но если ты решишь поменять на LoadLibraryW то все что нужно будет заменить на wchar_t.
6. в IsProcessRun ты не закрываешь снимок процессов, это утечка памяти
7. выкинь функцию IsProcessRun, и пусть GetProcId возвращает номер процесса, а не записывает в глобальную переменную (это плохой тон), и 0 если процесса нет
8. инклудов хватит на параход, проверь что они действительно тебе все нужны
 
Не соглашусь, он очень плохо написан, не в обиду тс.
1. char buf[50] = {0}; и sprintf + printf не нужно, printf и так умеет принимать аргументы как и sprintf, buf выкинуть и сразу печатать через printf
2. в C++ переменные должны быть объявлены как можно ближе к использованию, не нужно их писать в начале функции, объявляй сразу где они появляются
3. выбери единый стиль для названия переменных и другого, у тебя одна переменная капсом, другая в виндовом стиле, третья в кэмилькейсе
4. не проверяешь результаты выделения памяти, записи памяти и создания потока в удаленном процессе, это важно
5. записывая имя дллки в удаленный процесс ты записываешь ТОЛЬКО ее длину, это анстаб, будет крашить у рандомных людей, сложновыявляемая ошибка, нужно выделять и записывать (длина + 1) * sizeof(char), т.к. нужно записать еще нулевой символ потому что LoadLibrary принимает строку заканчивающуюся нулем, да sizeof(char) сейчас бесполезен, но если ты решишь поменять на LoadLibraryW то все что нужно будет заменить на wchar_t.
6. в IsProcessRun ты не закрываешь снимок процессов, это утечка памяти
7. выкинь функцию IsProcessRun, и пусть GetProcId возвращает номер процесса, а не записывает в глобальную переменную (это плохой тон), и 0 если процесса нет
8. инклудов хватит на параход, проверь что они действительно тебе все нужны
1) я имел ввиду его работоспособность, а не кодстайл
2) да, по коду все ужасно, но я это опустил, т.к. он выше писал, что только начинает программировать на плюсах
 
инжектор у тебя нормальный, он работает правильно
dll нужно обязательно распаковывать куда-нибудь перед инжектом и указывать полный путь к ней

Пожалуйста, авторизуйтесь для просмотра ссылки.
при распаковке она загружается на диск , мне же нужно избавиться от этого и что бы она с ресурса проекта сразу инжектилась без распаковки
 
Нужно указывать полный путь к DLL, а не просто название с расширением.
Код:
Expand Collapse Copy
CHAR szDllPath[MAX_PATH];
DWORD dwBytesReturned = GetFullPathNameA(lpDllName, MAX_PATH, szDllPath, NULL);
 
при распаковке она загружается на диск , мне же нужно избавиться от этого и что бы она с ресурса проекта сразу инжектилась без распаковки
тогда используй другой способ инжекта, LL тут не подойдет
UPD:
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Назад
Сверху Снизу