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

Рекомендуемые сообщения

Всем привет. Увлекся я взломом этой игры, но понимаю как ломать только такие вещи, у которых есть явное число. Например жизни, статы, души, координаты, скорость. Или id предметов. Здесь все понятно. Но вот есть некоторые вещи, о которых мне известно, но не понятно как такое делают - например телепорт монстров с помощью бэкстаба. Если кто не в курсе, в этой игре такая механика удара в спину - когда происходит его анимация, то монстр телепортируется в стойку перед героем, даже если он уже успел отпрыгнуть, то все равно окажется перед вами. Само собой сам бэкстаб можно начать только оказавшись в упор к спине монстра. Мне же точно известно, что таким образом можно телепортировать к себе  монстров практически с любой точки карты, но что для этого искать даже не представляю. Была мысль, что рядом со спиной врага некий флаг становится равным "1", иначе "0", попытался отыскать его, нашел пару десятков подобных значений, но ни 1 не помог, тут явно что-то более сложное. Может кто повернуть мою мысль в нужном направлении?

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

Пока по-твоему вопросу не одной мысли в голове.

Но можно попробовать наоборот, не монстра телепортировать к себе, а самому телпортироваться за спину монстра.

Здесь для начала нужно найти координаты ГГ и найти по ним инструкцию, которая бы отвечала как за координаты ГГ, так и за координаты монстра.

Ну а дальше нужно подумать, как отследить, куда смотрит монстр.

Но написать такие скрипты точно можно, видел видео с чем то подобным.

Ссылка на комментарий
Поделиться на другие сайты

Я что-то подобное хотел сделать в одной игре.

 

Можно сделать телепорт к глав герою без проблем.

1) Ищешь координаты главгероя. 

2) По ним переходиш на инструкции по работе с координатами. Если инструкция обрабатывает и координаты врагов, то это хорошо, а если нет, то:

 а) ищешь координаты врага

 б) по ним переходишь на инструкцию по работе с координатами врага

3) Далее делаешь поиск куда смотрит глав герой.

4) По этому смотриш инструкции, отвечающие за тем куда смотрит глав герой.

5) Делаешь телепорт к главгерою, но уже спиной к нему. Да и желательно их вообще заморозить, чтоб они ни подвигаться не могли ни обернуться.

 

Приблизительно такая логика должна быть.

На этом все. 

Ссылка на комментарий
Поделиться на другие сайты

Cпасибо за советы, пока не нашел инструкций, работающих одновременно и с геройскими, и с вражескими координатами, но тут вот еще что обнаружилось:

 

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

Ссылка на комментарий
Поделиться на другие сайты

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

Ссылка на комментарий
Поделиться на другие сайты

Здесь обсуждение.

 

Я не думаю, что в сингле кто-то это сделал, а вот в мультиплеере очень даже вероятно. Судя по видео, читак отправляет сетевой пакет нанесения удара  с id персонажа, которому наносится удар на мастре-сервер или через сервер на мастер-клиент. Мастер-сервер, если он там есть даже не проверяет расстояние нанесения удара, не проверяет препятствия... и отправляет в "обратку" всем в сети, что такой-то перс нанес бекспаб удар. Все остальные клиенты подчиняются как безвольные. Устанавливают и разворачивают персонажа, по которому ударили, рядом с тем кто ударил его.

 

В связи с чем вопрос. Автор, Вам для сетевой игры в пвп или для одиночной надо? Боюсь, что если сделать для одиночной, то и для сетевой будет работать, а Вы наверно этого и хотите проверить. Поглумиться над глупцами, которые дуб-дубом в читах.

Ссылка на комментарий
Поделиться на другие сайты

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

Ссылка на комментарий
Поделиться на другие сайты

Здесь обсуждение.

 

Я не думаю, что в сингле кто-то это сделал, а вот в мультиплеере очень даже вероятно. Судя по видео, читак отправляет сетевой пакет нанесения удара  с id персонажа, которому наносится удар на мастре-сервер или через сервер на мастер-клиент. Мастер-сервер, если он там есть даже не проверяет расстояние нанесения удара, не проверяет препятствия... и отправляет в "обратку" всем в сети, что такой-то перс нанес бекспаб удар. Все остальные клиенты подчиняются как безвольные. Устанавливают и разворачивают персонажа, по которому ударили, рядом с тем кто ударил его.

 

В связи с чем вопрос. Автор, Вам для сетевой игры в пвп или для одиночной надо? Боюсь, что если сделать для одиночной, то и для сетевой будет работать, а Вы наверно этого и хотите проверить. Поглумиться над глупцами, которые дуб-дубом в читах.

