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

RockHammer

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

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

  • Посещение

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

    7

Весь контент RockHammer

  1. Реверс-инженеринг? Я просто видел кое что подобное... В чите на PayDay2. Это было гениально! Они перехватили функцию игры, которая выдает сообщения. Тем самым, сделали очень красивое меню) Плюс, там была функция: пополнить боезапас, восстановить жизни и броню и все такое. Когда нажимаешь хоткей - такая приятная надпись вылетает, боеприпасы пополнены) Видно, что игровая функция)) Можно поподробней, как это осуществить?)
  2. Версия uplay (от 14.01.2015)

    54 раза скачали

    Таблетка: нет (Лицензия) Опции: Крафтинг [AOB-nop] (все спец-оружие, вроде блек-аута, генератора помех, СВУ и прочее + обоймы в оружии не отнимаются) Концентрация [AOB-nop] (замедление времени, ctrl. Сама шкала не отнимается, но может восполнятся. Круто, правда?)) Зарядка мобильника [AOB-nop] (эти огрызки так слабо держат зарядку... Моя таблица - решает эту проблему!)) Очки навыков = 99 [AOB-Injection] (на самом деле, в скрипте 100, но, видимо, игра выставляет максимальное значение - 99) Деньги [Poiner] (деньги и очки навыков очень тесно связаны. Поэтому нельзя взломать одно, не повредив другое. Однако, я нашел указатель. В трейнере можно увеличивать значение указателя, при нажатии хоткея. Это плюс ко всему, еще и быстрее, чем aob) Примечание к таблице: при поиске зарядки мобильника мне выскочило около 15 адресов с очень разными показаниями, никак не связанные между собой. Я хакнул один из них. На некоторых миссиях, значение зарядки может отниматся (на одной и последних) - но это не критично. Я не стал слишком жестко уродовать игру, т.к. остальные "фичи" могут подпортить удовольствие от игры. Это - самое основное.
  3. Да, да. Есть такое. Бывали даже баги, когда метка заменяла адрес, а назад не хотела уничтожатся. Неплохой скрипт, спасибо)
  4. Ничего себе... [ENABLE]alloc(newMem17, 1024)label(returnHere17)label(coordX17)label(coordY17)label(coordZ17)label(OK17)label(Load17)label(SaveLoadCoords17)registersymbol(SaveLoadCoords17)newMem17:cmp eax,18F4A0 // инструкция работает с несколькими адресами, поэтому фильтр. //cmp byte ptr [esi+014f],14 // можно поставить и этот (вроде бы при нескольких перезагрузках jne OK17 // игры, оба варианта фильтра - постоянны). cmp byte ptr [SaveLoadCoords17],1jne Load17push edxmov edx, dword ptr [esi+000000D0]mov dword ptr [coordX17],edxmov edx,dword ptr [esi+000000D4]mov dword ptr [coordY17],edxmov edx, dword ptr [esi+000000D8]mov dword ptr [coordZ17],edxpop edxmov byte ptr [SaveLoadCoords17],0jmp OK17Load17:cmp [coordX17],0je OK17cmp byte ptr [SaveLoadCoords17],2jne OK17push edxmov edx, dword ptr [coordX17]mov dword ptr [esi+000000D0],edxmov edx, dword ptr [coordY17]mov dword ptr [esi+000000D4],edxmov edx,dword ptr [coordZ17]mov dword ptr [esi+000000D8],edxpop edxmov byte ptr [SaveLoadCoords17],0jmp returnHere17OK17:fstp dword ptr [esi+000000D8]jmp returnHere17coordX17:dd 0coordY17:dd 0coordZ17:dd 0SaveLoadCoords17: // Добавим в таблицу адрес с адресом "SaveLoadCoords17" иdb 0 // названием "0 - ничего, 1 - сохранить координаты, // 2 - телепортироваться"Fallout3.exe+50DDC4:jmp newMem17nopreturnHere17:[DISABLE]Fallout3.exe+50DDC4:fstp dword ptr [esi+000000D8]unregistersymbol(SaveLoadCoords17)dealloc(newMem17)
  5. Вроде да... [ENABLE]registersymbol(addr) //создаем метку addraobscan(addr, 12345) //тут функция aobscan. первый аргумент - название, второй - сама сигнатура, которую нужно найти addr: //описание метки addrNOPNOPNOP [DISABLE]addr: //возвращаем оригинальную инструкциюMOV EAX,EBXunregistersymbol(addr) //уничтожаем, сжигаем, истребляем, потрошим метку addr ))))Я правильно понял?
  6. Ии... Что, это все? Весь код? А он точно будет работать? Извини, просто как-то не верится) Так легко, и в тоже время так эффективно)
  7. [ENABLE]aobscan(AdresInGame4, d9xxxxxxxxxxxx83xxxxxxe8xxxxxxxx83xxxx83xxxx75xx85xx7dxx8bxxd9xxxxxx8bxxxxxxxxxxxxd9xxxxxx8bxxffxx6axxxx8bxxe8xxxxxxxx85xx74xx8dxxxxxxxxxxebxx33xx85xxxxxx74xx8dxxxxxxxxxxebxx33xxd9xxx xxxxx83xxxxd9xxxxxxd9xxxxxxd9xxxxxxxxe8xxxxxxxx83xxxxxxxxc2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxd9)alloc(newMem4, 64)label(returnHere4)registersymbol(AdresInGame4)newMem4://fstp dword ptr [edi+esi*4+00000324] // Просто нопим инструкцию и карма неjmp returnHere4 // падает, хотя и сообщение появляется. // Искать где появляются сообщенияAdresInGame4: // влом, да думаю и не нужно.jmp newMem4nopnopreturnHere4:[DISABLE]AdresInGame4:// Fallout3.exe+36E616fstp dword ptr [edi+esi*4+00000324]unregistersymbol(AdresInGame4)dealloc(newMem4) [ENABLE]Disrupt_b64.EntryPoint+1389822:nopnopnop [DISABLE]Disrupt_b64.EntryPoint+1389822:mov [rdx+0C],eax
  8. Добрый день. Продолжаю реверсить смотрящую собаку. Очень тупые инструкции. Инъекции не любят, свои "обязанности" после внедрения чужого кода не исполняют. Однако средство против этого гемороя все же есть. Убийство. Убийство помогло при взломе функции крафтинга) И очень сильно) Так вот, как бы "переделать" aobscan таким образом, чтобы он работал на нупах, а не на инъекции? P.s. все время делал его на инъекцию.
  9. Ооо! Спасибо большое!) Хотел пересмотреть этот фильм недавно, а название вылетело из головы))
  10. Но... Магия... Просто в том уроке, с MemReader я не заметил, когда его прописывали. Хотя смотрел до той отметки, когда он получался на видео.
  11. Зачем? Ведь можно до фантазировать) Ничего кроме MODULEENTRY32 game = { 0 }; не прописываю
  12. статья на английском, нашел на русском. Переключил на х64, теперь насколько я знаю, собирается проект под х64. Правда только дебаг, релиз не хочет. "Доступ к ликвидированному объекту не возможен" при компиляции. Ну да ладно, компилю в дебаге. Не думаю что это что-то меняет. tlhelp32 по прежнему не в какую. MODULEENTRY32 game = { 0 };printf("Process base: 0x%X, ", game.modBaseAddr);вот код. Прописал, конечно же, #include <tlhelp32>. При компиле выдается 0х0
  13. Я не игнорирую твою документацию, просто не каждую фразу с английского могу перевести... Так что же значит resultArray && maxcount? З.ы. как компилить в 64?
  14. P.s. через tlhelp32 не выходит получить modBaseAddr...
  15. Омг, ищи неизвестное! И дальше увеличилось/уменьшилось! Тебе тут, вижу, посоветовали искать сумму минут или секунд, но не думаю что это хорошая идея. Лучше искать неизвестное, так будет результативней. Счастья и здоровья тебе и твоей дочке
  16. Coder не разбирается в чем-то, связанном с программированием???))) Сейчас помоему магма вулканическая развергентся))) Ведь мы это делали, в том уроке с MemReader. BaseAddress, помнишь?)) Разве нельзя это переделать под этот, уже обновленный исходник? (чтобы работал на 32 и 64 бит и без разницы в какой кодировке)
  17. И еще... Можно как-то получать базовый адрес автоматически, а не ручками? А то он каждый раз меняется... P.s. игра определенно любит скрипты)
  18. Да, конечно DWORD MemReader::ReadPointer(DWORD base, DWORD* offsets, int count){ for (int i = 0; i < count - 1; i++) { base = Read(base + offsets[i], 4).toUINT32(); } return base + offsets[count - 1];} VirtualQuerryEx?
  19. Спасибо)) "Старому" исходнику новое описание ReadPointer не помогло, теперь ковыряю новый )) В нем, как я понял, FindPattern это поиск сигнатуры. Немного непонятно с предпоследним аргументом, resultArray... Что ему передавать в майне? Функция Write, что передавать аргументу destr? Примерный вариант перевода: Буффер адреса, где будут хранится байты. Либо у меня плохо с английским) Это буффер с байтами, которые будут записаны? Еще аргумент count и bytesWrited. count - это количество байтов, которое будет записано. А что тогда bytesWrited?
  20. Обновлено: Нашел другой указатель. Другой оффсет. Выдает опять последний оффсет из массива!!!
  21. Вот это по-философски... Я бы плюсик поставил, если бы он был у админов)
  22. Я тебе больше скажу, были целые серии видео уроков на тему сигнатур, в которых использовался как раз integer)
  23. При чтении указателей почему-то там где должен быть адрес - выводится последний оффсет в массиве! Кто знает, как исправить? На видео даже показал как и что делаю.
  24. Адрес будет хранится локально, в самой программе. Пользователь введет только значение.Полученные байты конвертируем в int32 (или нужный нам тип). Тут скорее нужно получить адрес (!) конечный по указателю. И его значение.
×
×
  • Создать...

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

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