

partoftheworlD
Пользователи+-
Постов
2 687 -
Зарегистрирован
-
Посещение
-
Победитель дней
172
Тип контента
Профили
Форумы
Загрузки
Блоги
Весь контент partoftheworlD
-
Можешь сохранить трейслог и открыв его в текстовом редакторе искать что нужно
-
Но, есть же f.lux.
-
Это довольно не простая тема, поэтому в идеале необходимо знать ООП, так будет проще воспринимать устройство инвентаря. В фолаче 4-м вроде нет ячеек, это просто список указателей внутри массива. Если игра написана с использованием виртуальных методов, то для поиска предметов и инвентаря в целом можно использовать RTTI, если нет, придется делать все ручками. По RTTI есть статьи на форуме. А поиск руками, тут все достаточно нудно. Для начала инвентарь лучше забить предметами, которые скорее всего имеют общий родительский класс, ну например CWeapon, который содержит разные характеристики, которые CAK47 будет наследовать, но раз родитель общий, то и все остальные оружия, например CM16A3, тоже будут их наследовать. Получается, первый шаг это восстановить, хотя бы пару наследуемых значений например количество патрон и что-нибудь еще, чтобы в дальнейшем, можно было накладывать этот шаблон под разные указатели и проверять, является ли он каким-нибудь оружием. Из утилит подойдет ReClass, но в принципе хватит и CE. Второй шаг, найти указатель на структуру оружия, например базовый адрес 0xDEADBEEF, адрес патрон 0xE0. С этим справится обычный поиск, переводишь его в HEX вставляешь базовый адрес и ищешь. Получишь некое кол-во адресов. Каждый из которых нужно будет проверить, пока не найдешь, то что нужно. Третий шаг, проверяешь с помощью шаблона ближайшие адреса от найденных на втором шаге, чтобы восстановленное смещение в шаблоне на разных указателях указывало на патроны, а так же чтобы количество лежащих рядом указателей было таким же как и количество оружия/предметов в инвентаре. В упрощенном виде цепочка указателей выглядит примерно так: CWorld -> CLevel -> EntityArray[playerID] -> CActor -> CInventory -> CInventorySlot -> SlotArray[slotID] -> CWeapon -> ammo
-
Посчитай на бумажке как формируется eax, смотря по инструкциям, которые были выше.
-
Ищется так же как и любое другое значение в памяти. Не можешь найти скорость, значит ищи, то что можешь, например координаты, от них можно восстановить код и выйти на кусок кода работающий с расчетом координат, от него выходишь на дистанцию, от дистанции на скорость, от скорости на forward vector и т.д.
-
Это самые основы, которые даже есть в видео-уроках, а именно стек вызовов и многоуровневые указатели(ручной способ).
-
Это и так самое простое, проще только идти в песочницу и лепить куличики.
-
Сейчас нашлось свободных 10 минут, вот что нашел. В игре используется типичный switch/case, как первый вариант фильтрации просто использовать номера кейсов "если номер кейса равен n, то положить указатель в ...". Второй вариант продолжить искать инструкции формирующие указатель, он будет уровнем выше. И из-за этого раздули тему на целый десяток сообщений.
-
Да очень просто, восстановлю алгоритм получения указателей и буду с помощью цикла получать только то, что мне нужно, а не перебирать все подряд и отсеивать с помощью исключений. Тем более поиск указателей не так уж и сложен, чем разбираться во внутреннем устройстве SEH.
-
https://raw.githubusercontent.com/EiNSTeiN-/idapython/master/examples/ex_graph.py
-
Подключение к питону происходит с помощью: import idc import idautils import idaapi У меня есть наработки некоторые, возможно что-то пригодится. В выводе получим Надо будет поправить пару строк, чтобы выводилась не функция целиком, а как при трассировке: for j in [i for i in self.range_reverse(current_function.endEA, current_function.startEA)]: Если нужно, вечером могу поискать, где-то был код для постройки графов.
-
Когда же люди научатся читать журналы изменений.
-
смотришь в документации объявленный счетчик срабатываний брейкпоинтов( $breakpointcounter), выбираешь вкладку трассировка, выбираешь тип трассировки с заходом или без захода в вызовы, появляется окошечко и туда вписываешь любые условия, для остановки, если остановка случилась, то что необходимо сделать и т.д. Вот пример, трассировка начнется, если счетчик срабатываний инструкции будет больше 1000. Вот еще пример, дампера значений с инструкции, там про трассировку с условием более подробно и надеюсь понятно написано.
-
Есть видео уроки, а так же книги , а так же документация, так что информации полно. Например, OALabs. Уроки и книги по крутым инструментам для отладки обычно у малварщиков, а как применить их, это уже дело фантазии, в случае чего, существует туева хуча уроков по ollydbg в том числе и на русском, если знаешь olly, то проблем с использованием x64dbg не будет. Интерфейс у них похожий, плюс есть поддержка различных языков, так что даже методом "тыка" можно разобраться за минут 30. CE представляет из себя комбаин из всего что только есть, но вот реализация не самая удачная и тут встает единственный вопрос, готов ли ты тратить на какое-то дело некое количество времени, чтобы написать костыли в CE, когда существует готовое решение, делающее то, что тебе нужно в один клик.
-
Как вариант, не заниматься ерундой, а использовать специально заточенные для отладки инструменты. Например, в x64dbg этот счетчик остановок вынесет в отдельную переменную ($breakpointcounter) для доступа к ней, или Windbg. CE не подойдет для чего-то серьезного как ни крути.
-
Создай отдельный аккаунт на Mega, чисто для трейнеров, там будет доступно 50гб и ссылки на файлы не полетят, пока аккаунт или файл не удалишь. Есть
-
Вроде бы у CE не счетчика остановок, поэтому придется делать свой с помощью скрипта. cmp [debugCounter],#99 jne doSomething ... inc [debugCounter] jmp original_code doSomething: ... inc [debugCounter] jmp original_code
-
Он снимается как upx, достаточно поставить бряк на popad. Распакованная версия, но без зачистки сегментов ASPackа https://dropmefiles.com/pz7Lo
-
Да, это странно, потому что, вчера когда писал пример проверял на скайриме никаких проблем не было, фпс не просаживал, все так же плавно было. Могу предположить, что проблема в алгоритме, либо в самой игре, возможно у неё есть собственный обработчик исключений, который что-то с ними делает. И наверное было бы лучше просто убить эту защиту. Способ с asm вставками не будет работать если игра x64
-
Возможно, это подойдет. На счет VirtualProtect не уверен, но вроде он здесь нужен.