Да для сетевой однозначно будет работать. Помнится, когда играл в Dark Souls, часто получал в спину БЕКСтап от читеров. Ну т.е. он находится где-то в метрах двух впереди, потом оп и он уже сзади "ножит меня режиком" - зараза. Ух как они тыды надоели. Кстати и у одного моего любимого "Лейтсплейщика", тоже засняты кадры таких - "Бэков".

Ссылка на комментарий
Поделиться на другие сайты

 Abraham08, на вопрос администрации нужно отвечать. "В сингле также читал о подобном..."  - это не ответ. Ответ невнятный. То что Вы читали, это не ответ.

 

pvp  - нельзя 

pwe - можно (Xipho иногда разрешает в обход правилам)

pvp + pwe - явно нельзя

 

 

pvp + pwe - нельзя, т.е. если помимо всех монстров в мультиплеер будут в кучу собираться и персонажи живых игроков, то автору может быть бан, а "помогающие" могут быть наказаны. 

Ссылка на комментарий
Поделиться на другие сайты

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

Ссылка на комментарий
Поделиться на другие сайты

По поводу "собрать всех монстров с локации" - если получится подвигать одного монстра, найдя и изменив его координаты (тут надо учесть, что координаты бывают экранные, игровые и еще какие-нибудь "внутриигровые", которые из игровых туда-сюда конвертируются), можно найти список монстров и им всем по нажатию кнопки координаты поменять. Как обычно этот список ищется - чаще всего монстры хранятся массивом указателей, так что надо найти одного монстра (скажем, здоровье), затем найти в его структуре смещение до координат, а затем сделать поиск указателя 1-го уровня на базовый адрес структуры или на адрес здоровья. Обычно вываливается 2-3 адреса, так что их руками перебрать будет легко - добавляем каждый найденный в новую структуру в СЕ, раскрываем по очереди указатели (они там стрелочками будут) и смотрим нужное смещение. Выглядеть это будет примерно так:

 

0x1234567:-->0x100-0x20 - health-0x30 - X coord...-->0x300-0x20 - health-0x30 - X coord...

 

Частенько такой массив указателей лежит рядышком с игроком, а то и игрок вместе с монстрами в одном лежит. После этого нужно будет найти инструкцию, которая почаще читает все координаты, и сделать в ней инъекцию, в которой пойти по адресу с указателями, залезть в каждый, взять [адрес_монстра+смещение_до_координат] и заменить его на некоторое новое значение. Цикл, в общем, перебор в цикле. Главное четко определить, что это нужная структура, а не что-нибудь другое - иначе игра не оценит шутку и, скорее всего, вылетит. Последний момент, который хотелось бы заметить в этом способе - лучше все перемещаемые объекты немного подовигать вверх, т.е. по оси OY, чтобы они ножками в землю не застряли при приземлении и не случилось из-за этого чего-нибудь нехорошего.

Ссылка на комментарий
Поделиться на другие сайты

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

 

Такой еще вопрос, когда пишешь скрипт, можно ли делать так: при запуска некой инструкции, при проверке, например, флага или еще какого-нибудь фильтра, делать прыжок вообще в другую часть исполняемого кода, к инструкции, которая запускается при других условиях, предварительно изменив регистры на те, которые должны быть при правильном запуске этой инструкции, затем от нее пройти часть кода и, наконец, восстановив регистры назад, вернутся к тому месту, откуда был совершен прыжок или это заведомо фейл? Собственно, я уже написал такой скрипт:

