partoftheworlD

Модераторы
  • Публикации

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

  • Посещение

  • Days Won

    83

partoftheworlD last won the day on September 30

partoftheworlD had the most liked content!

Репутация

468 Structure hunter

9 подписчиков

О partoftheworlD

  • Звание
    potato

Контакты

  • Сайт
    https://www.youtube.com/channel/UCCtJ20nWY7nGqCO5guv8-Jg

Информация

  • Пол

Посетители профиля

6 858 просмотров профиля
  1. Если подробней, то существует какой-то вызов шаблона или же скрипта который говорит игре чтобы она создала объект(юнита) и задала ему параметры типа здоровья, количества гранат, всякие характеристики типа скорости передевижения ну и конечно же тип оружия. Шаблон: Game::Event::CreateObject(DWORD *Unit, DWORD *Weapon,vec3 vecCoords,vec3 vecRotation) Вызов: Game::Event::CreateObject(Unit_HeavySolder, Rpg, vec(124.4f, 54.f, 11.f), vec(1f , 1f, 0f)) Перехватив подобный вызов, ты сможешь самостоятельно создавать юнитов где и с чем пожелаешь. Чтобы изменять характеристики, нужно зареверсить структуру (Unit_HeavySolder или Rpg), либо же создать собственную и передавать вызову её.
  2. С игрой можно сделать все что угодно, хоть превратить юнитов в коробки или сделать минное поле из кустарников. Единственное ограничение навыки взломщика и конечно же опыт.
  3. radare2 2.0.0 16799 @ windows-x86-32 git.2.0.0 commit: d4ab235a7401612e80208e5cdf8c56a04713a587 build: 2017-10-09__17:29:12 http://radare.mikelloc.com/get/2.0.0/
  4. Да там по командам и методом тыка изучать, просто потребуется время чтобы все это перевести. Если вкратце, то добавили интерфейс(V!) типа тайлового менеджера окон, быстрый поиск по дизассемблированному коду(pd~...) игру 2048 как пасхалку .
  5. Это доказывает криворукость разработчиков, можно на шарпе в связке с юнити писать достаточно оптимизированные приложения. Скорее всего это отражение реальной структуры, да и не стоит на юнити использовать указатели это работает очень редко. Ручной поиск указателей, а дальше реверсить в сторону глобальных переменных находить откуда берется адрес главной структуры и делать на него сигнатуру.
  6. По индексу функции в виртуальной таблице
  7. Перегрев скорее всего, обычно от него появляются артефакты.
  8. Если составлена уникальная сигнатура, то в памяти ни как не может быть ещё одна такая же. И не обязательно делать сигнатуру на ту инструкцию которая тебе нужна.
  9. Типа ты в собственном приложении создаешь устройство для рисования, а после получаешь указатель на него, а ТС как я понял хочет использовать указатель на устройство который использует игра для рисования, тогда отпадает необходимость в оверлеях и прочем..
  10. Может за тебя ещё все сделать? В чем проблема прочитать статью, немного подумав написать свой алгоритм нахождения адреса устройства?
  11. Попробовав воспользоваться поиском.
  12. На листочке, чтобы не потерять Может определить откуда берется картинка или название, выйти на функцию которая все это дело получает, а дальше в цикле скармливать функции id и хук для вывода информации по скормленному id
  13. Может и текста не существует и это лишь картинка которая устанавливается, если есть определенный id предмета.
  14. Спустя 3 года...
  15. Раз в последнее время я ооочень разленился и не несу никакой пользы форуму, то вот статейка, вдруг кому поможет. Это статья посвящается всем ленивым. И так, для начала необходимо будет установить r2pipe с помощью которого через скрипт будем общаться с радаром. pip install r2pipe Для динамической отладки потребуется создать профиль отлаживаемого приложения сохранив его с расширением .rr2. program=./binary #отлаживаемая программа stdin="arg" #аргументы stdout= #вывод А теперь можно начать автоматизировать. import r2pipe r2 = r2pipe.open("./binary") #запускаем приложение которое будем отлаживать r2.cmd("e dbg.profile=profile.rr2") #устанавливаем профиль r2.cmd("doo") #передаем команду doo которая запускает отладчик r2.cmd("db address") # ставим бряк на адрес r2.cmd("dc") # и продолжаем отладку Это конечно круто, но чего-то не хватает. Хм...а давайте прикрутим трассировку. import r2pipe r2 = r2pipe.open("./binary") #запускаем приложение которое будем отлаживать r2.cmd("e dbg.profile=profile.rr2") #устанавливаем профиль r2.cmd("doo") #передаем команду doo которая запускает отладчик r2.cmd("db address") # ставим бряк на адрес r2.cmd("dc") # и продолжаем отладку def trace(): r2.cmd("dsu 0xd3adbeef") #шагаем до адреса 0xd3adbeef Здорово, ну, а теперь надо как-то получать информацию. Для этого используем вывод в json формат и немного магии. Команда pdj выводит инструкцию опкоды и всякое такое в формате json т.е. так: [{"offset":4225009,"esil":"edi,edi,=","refptr":false,"fcn_addr":0,"fcn_last":0,"size":2,"opcode":"mov edi, edi","bytes":"8bff","family":"cpu","type":"mov","type_num":9,"type2_num":0,"flags":["entry0","eip"]}] Идеально, теперь будем выводить эту информацию в нашем трейслоге и значения регистров. import r2pipe r2 = r2pipe.open("./binary") #запускаем приложение которое будем отлаживать r2.cmd("e dbg.profile=profile.rr2") #устанавливаем профиль r2.cmd("doo") #передаем команду doo которая запускает отладчик r2.cmd("db address") # ставим бряк на адрес r2.cmd("dc") # и продолжаем отладку def trace(): r2.cmd("dsu 0xd3adbeef") #шагаем до адреса 0xd3adbeef current_instruction = r2.cmdj("pdj 1")[0] #получаем словарь diff_regs = r2.cmd("ard") #получаем изменившиеся регистры print(current_instruction['opcode'] + '-' + diff_regs) #выводим текущую инструкцию и изменившиеся регистры if hex(current_instruction['offsets']) == '0xd3adbeef': #как достигнем "мертвой говядины" , то выходим из цикла break while True: trace() Вот такой легкий модифицированный вариант трассировки в radare2 для особо ленивых. На выходе получаем: mov edi, edi - eip = 0x004077f1 call eax - eip = 0x004077f3 test eax, eax - eax = 0x00000001, ebp = 0xcf457840, esp = 0xcd84457d, eip = 0x004077f5 А дальше дело вкус, хочешь сравнение структур запили, хочешь чтобы пока трассировка проходила радар тебе телевизор включал или еще чего, все зависит от фантазии. И да, радар мощнейший инструмент в руках реверсера, грустно признавать, но он даже мощнее IDA. Если кому будет интересно под спойлером видео о дампе расшифрованных в памяти бинарниках и их патче для последующего запуска бинарников как отдельного приложения деланного с помощью установленного на iPhone radare2(мне кажется с появлением таких тулз будут появляться все больше читов для игр под iOS, как раз запланировал сделать aimbot под одну ios игрушку, но жду джейлбрейка )