Забавно, я ответил на вопрос не так давно о получении адреса конструктора C++, говорящего, что это невозможно, поэтому вместо этого используйте совершенную переадресацию. Однако, с точки зрения обхода с использованием библиотеки Microsoft Detour, это не вариант. Адрес -, необходимый для обхода любого вызова. Итак, теперь я должен задать вопрос, если нет адреса конструктора, можно ли даже объединить его? И если да, то как?Есть ли способ обхода конструктора C++?
0
A
ответ
0
Не уверен относительно MS Detour, но я обычно подключаю обход вручную с помощью встроенной сборки на C++. Если код (экземпляр конструктора) отображается в памяти, и вы можете записать его в эту область памяти, тогда можно будет обходить .
- Основной механизм зацепления крюка - найти место для замены исходного кода операции JUMP на вашу пещерку кода. Если код JUMP не соответствует размеру исходного кода операции, заполните его NOP.
- Выполнить оригинальный опкод в коде пещере
- PUSHAD & PUSHFD
- Делать все, что вы хотите с помощью глобальных переменных (рекомендуется)
- Вызов любой пользовательской функции без PARAMS
- POPFD & POPAD
- Перейти назад к исправленному операционному коду (умение несколько байтов NOPS)
Для первого шага o btain адрес экземпляра конструктора, вам нужно искать его динамический адрес либо с помощью ReadProcessMemory, либо любым способом. Я объединил функцию из DLL, загружаемой динамически. Чтобы получить эту функцию, я использую HANDLE tempHandle = GetModuleHandle((LPCWSTR)"DLLFileName.dll");
и перехожу по смещению дескриптора DLL.
Смежные вопросы
- 1. Есть ли способ обхода #define, представленного поставщиком?
- 2. Есть ли способ обхода заголовка plot.svm hardcoded?
- 3. Принудительное использование mapply Есть ли способ обхода
- 4. Есть ли способ обхода дерева, созданного React?
- 5. Есть ли способ обхода проблемы UpdatePanel + Server.Transfer?
- 6. Есть ли способ обхода метода reportFullyDrawn()?
- 7. NReco потокобезопасен? Есть ли способ обхода? в C#
- 8. Множество параметров конструктора. Есть ли лучший способ?
- 9. Есть ли способ инициализировать поля из конструктора в C#?
- 10. Есть ли чистый способ конвертировать аргумент конструктора конструктора C# 'params object []' в конструктор C++?
- 11. Есть ли способ обхода работы операторов класса для встроенных типов
- 12. Есть ли способ обхода пути «return» из метода forEach?
- 13. Простой html dom file_get_html не работает - есть ли способ обхода?
- 14. VS 2010: Есть ли способ обхода решения для администратора?
- 15. Есть ли способ обхода моего родного приложения для Android
- 16. Есть ли способ обхода сайта с формой POST?
- 17. Есть ли способ обхода неподдерживаемого IParameterizedType в Fluent NHibernate?
- 18. Есть ли способ обхода ERR_INSECURE_RESPONSE без покупки сертификата SSL?
- 19. Есть ли способ обхода проверки подлинности для локальных запросов?
- 20. Есть ли способ обхода ограничения типа Mongo _id?
- 21. В JSFL есть ли способ обхода для BitmapItem.sourceFilePath?
- 22. auto foo (...) -> decltype (this) Есть ли способ обхода?
- 23. Есть ли простой способ обхода CSS для нескольких префиксов браузера?
- 24. Способ обхода размера стека
- 25. Есть ли способ узнать, вызваны ли мы внутри конструктора?
- 26. Есть ли короткий способ создать экземпляр класса с параметрами конструктора?
- 27. Есть ли способ предоставить параметры конструктора для общих экземпляров?
- 28. C++ - Есть ли способ перегрузить назначенные инициализаторы?
- 29. Эффективный способ обхода массива?
- 30. Effiecint способ обхода сайта
Конструктор имеет адрес памяти (это исполняемый код afterall, поэтому он должен находиться * где-то * в памяти). Вы просто не можете использовать оператор '&' для получения этого адреса (стандарт языка запрещает его). Но, если вы знаете, как ваш компилятор излагает структуру класса в памяти, вы, вероятно, можете получить адрес конструктора с помощью «креативных» средств. Но я бы не советовал. –
Ну, @RemyLebeau, кажется, что * creative * должен был стать для вас. Я знаю, что это *** определенно *** не будет переносимым, и я не ищу его. До тех пор, пока он работает под компилятором MS C++, я был бы счастлив. – Adrian