[ENABLE]alloc(newmem,2048)alloc(newmem2,2048)alloc(newmem3,2048)label(returnhere)label(returnhere2)label(returnhere3)label(originalcode)label(exit)label(originalcode2)label(exit2)label(originalcode3)label(exit3)label(flag1)label(metka)label(metka2)label(metka3)registersymbol(flag1)newmem:cmp edi,1098732Cjne originalcodecmp [flag1],1je metka2mov [flag1],1jmp DarkSoulsII.exe+1C36B2//mov [102AD8AC],#150metka2:mov [flag1],0originalcode:mov al,[edi+2F]movsx edx,alexit:jmp returnhere2newmem2://mov [ebp+08],#100cmp [flag1],0je metkamov eax,103FB600mov ebx,1030BF00mov ecx,00000000mov edx,1259DC20mov esi,103FC010mov edi,104CE8F0mov esp,0018F068mov ebp,0018F070metka:push eaxmov eax,[ebp+08]imul eax,eax,#2mov [ebp+08],eaxpop eaxoriginalcode2:mov edx,[ebp+08]mov eax,[esi+000000FC]cmp [flag1],1je metka3exit2:jmp returnheremetka3:jmp DarkSoulsII.exe+1C36B5newmem3:originalcode3:mov [esi+000000FC],ecxcmp [flag1],0je exit3mov eax,00000001mov ebx,0018F7F8mov ecx,00000001mov edx,00000000mov esi,10380770mov edi,1098732Cmov esp,0018F790mov ebp,0018F7F0jmp DarkSoulsII.exe+3ED7D2exit3:jmp returnhere3flag1:db 00"DarkSoulsII.exe"+1C36F1:jmp newmem3nopreturnhere3:"DarkSoulsII.exe"+3ED7D2:jmp newmemnopreturnhere2:"DarkSoulsII.exe"+1C36B2:jmp newmem2nopnopnopnopreturnhere: [DISABLE]dealloc(newmem)dealloc(newmem2)dealloc(newmem3)unregistersymbol(flag1)"DarkSoulsII.exe"+3ED7D2:mov al,[edi+2F]movsx edx,al"DarkSoulsII.exe"+1C36B2:mov edx,[ebp+08]mov eax,[esi+000000FC]"DarkSoulsII.exe"+1C36F1:mov [esi+000000FC],ecx

При его запуске, пока флаг равен 0, все работает нормально, но если выстрелить определенным заклинанием (в этом случае регистр edi становится равным 1098732C), флаг переходит в состояние "1". По задумке, в конце флаг должен вернутся в состояние "0" и на этом все закончится, но у меня начинается бесконечный цикл, заклинания начинают стрелять как из пулемета, 50 снарядов в секунду, что через десяток секунд приводит к крашу.

 

 

Ссылка на комментарий
Поделиться на другие сайты

Кажеться что твоя ошибка здесь:

 

newmem:


cmp edi,1098732C
jne originalcode
cmp [flag1],1
je metka2
mov [flag1],1 --> вот она, а надо mov [flag1],0
jmp DarkSoulsII.exe+1C36B2
//mov [102AD8AC],#150
metka2:
mov [flag1],0

 

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

Ссылка на комментарий
Поделиться на другие сайты

Не, там все правильно - когда игра запускает эту инструкцию и видит, что регистр edi равен указанному в сравнении, то она проверяет какое значение флага установлено. Если 0 (а оно 0 до тех пор, пока не пальнешь заклинанием), то флаг изменяется на 1 и дальше идет по коду (когда срабатывают другие инструкции, они также проверяют флаг и при значении "1" происходит выполнение моего кода, иначе все идет по стандарту), под конец нас снова перекидывают к старту первой инструкции, она вновь проверяет флаг, видит, что он равен 1 и переходит к "метке 2", в которой флаг меняется на 0, затем выполняется стандартный код выстрела заклинания и на этом все заканчивается. Меня интересует, вообще такие вещи можно делать? Первая инструкция срабатывает при выстреле заклинания, а вторая и остальные должны срабатывать при ударе по монстру, я же попытался добавить эффект удара при выстреле заклинания. Ошибка, мне кажется, в том, что так смешивать инструкции нельзя, а если и можно, то существуют какие-то правила, о которых мне неизвестно)

Ссылка на комментарий
Поделиться на другие сайты

 

 

Такой еще вопрос, когда пишешь скрипт, можно ли делать так: при запуска некой инструкции, при проверке, например, флага или еще какого-нибудь фильтра, делать прыжок вообще в другую часть исполняемого кода, к инструкции, которая запускается при других условиях, предварительно изменив регистры на те, которые должны быть при правильном запуске этой инструкции, затем от нее пройти часть кода и, наконец, восстановив регистры назад, вернутся к тому месту, откуда был совершен прыжок или это заведомо фейл? Собственно, я уже написал такой скрипт:

Такой скрипт написать можно, сам я лично не делал, но читал где-то у MasterGH - он делал выстрел в игре из другой части кода (извини - объяснить не смог, читал давно и пока уровня моего опыта и знаний маловато чтобы было понять как это сделал MasterGH). Но точно помню, что он использовал Call для вызова кода выстрела и потом  Ret для возврата назад в свою инъекцию. Так что написать, то что описал, можно. 

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

Зачем тебе проход монстра сквозь стены. Тебе просто нужно вписывать каждому монстру координаты ГГ, а игра обычно сама подвигает движущийся объект. Грубо говоря, то что ты хочешь сделать это Blink-телепорт наоборот: не ГГ прыгает на чьи-то координаты (прицел, НПС), а наоборот монстр будет прыгать на координаты ГГ.

