Korol2010 Опубликовано 14 июля, 2015 Автор Поделиться Опубликовано 14 июля, 2015 Узнаем кол-во проскакивающих адресов на инструкцииЯ так никогда не делал, вообще не в курсе как делать фильтр через поинтеры, а найти адреса то которые получают доступ к инструкции это не проблема. Мне нужен именно фильтр. В структуре всех жизней как союзников так и врагов нет ни одного фильтра, через регистры искать фильтр тоже как иголку в стогу сена. Если объяснишь подробнее как делать такой фильтр через поинтеры буду очень благодарен. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 14 июля, 2015 Поделиться Опубликовано 14 июля, 2015 Я писал выше. Фильтр не делал, так как там в мегаструктуре мира копаться надо (сами структурки игроков размером 0x1C всего). Я просто нашел инструкцию, которая работает только с игроком. Союзники тоже смертны вроде, особо в игру не играл ) Ссылка на комментарий Поделиться на другие сайты Поделиться
Korol2010 Опубликовано 14 июля, 2015 Автор Поделиться Опубликовано 14 июля, 2015 Я писал выше. Фильтр не делал, так как там в мегаструктуре мира копаться надо (сами структурки игроков размером 0x1C всего). Я просто нашел инструкцию, которая работает только с игроком. Союзники тоже смертны вроде, особо в игру не играл ) Ясно)) Я то взламывал ещё и союзников, а там в структуре нет не хрена фильтров, спрошные структуры НПС))) Причём не большие как и ты сказал. А здоровье самого персонажа я и не имел в виду сейчас)) Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 15 июля, 2015 Поделиться Опубликовано 15 июля, 2015 Я так никогда не делал, вообще не в курсе как делать фильтр через поинтеры, а найти адреса то которые получают доступ к инструкции это не проблема. Мне нужен именно фильтр. В структуре всех жизней как союзников так и врагов нет ни одного фильтра, через регистры искать фильтр тоже как иголку в стогу сена. Если объяснишь подробнее как делать такой фильтр через поинтеры буду очень благодарен. Да не, не поинтеры. А там показывается какие инструкции работают с одним адресом. Надо найти инструкцию только для твоего героя, чтобы сделать ему здоровье (это уже сделано) и по аналогии найти инструкцию, которая работает только с выжившими.Скрипт на здоровье для выживших, только что сделал. 1. Начинаем игру, доходим до двух выживших. Тетка и парень.2. Ищем свое здоровье3. Ставим брекпоинт на него4. Определяем адреса на найденных инструкциях и в них ищем адрес здоровья одного из выживших, и ставим на него бряк5. Находим инструкции, которые работают только с выжившими6. Пишем скрипт выше и тестим. Он работает как с персонажами, которые бегают за главным персонажем, так и для тех, кто стоит и ждет помощи. Но я особо не тестил, так что не знаю как там дальше.{ Game : deadrising3.exe Version: Date : 2015-07-15 Author : MasterGH This script Здоровье для выживших}[ENABLE] aobscanmodule(INJECT,deadrising3.exe,66 41 0F 6E 71 10 * * * * 41) // should be uniquealloc(newmem,$1000,"deadrising3.exe"+2CAE0B)label(code)label(return)newmem:code: movd xmm6, [r9+14] movd [r9+10],xmm6 jmp returnINJECT: jmp code nopreturn:registersymbol(INJECT)[DISABLE]//code from here till the end of the code will be used to disable the cheatINJECT: db 66 41 0F 6E 71 10unregistersymbol(INJECT)dealloc(newmem){// ORIGINAL CODE - INJECTION POINT: "deadrising3.exe"+2CAE0B"deadrising3.exe"+2CADE1: 48 8B 88 B0 00 00 00 - mov rcx,[rax+000000B0]"deadrising3.exe"+2CADE8: 8B 41 10 - mov eax,[rcx+10]"deadrising3.exe"+2CADEB: 85 C0 - test eax,eax"deadrising3.exe"+2CADED: 48 0F 4E 0D 23 22 3A 01 - cmovle rcx,[deadrising3.exe+166D018]"deadrising3.exe"+2CADF5: 8B 41 10 - mov eax,[rcx+10]"deadrising3.exe"+2CADF8: 85 C0 - test eax,eax"deadrising3.exe"+2CADFA: 48 0F 4E 0D 16 22 3A 01 - cmovle rcx,[deadrising3.exe+166D018]"deadrising3.exe"+2CAE02: 4C 8B 49 08 - mov r9,[rcx+08]"deadrising3.exe"+2CAE06: 4D 85 C9 - test r9,r9"deadrising3.exe"+2CAE09: 74 46 - je deadrising3.exe+2CAE51// ---------- INJECTING HERE ----------"deadrising3.exe"+2CAE0B: 66 41 0F 6E 71 10 - movd xmm6,[r9+10]// ---------- DONE INJECTING ----------"deadrising3.exe"+2CAE11: 66 41 0F 6E 41 14 - movd xmm0,[r9+14]"deadrising3.exe"+2CAE17: 49 8B 44 24 28 - mov rax,[r12+28]"deadrising3.exe"+2CAE1C: 41 8B 71 14 - mov esi,[r9+14]"deadrising3.exe"+2CAE20: 0F 5B F6 - cvtdq2ps xmm6,xmm6"deadrising3.exe"+2CAE23: 0F 5B C0 - cvtdq2ps xmm0,xmm0"deadrising3.exe"+2CAE26: F3 0F 5E F0 - divss xmm6,xmm0"deadrising3.exe"+2CAE2A: 66 0F 6E 40 20 - movd xmm0,[rax+20]"deadrising3.exe"+2CAE2F: 0F 5B C0 - cvtdq2ps xmm0,xmm0"deadrising3.exe"+2CAE32: F3 0F 59 35 BA 6C 03 01 - mulss xmm6,[deadrising3.exe+1301AF4]"deadrising3.exe"+2CAE3A: F3 0F 59 F0 - mulss xmm6,xmm0} 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Korol2010 Опубликовано 15 июля, 2015 Автор Поделиться Опубликовано 15 июля, 2015 аааа ну теперь понятно что ты имеешь в виду, только я вот думаю что не найдётся инструкция работающая только с союзниками. Хотя попробую поискать. Спасибо за скрипт, точнее за способ его реализации)) Потому что скрипт то я уже давно написал только через push, а не так как ты)) Теперь буду знать что с инструкциями такого рода можно работать и так, без пуша. NullAlex: Полностью цитировать большое сообщение - совсем необязательно. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 15 июля, 2015 Поделиться Опубликовано 15 июля, 2015 Если ты сделаешь push [r9+14] и pop [r9+10], то будет фигня, т.к. в стек полетит 8 байт, а не 4. Вылет из игры обеспечен. Так что не знаю, как там сумел пропушить Ссылка на комментарий Поделиться на другие сайты Поделиться
Korol2010 Опубликовано 16 июля, 2015 Автор Поделиться Опубликовано 16 июля, 2015 Если ты сделаешь push [r9+14] и pop [r9+10], то будет фигня, т.к. в стек полетит 8 байт, а не 4. Вылет из игры обеспечен. Так что не знаю, как там сумел пропушитьЯ имею в виду такой пуш:push ebxmov ebx,[r9+14]mov [r9+10],ebxpop ebx.Теперь понял о чём я?))) А у тебя по другому сделано, так как я бы и не подумал делать)))NullAlex, ок учту))) Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 17 июля, 2015 Поделиться Опубликовано 17 июля, 2015 Если ты напишешь push ebx, то это будет ассемблироваться CE как push rbx и тоже самое pop ebx будет ассемблироваться как pop rbxpush rbxmov ebx,[r9+14]mov [r9+10],ebxpop rbx Ссылка на комментарий Поделиться на другие сайты Поделиться
Korol2010 Опубликовано 20 июля, 2015 Автор Поделиться Опубликовано 20 июля, 2015 (изменено) Если ты напишешь push ebx, то это будет ассемблироваться CE как push rbx и тоже самое pop ebx будет ассемблироваться как pop rbxpush rbxmov ebx,[r9+14]mov [r9+10],ebxpop rbxИнтересно, я тоже об этом мало что понимал, почему так можно делать, теперь знаю, спасибо что объяснил.К стате говоря, как думаешь, Мастер, куда лучше все мои скрипты выложить наработанные по этой игре сюда (в эту тему) или в спец раздел? А может даже соберусь и трейнер сделать. А то в инете все трейнеры какие то "не полные", в одном есть функция(и) нужная, а в другом нет. Изменено 20 июля, 2015 пользователем Korol2010 Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 20 июля, 2015 Поделиться Опубликовано 20 июля, 2015 К стате говоря, как думаешь, Мастер, куда лучше все мои скрипты выложить наработанные по этой игре сюда (в эту тему) или в спец раздел? Я не могу тебе тут помочь. Это вопрос к модератору или администраторам Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 21 июля, 2015 Поделиться Опубликовано 21 июля, 2015 куда лучше все мои скрипты выложить наработанные по этой игре сюда (в эту тему) или в спец раздел?Korol2010, лучше в спец. раздел, если скрипты - то в скрипты, если трейнер - то в трейнер, если таблица - то в таблицы.А залить файл на форум попроси модераторов или NullAlex, они помогут. Ссылка на комментарий Поделиться на другие сайты Поделиться
Korol2010 Опубликовано 21 июля, 2015 Автор Поделиться Опубликовано 21 июля, 2015 (изменено) Ясно, спасибо за инфу, только вот я вроде ещё на сайт заливать не имею доступа(( Там нужна вроде репа от 10 и выше что бы был доступ к заливке на сайт. Изменено 21 июля, 2015 пользователем Korol2010 Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 21 июля, 2015 Поделиться Опубликовано 21 июля, 2015 Возможность прикреплять файлы к сообщениям, а также заливать их в "Файлы" - имеет группа Разработчиков, и выше. Ссылка на комментарий Поделиться на другие сайты Поделиться
Korol2010 Опубликовано 25 июля, 2015 Автор Поделиться Опубликовано 25 июля, 2015 (изменено) Возможность прикреплять файлы к сообщениям, а также заливать их в "Файлы" - имеет группа Разработчиков, и выше. Тогда тем более долго мне ещё придётся Яндекс диском пользоваться Вот к стате мои наработки по игре, по мере прохождения и надобности (выложу сюда и отдельно в спец раздел):P.S.: Надеюсь что при копировании скриптов не ошибся)))[ENABLE]aobscanmodule(Healt,deadrising3.exe,87 00 00 00 66 0F 6E 48 10)alloc(newmem,100,"deadrising3.exe"+1912DD)label(return)newmem:movd xmm1,[rax+14]movd [rax+10],xmm1jmp returnHealt+04: jmp newmemreturn:registersymbol(Healt)[DISABLE]Healt+04: db 66 0F 6E 48 10unregistersymbol(Healt)dealloc(newmem) [ENABLE]aobscanmodule(healtoponents,deadrising3.exe,66 41 0F 6E 71 10 * * * * 41) // should be uniquealloc(newmem,100,"deadrising3.exe"+2CBBAB)label(return)newmem:movd xmm6,[r9+14]movd [r9+10],xmm6jmp returnhealtoponents:jmp newmemnopreturn:registersymbol(healtoponents)[DISABLE]healtoponents:db 66 41 0F 6E 71 10unregistersymbol(healtoponents)dealloc(newmem) [ENABLE]aobscanmodule(oponents,deadrising3.exe,66 0F 6E 48 10 66 0F 6E 40 14 48) // should be uniquealloc(newmem,100,"deadrising3.exe"+12F07E)label(return)newmem:movd xmm1,[rax+14]movd [rax+10],xmm1jmp returnoponents:jmp newmemreturn:registersymbol(oponents)[DISABLE]oponents:db 66 0F 6E 48 10unregistersymbol(oponents)dealloc(newmem) [ENABLE]aobscanmodule(oponents,deadrising3.exe,43 66 0F 6E 48 10) // should be uniquealloc(newmem,100,"deadrising3.exe"+14F978)label(return)newmem:movd xmm1,[rax+14]movd [rax+10],xmm1jmp returnoponents+01:jmp newmemreturn:registersymbol(oponents)[DISABLE]oponents+01:db 66 0F 6E 48 10unregistersymbol(oponents)dealloc(newmem) [ENABLE]aobscanmodule(Nocrashweapon,deadrising3.exe,66 0F 6E 50 10)alloc(newmem,100,"deadrising3.exe"+6D2E57)label(return)newmem:movd xmm2,[rax+14]movd [rax+10],xmm2jmp returnNocrashweapon:jmp newmemreturn:registersymbol(Nocrashweapon)[DISABLE]Nocrashweapon:db 66 0F 6E 50 10unregistersymbol(Nocrashweapon)dealloc(newmem) [ENABLE]aobscanmodule(ammo,deadrising3.exe,F3 0F 10 41 28 EB) // should be uniquealloc(newmem,100,"deadrising3.exe"+274F4F)label(return)newmem:mov [rcx+28],(float)999movss xmm0,[rcx+28]jmp returnammo:jmp newmemreturn:registersymbol(ammo)[DISABLE]ammo:db F3 0F 10 41 28 [ENABLE]aobscanmodule(granades,deadrising3.exe,F3 0F 10 47 10 48 8B 4A) // should be uniquealloc(newmem,100,"deadrising3.exe"+36A443)label(return)newmem:mov [rdi+10],(float)100movss xmm0,[rdi+10]jmp returngranades:jmp newmemreturn:registersymbol(granades)[DISABLE]granades:db F3 0F 10 47 10unregistersymbol(granades)dealloc(newmem) [ENABLE]aobscanmodule(cars,deadrising3.exe,00 00 66 0F 6E 48 10 66) // should be uniquealloc(newmem,100,"deadrising3.exe"+5651B)label(return)newmem:movd xmm1,[rax+14]movd [rax+10],xmm1jmp returncars+02:jmp newmemreturn:registersymbol(cars)[DISABLE]cars+02:db 66 0F 6E 48 10unregistersymbol(cars)dealloc(newmem) [ENABLE]aobscanmodule(freeztimer,deadrising3.exe,03 42 2C 6B C0 3C 03 42 30 C3 CC CC CC CC) // should be uniquealloc(newmem,100,"deadrising3.exe"+1CE0AE)label(return)newmem:mov [rdx+2C],#1imul eax,eax,3Cjmp returnfreeztimer:jmp newmemnopreturn:registersymbol(freeztimer)[DISABLE]freeztimer:db 03 42 2C 6B C0 3Cunregistersymbol(freeztimer)dealloc(newmem) Изменено 25 июля, 2015 пользователем Korol2010 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 25 июля, 2015 Поделиться Опубликовано 25 июля, 2015 Korol2010, можешь запостить эти скрипты сюда, и будем считать, что это твоя первая ступенька к группе "Разработчиков" Ссылка на комментарий Поделиться на другие сайты Поделиться
Korol2010 Опубликовано 26 июля, 2015 Автор Поделиться Опубликовано 26 июля, 2015 (изменено) NullAlex, ок, спасибо за комплимент Но я думаю до разработчика мне ещё долго пилить))) К тому же я довольно редко играю и взламываю игры, так если только что-то интересное найду, то тогда играю и взламываю.Да, забыл ещё кое что спросить. Как нужно сделать скрипт, чтобы именно заморозить таймер, а не устанавить его, как это реализовано в моём скрипте. Пример: время идёт, на таймере показывает 17:30, задача остановить таймер на именно этой отметке с помощью скрипта, НЕ СТАТИЧЕСКОГО АДРЕСА. Изменено 26 июля, 2015 пользователем Korol2010 Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 26 июля, 2015 Поделиться Опубликовано 26 июля, 2015 "Установить значение" и "заморозить значение" - это одно и то же, если это действие выполняется в таймере (т.е. - постоянно). Но как альтернатива - можно "убить" таймер (заNOPить инструкцию, или сделать выход из функции при попытке перезаписи значения таймера игрой - крайний случай). Ссылка на комментарий Поделиться на другие сайты Поделиться
Korol2010 Опубликовано 26 июля, 2015 Автор Поделиться Опубликовано 26 июля, 2015 "Установить значение" и "заморозить значение" - это одно и то же, если это действие выполняется в таймере (т.е. - постоянно).Но как альтернатива - можно "убить" таймер (заNOPить инструкцию, или сделать выход из функции при попытке перезаписи значения таймера игрой - крайний случай).Ясно, спасибо за объяснение, хотя установить и заморозить я бы не сказал что это одно и то же, т.к. при установке значения, ты записываешь какое-то определённое значение, а при заморозке можно заморозить любое текущее значение, в данном случае с использованием скрипта. А у меня как раз реализована сейчас именно установка значения, потому что я записываю единицу, вместо того что бы остановить таймер на текущем значении.А вот занопить инструкцию, это вариант, мне чёт даже и в голову то это не пришло Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 26 июля, 2015 Поделиться Опубликовано 26 июля, 2015 "Заморозка" текущего значения происходит также, как и установка своего значения.В первом случае (когда нужно установить свое значение) - устанавливается заранее известное значение (в твоем случае - единица), во втором случае (когда устанавливаемое значение нам заранее неизвестно) - нужно получить текущее значение, запомнить его, и устанавливать его также - в таймере.В АА скрипте для второго нужно:Создать метку (регистрировать ее необязательно)Перед началом установки текущего значения - запомнить это значение в созданную меткуУстанавливать значение меткиlabel(originalcode) // Оригинальный кодlabel(flag) // Флаг, который будет служить переключателем между режимами (установка своего значения, и установка неизвестного (текущего) значения)registersymbol(flag) // Регистрируем метку, чтобы использовать ее в таблицеlabel(value) // Значение, которое будет устанавливаться при срабатывании скрипта{ Примем за условные значения для метки-флага: 0 - Устанавливаем свое значение 1 - Устанавливаем текущее значение}newmem:cmp byte ptr [flag],#0jne @F // Если значение метки-флага не равно нулю - прыгаем на следующую меткуmov byte ptr [value],#1 // Устанавливаем нужное значение (единица - как в твоем скрипте)jmp originalcode // Выполняем оригинальный код@@: // Прыжок произойдет сюда, если первое условие не выполненоcmp byte ptr [flag],#1jne originalcode // Если значение метки-флага не равно единице - прыгаем на метку оригинального кодаpush eaxmov eax,[ecx] // Где "ecx" - нужный тебе регистр и смещениеmov byte ptr [value],eaxpop eaxjmp originalcode // Выполняем оригинальный кодoriginalcode:// Устанавливаем значение метки "value" - в значение таймера// И выполняем оригинальный код (без изменений)jmp returnhereflag:db 0 // Создаем метку (флаг) с типом "1 байт", со значением равным нулю0 - Значение не запомнено1 - Значение запомненоДобавляем в таблицу метку "flag", с типом 1 байт, переключаем - когда нужно, и радуемся.P.S.В секции DISABLE скрипта обязательнонужно снять регистрацию с метки-флага.P.S. #2Скорее всего, придется добавлять еще пару условий, потому как весьма может быть перезапись запомненного значения, и таймер будет работать в обычном режиме. В общем, сделать это не трудно, но все от игры зависит.Если будет перезапись, значит нужно добавить еще один флаг, который будет служить маяком, и значения ему можно выставлять например так:И далее - проверять, если значение равно нулю - значит, надо запомнить значение, если же оно равно единице - выполняем скрипт, перепрыгнув через безымянную метку (с перезаписью "value"). Ссылка на комментарий Поделиться на другие сайты Поделиться
Korol2010 Опубликовано 27 июля, 2015 Автор Поделиться Опубликовано 27 июля, 2015 Спасибо большое за объяснение, смысл скрипта понял))) Попробую осуществить на досуге. Вот только я ещё 1 момент не знаю. Как добавить в таблицу метку "flag"? Просто я никогда не добавлял метки в таблицу, знаю что так можно, но делать никогда не делал. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 27 июля, 2015 Поделиться Опубликовано 27 июля, 2015 Спасибо большое за объяснение, смысл скрипта понял))) Попробую осуществить на досуге. Вот только я ещё 1 момент не знаю. Как добавить в таблицу метку "flag"? Просто я никогда не добавлял метки в таблицу, знаю что так можно, но делать никогда не делал.1. В основном окне СЕ (в центре, справа) кнопка "Добавить адрес".2. В окне "Изменение адреса" вместо адреса пишем flag, в описании то что Вам нужно.\3. Результат на картинке. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Korol2010 Опубликовано 27 июля, 2015 Автор Поделиться Опубликовано 27 июля, 2015 1. В основном окне СЕ (в центре, справа) кнопка "Добавить адрес".2. В окне "Изменение адреса" вместо адреса пишем flag, в описании то что Вам нужно.\3. Результат на картинке.Благодарствую) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения