Перейти к содержанию

partoftheworlD

Пользователи+
  • Постов

    2 687
  • Зарегистрирован

  • Посещение

  • Победитель дней

    172

Сообщения, опубликованные partoftheworlD

  1. 9 минут назад, Garik66 сказал:

    Делаю скрипт из неё, добавляю 3 байта (59 89 С3 - смотри в отладчике столбец байты) к адресу который нашел аобскан и не забываю про выравнивание нопами, получаю такой скрипт:

     

    Только ты забыл написать, что надо ещё байты на восстановление изменить, а то в скрипте то сделал, но не объяснил.?

    • Спасибо 1
  2. 36 минут назад, Andymit сказал:

    получается, что чем длиннее сигнатура, тем меньше вероятность появления такой же где-то ещё?

    Не всегда, можно ведь сделать уникальную сигнатуру на соседнюю инструкцию, а после получения адрес инструкции, сложить/отнять количество байт с адресом до нужной тебе инструкции.

     

    AOB(89 86 ? ? ? ? 41 F7 86 ? ? ? ? ? ? ? ? 74 0B) = 00000001410691C7 (адрес уникальной инструкции, рядом с нужной черная линия)

    0x1410691C7 + 30(байт) = 0x1410691E5 (адрес нужной инструкции, красная линия)

     

    image.thumb.png.c00ebd36a085dd8de6e8993933482d55.png

     

    Количество байт между инструкциями может быть любое, но не стоит использовать дистанцию между инструкциями больше 100-150 байт. 

  3. 9 минут назад, PresetX сказал:

    как мне в играх искать присвоенные значения пушек (скорострельность, урон) без изучения самого кода игры?

     

    В нормальных играх никак, в играх написанных на Unity, Microsoft XNA использовать модуль Mono в CE, либо dnSpy, а после искать название интересующего класса. Хотя это ведь тоже считается изучением кода, так что никак. Ещё можно попробовать с помощью поиска неизвестных значений, но это долго и нудно, мало кто использует этот "дедовский" метод.

  4. 20 минут назад, PresetX сказал:

    Часто натыкался в играх на невозможность найти статический адрес и указатели к нему, поэтому хотелось бы узнать, как вручную находить AOB

     

    1. Находишь ручным способом указатель
    2. Делаешь сигнатуру на статический адрес.
    3. Profit.

    Видео по ручному поиску указателей, есть на канале gamehacklab[Ru] или на канале кенга.

  5. В 14.10.2018 в 10:44, Garik66 сказал:

    Альфа протокол

     

    В 14.10.2018 в 08:20, nedix сказал:

     

    Пока выбрал эти 2 игры, сегодня/завтра будут уже наброски статьи, постараюсь описать общие принципы работы и поиска.

    C визуальными новелами будет по проще, если они используют Unity.или RenPy

    upd

    Katawa Shoujo написана на RenPy и весь исходный код открыт.

  6. 1 час назад, vagingameh сказал:

    Process Hackerom сам ковырял. Ничего.

    И причем и зачем тут Process Hacker?

    Все понял, прочитал сообщения выше.

     

    1 час назад, vagingameh сказал:

    Я не против! Это вообще не проблема для меня.  Любые требования и программы(Тим вивер, скайп). Достало уже.

    Ну после того как допишу статью, то посмотрю что там с драйверами.

     

  7. 45 минут назад, Stigmaer сказал:

    вот именно!! Зачем мне ссориться с модераторами. Если меня сейчас не услышали мне не хочеться навязывать! вдруг разозлю!

     

    Если есть предложения по работе форума, то стоит написать сюда 


    Если есть желание пообщаться, то можно зайти в дискорд. А офтопить в чужой теме, на стороннюю тему плохо. 

    Тему закрываю.

  8. http://bfy.tw/KLvX

    Не уже ли это так сложно?

    Хочешь массив, используй контейнер (std:vector), чтобы загрузить используй функцию push_back

    http://www.cplusplus.com/reference/vector/vector/push_back/

     

     

    59 минут назад, pachela сказал:

    Согласись, полностью изучать язык для этой цели, минимум глупо, а когда еще и времени нет, так это вообще тупо.

    Полностью? Для твоей задачи достаточно знать синтаксис и уметь искать информацию в мсдн.

     

    59 минут назад, pachela сказал:

    С++ для меня слишком круто, 2-3 часа в неделю, слишком мало, для его изучения.

    30 минут достаточно, работа с файлами это самые основы, которые идут после изучения синтаксиса.

  9. 14 минут назад, Garik66 сказал:

    Может не помочь.

    Я не про обычный таймер, а про QueryPerformanceCounter, в любом случае, у каждого разработчика разная реализация и разные способы работы диалогов.
    Где-то можно отменить очистку рисующего текст буфера, либо найти цикл воспроизведения диалогов, где-то проверку (сработал ли, диалог), а где-то текст в памяти и выводить его в отдельную консоль/на экран, что-то типа логирования диалогов, которые игра уже отработала. Или поверить в удачу и останавливать потоки во время диалогов и катсцен.?

     

    Если не знаешь как это работает и что надо искать, то советую посмотреть пару игр с открытым исходным кодом, где существует реализация диалогов, так можно найти что-то общее между способами(например, выделение памяти на диалог).

     

    Если кому-то будет интересно, то могу написать статью, но предлагайте игры, чтобы статья не получилась на 2 параграфа и можно было бы рассмотреть разные варианты реализации.

  10. Для шаблона Read/Write советую использовать передачу смещений через неопределенное количество аргументов, это в разы уменьшит потраченное время в будущем.

     

    Спойлер
    
    template<typename type, typename... Args>
    type read_mem(Args... args)
    {
    	DWORD buffer = module_base;
    
    	auto get_pointer = [](auto offset) {
    		ReadProcessMemory(this->hProcess, reinterpret_cast<PBYTE*>(buffer + offset), &buffer, sizeof(type), 0);
    	};
    
    	(get_pointer(args), ...);
    
    
    	return buffer;
    }
    
    read_mem<DWORD>(0x11, 0x255, 0xCF59, 0x10, 0x25);

     

    и в коде после объявления указателя класса mem не хватает delete mem.

     

    • Понравилось 3
  11. 2 часа назад, Andymit сказал:

    1. Объясните, пожалуйста, как такое может быть, что я показал на скринах? Почему при уроне во второй раз на адрес здоровья обращались другие, но вроде как идентичные инструкции?

    Бряк на доступ же стоит, т.е одинаковые инструкции могут проскакивать например для перевода реального значения в визуальное.

     

    2 часа назад, Andymit сказал:

    2. Может ли быть такое, что истинное значение здоровья и экранное имеют разный тип (float и  int)?

    Да

     

    2 часа назад, Andymit сказал:

    3. Возможно ли, что я нашел не истинное значение здоровья, т.к. breakpoint на запись на него не срабатывал? (Хотя при изменении этого значения менялось и экранное и в самой игре собственно здоровье реагировало).

    Возможно. Если игра на юнити, то может помочь модуль Mono, включив его получишь подписанные функции.

  12. В 03.10.2018 в 18:55, Pigsy сказал:

    (многие персонажи в игре обладают бессмертием, а мой чем хуже!?

     

    Он главный и должен умереть, если не хочешь делать мемстримные скрипты в CE, то ковыряй игровые скрипты, декомплируй их, переписывай под себя. Как пользоваться инструментами для создания модов можешь нагуглить. 

  13. 9 часов назад, A1m сказал:

    а возможно посредством CE (или чего нибудь другого) произвести перемещение игровых объектов

    Да

     

    9 часов назад, A1m сказал:

    Есть подобный видео уроки?

    Нет

  14. 31 минуту назад, SerVick сказал:

    как с подобными вещами в обще можно бороться?!

    Использовать какие-нибудь перки которые влияют на хп/урон. В случае чего можно восстановить код и посмотреть как он работает, не думаю что это сложно.

  15. 1 час назад, Dupper сказал:

    Как найти "подобие активации скилла(спелла) через запись памяти

     

    Искать обработчик нажатия клавиш, это оптимальный вариант, только если умеешь реверсить.

    Не известно как разработчик решил её сделать, может использовал GetKeyState или 

    Спойлер
    
    switch (message)
        {
        case WM_KEYUP:
        	case WM_KEYDOWN:
            switch (wParam)
            {
            case VK_LEFT:
            	...
        case WM_KEYDOWN:
            switch (wParam)
            {
            case VK_LEFT:
            	...
        case WM_CHAR:
            switch (wParam)
            {
            case VK_LEFT:
            	...

     

    Это все проверять надо, а если не повезет, то придется через потоки искать функцию обрабатывающую нажатия клавиш.

    Если все же хочешь через память делать, можешь попробовать зажимать клавиши и искать неизвестное, отпускаешь клавишу - изменилось и продолжаешь, пока не найдешь что-нибудь (главное зажимать 1 клавишу, возможно у каждой клавиши свой адрес, который просто получает её состояние). Возможно повезет.

     

    В разы проще будет использовать SendInput.

  16. 17 минут назад, nedix сказал:

    Я прошел все туториалы в CE и решил игровые задачи. Знаю AHK и теперь познакомился с Lua.

    Это к слову, чтобы не было недопонимания.

    Знаю как находить и находил статический адрес через поинтер скан или через поиск значений.

    Адрес я нашел:

     

     

    Это все хорошо, но что на счет знаний об устройстве памяти?

  17. 14 часов назад, Pigsy сказал:

    На первом же просеве результат = 0.

    Ты либо не читаешь, то что тебе писали выше, либо не хочешь делать по нормальному.

    Я тебе писал как найти урон и это 100% способ, если не знаешь как реверсить, то может пора воспользоваться поиском по форуму и найти статьи для продвинутых/записи в блогах, чтобы прокачать свои знания.

     

    Просто тема раздута из ничего 19 сообщений в теме и 0 результата.

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.