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

CCCV
Пользователь
Статус
Оффлайн
Регистрация
26 Сен 2018
Сообщения
388
Реакции[?]
82
Поинты[?]
2K
Товары в продаже
1
инжектор у тебя нормальный, он работает правильно
dll нужно обязательно распаковывать куда-нибудь перед инжектом и указывать полный путь к ней

Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Keine panik!
Эксперт
Статус
Оффлайн
Регистрация
29 Апр 2020
Сообщения
812
Реакции[?]
417
Поинты[?]
49K
инжектор у тебя нормальный
Не соглашусь, он очень плохо написан, не в обиду тс.
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. инклудов хватит на параход, проверь что они действительно тебе все нужны
 
CCCV
Пользователь
Статус
Оффлайн
Регистрация
26 Сен 2018
Сообщения
388
Реакции[?]
82
Поинты[?]
2K
Товары в продаже
1
Не соглашусь, он очень плохо написан, не в обиду тс.
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) да, по коду все ужасно, но я это опустил, т.к. он выше писал, что только начинает программировать на плюсах
 
Начинающий
Статус
Оффлайн
Регистрация
20 Апр 2020
Сообщения
15
Реакции[?]
1
Поинты[?]
0
инжектор у тебя нормальный, он работает правильно
dll нужно обязательно распаковывать куда-нибудь перед инжектом и указывать полный путь к ней

Пожалуйста, авторизуйтесь для просмотра ссылки.
при распаковке она загружается на диск , мне же нужно избавиться от этого и что бы она с ресурса проекта сразу инжектилась без распаковки
 
Пользователь
Статус
Оффлайн
Регистрация
31 Дек 2018
Сообщения
478
Реакции[?]
140
Поинты[?]
3K
Нужно указывать полный путь к DLL, а не просто название с расширением.
Код:
CHAR szDllPath[MAX_PATH];
DWORD dwBytesReturned = GetFullPathNameA(lpDllName, MAX_PATH, szDllPath, NULL);
 
Пользователь
Статус
Оффлайн
Регистрация
31 Дек 2018
Сообщения
478
Реакции[?]
140
Поинты[?]
3K
при распаковке она загружается на диск , мне же нужно избавиться от этого и что бы она с ресурса проекта сразу инжектилась без распаковки
тогда используй другой способ инжекта, LL тут не подойдет
UPD:
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Начинающий
Статус
Оффлайн
Регистрация
20 Апр 2020
Сообщения
15
Реакции[?]
1
Поинты[?]
0
CCCV
Пользователь
Статус
Оффлайн
Регистрация
26 Сен 2018
Сообщения
388
Реакции[?]
82
Поинты[?]
2K
Товары в продаже
1
Сверху Снизу