-
Постов
160 -
Зарегистрирован
-
Посещение
-
Победитель дней
4
Тип контента
Профили
Форумы
Загрузки
Блоги
Весь контент Dino
-
Скорее всего защита еще и список модулей мониторит
-
дальше либо защиту снимать, либо забивать на эту игру
-
Предположу что там установлена защита целостности памяти. Попробуй пустой хук поставить( без внесения свое кода)
-
Скрипт - это и есть то что ты пишешь, так что вылет происходит именно с твоей подачи. Что касается отладчика, это вообще отдельный разговор , наивно верить, что все проблемы сопровождаются одной причиной. кинь ссылку на игру
-
Ты понимаешь что вопрос задан не корректно? И тебе никто из присутствующий здесь не даст корректного ответа, потому что попросту не поймут чего ты хочешь сделать. Но хорошо хоть скрипт привел, так бы и сказал что пишешь фильтр объектов. Задача в принципе тривиальная, на ютубе этой информации пруд пруди. Если не получается сразу два объекта отфильтровать, то пиши сначала для одного
-
Суть в чем? В том чтобы найти два нужных тебе адреса?Почему два , а не три или один ? Зачем тебе их нужно найти? Что подразумевается под словом "нужные"? Работает что? Поиск адресов? Вылетает из-за чего? Из-за поиска адресов? Вылетает после установки breakpoint или после N-го количества step'ов ?
-
Проверь функции LdrLoadDll, LoadLibraryA, LoadLibraryW, LoadLibraryExW, LoadLibraryExA =) Если в них ничего подозрительного не найдешь, то скорее всего стоит защита от CreateRemoteThread
-
да кому он нужен хахах
-
ага ты прав.. А все из за того что я трамплин не из того места вызываю Вот исправленный вариант: Dllmain.cpp(код твоей Dll, которая должна быть загружена в игру) Asm файл(так же должен быть включен в проект с Dll !)
-
Вот на примере игры сапер Win7 x64, при нажатии на кнопку "О программе" она будет отправлять через пайп содержимое регистра RAX в твою программу Main.cpp (код твоей программы) Dllmain.cpp(код твоей Dll, которая должна быть загружена в игру) Asm файл(так же должен быть включен в проект с Dll !) Код для загрузки Dll в стороннее приложение можешь найти где угодно, поэтому не вижу смысла его здесь приводить.
-
код хука нужно писать в самой dll, чтобы не было проблем с релоками и импортами, так что предлагаю отказаться от VirtualAllocEx
-
Для начала читаешь о межпроцессорном взаимодействие, затем когда определишься какой метод будешь использовать можешь писать хук. Задача хука - прочитать содержимое регистра и отправить его твоей программе. Задача твоей программы - получить и обработать посылку. Естественно все это должно происходить синхронно.
-
была бы RPG быть может что-нибудь и посоветовал бы, но это шутан да еще и браузерный, так что я пас..
-
у игры жанр есть?
-
Ну не зря же всегда на MSDN отправляют , когда речь заходит о WINAPI функциях ) MessageBox как раз из их числа.
-
Если из CE, то это не раз размусоливалось
-
Какова твоя задача?
-
хз, такие вещи надо под отладчиком исследовать, туториал не лучший подопытный, чтобы начать разбираться
-
Я конечно польщен что специально для меня записываются видео, только зачем вырывать фразы из контекста, не видя всю картину целиком? https://youtu.be/qNG4qiEdQTk?t=53 ты не можешь остановить поток, потому что ты его не создавал Почему у тебя не вылетает? По ряду причин, допустим ГЛ поток выбрасывает исключение, быть может @DarkByte предусмотрел такое извращение с кодом, на то он и туториал.. У @MasterGH кстати годная статья для того времени, но там не описаны важные аспекты, на чем новички и спотыкаются пытаясь реализовать подобное В общем делай как знаешь и учи людей по этим ошибкам, раз читаешь между строк.
-
Если понимаешь, то как по твоему может выполниться только одна инструкция? Или мб он какой-то другой с твоей точки зрения? И да, я первый раз был не столь внимателен, потому что у тебя еще один косяк Все твои действия выполняются из ГЛ потока программы, ты хукаешь инструкцию, которая крутится в бесконечном в цикле, но только вот своим ret ты преждевременно выходишь из функции(которую захукал) не дав программе выполнить последующий код, в результате повреждение стека , регистров и краш. Но эта ошибка не имеет смысла потому что ты уже убил программу раннее.)
-
да конечно рас http://trubetskoy1.narod.ru/arttranslate/FuncCallPart1.html два http://trubetskoy1.narod.ru/arttranslate/FuncCallPart2_1.html три
-
Ясень пень такой код будет крашить нормальную программу, видимо автор видео не понимает механизм работы call call запихивает в стек значение регистра EIP+<длина инcтрукции call> и выполняет весь код начиная с указанного адреса пока не дойдет до инструкцию ret. Инструкция ret извлекает из стека этот адрес, чтобы выйти из функции и продолжить выполнять последующий код. Так же почти в каждой функции есть код пролога и эпилога, а если функция еще и использует локальные переменные, то нужно выделить память на стеке, а в конце подчищать стек. А тк @Garik66 вызывает функцию где-то с середины, то у него выполняются только последние действия чистка стека и код эпилога... То есть в этом случае 100% был поврежден стек и большинство регистров
-
Это все вода. Первостепенными задачами щас являются 1. найти начало вызова функции(Угарнул что DB на этот счет придумал "Select current function", задача то тривиальная) 2. определить соглашение о вызове, чтобы понять как передаются аргументы через стек/регистры или и то и другое. И должен ли вызывающий поток подчищать за ней стек 3 .Определить количество переданных аргументов - например если функция является членом класса, то указатель неявно передается первым аргументом, на что многие думают, мол функция не принимает никаких аргументов, а на самом деле нифига. вот это основа, а об оптимизации можно задуматься после.
-
Чем это создание потока отличается от того что упоминалось выше? И куда ему поток вешать, если он даже начало функции не может найти