Посмотри, как пример у меня в скрипте  Blink-телепорт: ГГ прыгает на координаты ближайшего НПС и тот двигается (в видео, которое ниже в сообщении это видно) Скрипт и видео здесь. 

Ссылка на комментарий
Поделиться на другие сайты

Такой скрипт написать можно, сам я лично не делал, но читал где-то у MasterGH - он делал выстрел в игре из другой части кода (извини - объяснить не смог, читал давно и пока уровня моего опыта и знаний маловато чтобы было понять как это сделал MasterGH). Но точно помню, что он использовал Call для вызова кода выстрела и потом  Ret для возврата назад в свою инъекцию. Так что написать, то что описал, можно. 

 

Это на этом форуме была статья/скрипт такой? Нужно будет поискать, с самого первого дня как познакомился с СЕ была мысль такое проворачивать.

 

Зачем тебе проход монстра сквозь стены. Тебе просто нужно вписывать каждому монстру координаты ГГ, а игра обычно сама подвигает движущийся объект. Грубо говоря, то что ты хочешь сделать это Blink-телепорт наоборот: не ГГ прыгает на чьи-то координаты (прицел, НПС), а наоборот монстр будет прыгать на координаты ГГ.

Посмотри, как пример у меня в скрипте  Blink-телепорт: ГГ прыгает на координаты ближайшего НПС и тот двигается (в видео, которое ниже в сообщении это видно) Скрипт и видео здесь. 

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

Ссылка на комментарий
Поделиться на другие сайты

Это на этом форуме была статья/скрипт такой? Нужно будет поискать, с самого первого дня как познакомился с СЕ была мысль такое проворачивать.

У меня тоже - мысль таже.

 

 

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

Выложи сюда скрипт, посмотрим - может ошибка в скрипте. Хотя это может быть и особенностью игры.

Ссылка на комментарий
Поделиться на другие сайты

Ребята сори за оффтоп.

 

Такой скрипт написать можно, сам я лично не делал, но читал где-то у MasterGH - он делал выстрел в игре из другой части кода (извини - объяснить не смог, читал давно и пока уровня моего опыта и знаний маловато чтобы было понять как это сделал MasterGH). 

 

garik66 ты знаешь как тема эта называлась или может ссылка на нее у тебя есть. Я ее никак не могу найти.

Ссылка на комментарий
Поделиться на другие сайты

Ребята сори за оффтоп.

 

 

garik66 ты знаешь как тема эта называлась или может ссылка на нее у тебя есть. Я ее никак не могу найти.

К сожалению не запомнил, случайно наткнулся - лучше спросить у MasterGH.

Ссылка на комментарий
Поделиться на другие сайты

Выложи сюда скрипт, посмотрим - может ошибка в скрипте. Хотя это может быть и особенностью игры.

Особо для этого ничего не писал - есть адрес для оси Х со значением типа float (для остальных осей аналогично), если этот адрес заморозить и вставить свое значение, то происходит описанная мной ситуация (без заморозки там вообще небольшой рывок в сторону и на этом все). Ставил на этот адрес бряк на доступ, первой инструкцией является movq xmm0,[eax+08], которая считывается каждый кадр. [eax+08] - это адрес нашей координаты Х. В скрипте я просто перед меткой оригинального кода ставил свое

mov [eax+08],(float)***, где вместо звездочек любое выбранное заранее число. При запуске этого скрипта также происходит вышеописанная ситуация.

 

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

 

Ребята сори за оффтоп.

 

 

garik66 ты знаешь как тема эта называлась или может ссылка на нее у тебя есть. Я ее никак не могу найти.

 

У меня тоже пока не получилось найти эту тему, если вдруг обнаружится - скинь пожалуйста ссылку сюда)

Изменено пользователем Abraham08
Ссылка на комментарий
Поделиться на другие сайты

Особо для этого ничего не писал -

Нужно написать именно скрипт. Иногда заморозка с помощью СЕ может ничего не показать, а вот правильно написанный скрипт поможет.

Я бы начал с простого телепорта. Т.е. сохранил координаты ГГ в одной точке, перешёл на другую и оттуда телепортнулся назад.

Если такой скрипт сработает, то можно приступать к написанию нужного тебе скрипта.

Ещё очень важный момент, иногда нужно вписывать координаты перед срабатыванием оригинальной инструкции игры, иногда наоборот после срабатывания.

Ребята сори за оффтоп.

 

 

garik66 ты знаешь как тема эта называлась или может ссылка на нее у тебя есть. Я ее никак не могу найти.

Нашёл, нужно было всего навсего набрать в поисковике слово "выстрел", по форуму, по автору MasterGH.

Ссылка: тема здесь

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

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

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

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