deathguru Опубликовано 3 мая, 2016 Поделиться Опубликовано 3 мая, 2016 Дня доброго. Разобрал структуру (и запилил в инъекцию): Spoiler alloc(newmem,2048,"mgsvmgo.exe"+2A12A1B) label(returnhere) label(originalcode) label(exit) newmem: originalcode: mov eax,[rdx+rax*4] mov rbx,[rsp+08] //===============// // BOUNTY HUNTER // //===============// mov [rdx+040],00000620 //Bounty claimed mov [rdx+23C],005F55D1 //Experience points mov [rdx+1E8],0062DC6C //Score mov [rdx+13C],00002160 //Kills mov [rdx+10C],00000D8C //Headshots mov [rdx+030],00000C49 //Assists mov [rdx+074],000009C6 //Deaths mov [rdx+21C],00000861 //Stuns mov [rdx+1B8],000004FA //Stunned by Enemy mov [rdx+0BC],000004FD //Fultons mov [rdx+0CC],00000292 //Fultoned by enemy mov [rdx+0DC],000005AF //Fulton saves mov [rdx+1C8],000009AD //Enemies marked mov [rdx+1D8],00000507 //Marked by Enemy mov [rdx+12C],00000287 //Interrogations mov [rdx+14C],0000019F //Knife Kills mov [rdx+054],000001FF //Enemies Charmed mov [rdx+22C],00000217 //WG Destroyed mov [rdx+010],00000020 //Amazing throws mov [rdx+16C],00000861 //Missions played mov [rdx+18C],00000840 //Missions won mov [rdx+20C],0007B0C0 //Time //==================// // CLOAK AND DAGGER // //==================// mov [rdx+09C],00000458 //Discs Retreived mov [rdx+098],0000054A //Discs Picked Up mov [rdx+094],00000461 //Discs Defended mov [rdx+240],00368C73 //Experience points mov [rdx+1EC],0025D396 //Score mov [rdx+140],00001F31 //Kills mov [rdx+110],00000860 //Headshots mov [rdx+034],00000B50 //Assists mov [rdx+078],000009F0 //Deaths mov [rdx+220],0000089B //Stuns mov [rdx+1BC],00000515 //Stunned by Enemy mov [rdx+0C0],00000477 //Fultons mov [rdx+0D0],0000029D //Fultoned by enemy mov [rdx+0E0],00000418 //Fulton saves mov [rdx+1CC],00000989 //Enemies marked mov [rdx+1DC],000004E2 //Marked by Enemy mov [rdx+130],000002BA //Interrogations mov [rdx+150],000001F8 //Knife Kills mov [rdx+058],00000223 //Enemies Charmed mov [rdx+230],00000268 //WG Destroyed mov [rdx+014],00000025 //Amazing throws mov [rdx+170],00000835 //Missions played mov [rdx+190],0000081E //Missions won mov [rdx+210],00075C60 //Time //==============// // COMM CONTROL // //==============// mov [rdx+0A0],00001418 //Comm Links Captured mov [rdx+0A8],0000147C //Comm Links Neutralized mov [rdx+0A4],00000B3A //Comm Links Defended mov [rdx+244],002D637D //Experience points mov [rdx+1F0],002FFB85 //Score mov [rdx+144],00001D8E //Kills mov [rdx+114],00000BCD //Headshots mov [rdx+038],00000B6D //Assists mov [rdx+07C],000009C2 //Deaths mov [rdx+224],00000AF7 //Stuns mov [rdx+1C0],00000504 //Stunned by Enemy mov [rdx+0C4],0000049A //Fultons mov [rdx+0D4],0000028B //Fultoned by enemy mov [rdx+0E4],00000478 //Fulton saves mov [rdx+1D0],00000996 //Enemies marked mov [rdx+1E0],000004E9 //Marked by Enemy mov [rdx+134],000002CA //Interrogations mov [rdx+154],0000018F //Knife Kills mov [rdx+05C],00000246 //Enemies Charmed mov [rdx+234],00000201 //WG Destroyed mov [rdx+018],00000019 //Amazing throws mov [rdx+174],00000862 //Missions played mov [rdx+194],0000084C //Missions won mov [rdx+214],0006B3A0 //Time //==========// // SABOTAGE // //==========// mov [rdx+1A4],000003EA //Missiles Fultoned mov [rdx+1A0],000003FD //Missiles Destroyed mov [rdx+19C],000014C4 //Missile Damage mov [rdx+208],00000A3A //Terminal Hacks mov [rdx+248],002CF2CD //Experience points mov [rdx+1F4],002F5534 //Score mov [rdx+148],00001FBD //Kills mov [rdx+118],00000699 //Headshots mov [rdx+03C],00000BC4 //Assists mov [rdx+080],000009C3 //Deaths mov [rdx+228],000007DB //Stuns mov [rdx+1C4],00000509 //Stunned by enemy mov [rdx+0C8],0000040B //Fultons mov [rdx+0D8],000002A5 //Fultoned by enemy mov [rdx+0E8],00000475 //Fulton saves mov [rdx+1D4],00000929 //Enemies Marked mov [rdx+1E4],000004F0 //Marked by Enemy mov [rdx+138],000002B0 //Interrogations mov [rdx+158],0000019C //Knife kills mov [rdx+060],00000298 //Enemies Charmed mov [rdx+238],00000299 //WG destroyed mov [rdx+01C],00000034 //Amazing throws mov [rdx+178],00000B35 //Missions Played mov [rdx+198],00000B12 //Mission Won mov [rdx+218],00098EE0 //Time exit: jmp returnhere "mgsvmgo.exe"+2A12A1B: jmp newmem nop nop nop returnhere: Смотрел кучу видео, шерстил форум, но так и не нашел как перевести строки из скрипта в "изменяемые" строки chetengine Т.е. я создаю группу BOUNTY HUNTER и там есть список значений, где Bounty claimed = 1568 (DEC), например, и я его могу свободно изменить. Т.е. задача, чтобы эта инъекция работала более наглядно (сразу было видно значения по смещениям и их можно было изменять в десятичной системе), как обычная таблица. Я конечно мастер объяснять Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 3 мая, 2016 Поделиться Опубликовано 3 мая, 2016 Есть два варианта - 1. LUA скрипт и события изменения значений 2. Регистрация меток на все значения, добавление по этим меткам пунктов в таблицу, а в самой инъекции записывать по адресам значения из этих ячеек. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 3 мая, 2016 Поделиться Опубликовано 3 мая, 2016 1 час назад, deathguru сказал: Смотрел кучу видео, шерстил форум, но так и не нашел как перевести строки из скрипта в "изменяемые" строки chetengine Если устроит вариант, что все адреса будут забиты в таблицу и там будет возможно их менять по своему усмотрению, то можно применить такой вариант. Судя по вот этим трём смещениям: mov [rdx+09C],00000458 //Discs Retreived mov [rdx+098],0000054A //Discs Picked Up mov [rdx+094],00000461 //Discs Defended адреса у тебя в игре по 4 байта. Тогда: 1. Переписываем скрипт так: Скрытый текст [ENABLE] alloc(newmem,2048,"mgsvmgo.exe"+2A12A1B) label(returnhere) label(originalcode) label(pStructur) registersymbol(pStructur) newmem: cmp rax,10 // Фильтр поставил на всякий случай из твоего первого адреса: jne originalcode // mov [rdx+040],00000620 //Bounty claimed. push rdx pop [pStructur] originalcode: mov eax,[rdx+rax*4] mov rbx,[rsp+08] jmp returnhere pStructur: dd 0 "mgsvmgo.exe"+2A12A1B: jmp newmem db 90 90 90 returnhere: [DISABLE] "mgsvmgo.exe"+2A12A1B: mov eax,[rdx+rax*4] mov rbx,[rsp+08] unregistersymbol(pStructur) dealloc(newmem) и потом забиваем в таблицу адреса с соответствующими смещениями: картинка (пример с первым адресом: Скрытый текст Попробуй. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 3 мая, 2016 Поделиться Опубликовано 3 мая, 2016 1. Парсер с регуляркой на Lua создающий записи в таблице по имени и значение от регистрированной метки. Если не умеешь, то ручками 2. Скрипт выше с вытаскиванием поинтера в таблицу 3. Под скрипт все адреса перенести чаилдами (т.е. перетянуть мышкой как вложения) 4. На скрипт поставить опцию при активации раскрывать вложения. Когда кликаем все раскроется и свяжется с поинтером. Читер сможет перейти на любую характеристику и сможет её изменить, заморозить. Ссылка на комментарий Поделиться на другие сайты Поделиться
deathguru Опубликовано 3 мая, 2016 Автор Поделиться Опубликовано 3 мая, 2016 (изменено) Спасибо, все прекрасно работает Spoiler Изменено 3 мая, 2016 пользователем deathguru Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 3 мая, 2016 Поделиться Опубликовано 3 мая, 2016 49 минуты назад, deathguru сказал: Спасибо, все прекрасно работает Отлично!!! Люблю - когда всё работает!!! 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
deathguru Опубликовано 3 мая, 2016 Автор Поделиться Опубликовано 3 мая, 2016 А вот с этим скриптом по аналогии не получается сделать (значения отображаются, но игра вылетает): Spoiler //0002 - амазинг троу //0010 - килы //0014 - фултон //001C - котики //0028 - смерти //0068 - хэдшоты //0070 - допрос //0074 - ?килы? //0078 - ножи //00СС - станы //009C - меня станят //00A4 - метка //00A8 - меня отмечают //00D4 - экспа [ENABLE] aobscanmodule(EXP,mgsvmgo.exe,42 8B 0C 80 01 0A) alloc(newmem,$1000,"mgsvmgo.exe"+2A0EC16) label(code) label(return) registersymbol(EXP) newmem: add dword ptr [rax+D4],#10000 code: mov ecx,[rax+r8*4] add [rdx],ecx jmp return EXP: jmp newmem nop return: [DISABLE] EXP: db 42 8B 0C 80 01 0A unregistersymbol(EXP) dealloc(newmem) Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 3 мая, 2016 Поделиться Опубликовано 3 мая, 2016 1 час назад, deathguru сказал: значения отображаются, но игра вылетает Игра вылетает: Из-за того, что скорее всего эта инструкция очень часто работает с адресом и в результате происходит быстрое переполнение. Выход: 1. Брать инструкцию, которая работает одно действие в игре -> одно срабатывание инструкции. Ну например когда входим в характеристики героя - одно срабатывание инструкции на чтение ЭКСПЫ. 2. Можно добавить в скрипт флаг на разовое прибавление ЭКСПЫ, но тогда нужно будет включать выключать скрипт. Пример такого скрипта вот попробуй: Скрытый текст [ENABLE] aobscanmodule(EXP,mgsvmgo.exe,42 8B 0C 80 01 0A) alloc(newmem,$1000,"mgsvmgo.exe"+2A0EC16) label(code) label(return) label(flag) registersymbol(EXP) newmem: cmp [flag],1 jne code cmp r8,1A // этот фильтр на всякий случай, т.к.[rax+D4] jne code add dword ptr [rax+D4],#10000 // в этом контейнере [rax+r8*4] может быть не mov [flag],0 // только ЭКСПА. code: mov ecx,[rax+r8*4] add [rdx],ecx jmp return flag: dd 1 EXP: jmp newmem nop return: [DISABLE] EXP: db 42 8B 0C 80 01 0A unregistersymbol(EXP) dealloc(newmem) 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
deathguru Опубликовано 20 мая, 2016 Автор Поделиться Опубликовано 20 мая, 2016 совсем забыл отписаться игра вылетела случайным образом, как оказалось. работает по аналогии со скриптом выше. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 20 мая, 2016 Поделиться Опубликовано 20 мая, 2016 1 час назад, deathguru сказал: совсем забыл отписаться игра вылетела случайным образом, как оказалось. работает по аналогии со скриптом выше. Значит инструкция (mov ecx,[rax+r8*4]) работает не только с перечисленными тобой характеристиками, И при работе моего фильтра (cmp r8,1A) проскакивает несколько адресов, т.е. меняется не только r8, но и rax. Поэтому нужен более точный фильтр. Это уже нужно с игрой поработать, чтобы уточнить. Как посмотреть, какие адреса проскакивают: 1. Активируй мой скрипт. 2. Перейди на инъекцию (jmp newmem, т.е. на адрес newmem). 3. ПКМ по инструкции (add dword ptr [rax+D4],#10000, перед активаций скрипта временно поменяй её на игровую (mov ecx,[rax+r8*4]), чтобы не было вылета и в контекстном меню выбери "Найти адреса, к которым обращается эта инструкция". 4. Поделай что-то в игре у тебя появиться в новом окне адрес опыта и другие, которые имеет в регистре r8 такое же значение 1А. 5. Проделай "Анализ структур", чтобы отфильтровать от ненужных тебе адресов. 6. Перепиши скрипт. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения