Ac1d Опубликовано 27 июня, 2011 Поделиться Опубликовано 27 июня, 2011 Вобщем хочу понять как делать фильтры. Игра NFSCВот скрипт делающий прозрачной мою машину и остальные [ENABLE]//code from here to '[DISABLE]' will be used to enable the cheatalloc(newmem,2048) //2kb should be enoughlabel(returnhere)label(originalcode)label(exit)newmem: //this is allocated memory, you have read,write,execute accessadd [ecx+40],#1originalcode://mov eax,[ecx+40]retint 3exit:jmp returnhere00709A70:jmp newmemreturnhere: [DISABLE]//code from here till the end of the code will be used to disable the cheatdealloc(newmem)00709A70:mov eax,[ecx+40]retint 3//Alt: db 8B 41 40 C3 CCУ меня получилось сделать строчкой add [ecx+40],#1 не мигающую, но прозрачную машину[ENABLE]//code from here to '[DISABLE]' will be used to enable the cheatalloc(newmem,2048) //2kb should be enoughlabel(returnhere)label(originalcode)label(exit)newmem: //this is allocated memory, you have read,write,execute accessmov [ecx+40],#1originalcode:mov eax,[ecx+40]retint 3exit:jmp returnhere00709A70:jmp newmemreturnhere: [DISABLE]//code from here till the end of the code will be used to disable the cheatdealloc(newmem)00709A70:mov eax,[ecx+40]retint 3//Alt: db 8B 41 40 C3 CCОригинал скрипта, так как он должен был быть написан.Подскажите как отфильтровать оригинальный скрипт и сделать прозрачным только меня и если можно дать инфу, где написано про фильтры Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 27 июня, 2011 Поделиться Опубликовано 27 июня, 2011 Попробуй искать цепочку указателей свою и 2-х чужих машин, и затем сравнивать структуры указателей в Cheat Engine "dessect data" из меню дизассемблера. Как это делается есть в статье про Медал Тотал Вар на нашем сайте. Ещё поищи англоязычные статьи Geri по Cheat Engine. Вот одна. У него даже должно быть видео, вроде, по сравнениям структур. Ссылка на комментарий Поделиться на другие сайты Поделиться
Ac1d Опубликовано 27 июня, 2011 Автор Поделиться Опубликовано 27 июня, 2011 Спасибо Ссылка на комментарий Поделиться на другие сайты Поделиться
Ac1d Опубликовано 27 июня, 2011 Автор Поделиться Опубликовано 27 июня, 2011 Смотрел я тутор Geri. Мне не ясно как он нашёл указатель Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 27 июня, 2011 Поделиться Опубликовано 27 июня, 2011 На видео вижу только адреса без указателей. Что конкретно не понятно? Ссылка на комментарий Поделиться на другие сайты Поделиться
Ac1d Опубликовано 27 июня, 2011 Автор Поделиться Опубликовано 27 июня, 2011 Хахахаха. Простите . Но ищатся в этом духе? Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 27 июня, 2011 Поделиться Опубликовано 27 июня, 2011 Сложно сказать в этом духе или в другом... Смотря как разработчики код игры написали. То что на видео, это сравнение данных структур. Можно не стесняться и брать мног структур. Своего героя, пару ботов из твоей команды и по паре ботов из двух других команд... Определяешь группы и ищешь чем они отличаются. Если найдёшь отличие, то сможешь сделать "фильтр" для совершения какого-то действия... Ссылка на комментарий Поделиться на другие сайты Поделиться
Ac1d Опубликовано 27 июня, 2011 Автор Поделиться Опубликовано 27 июня, 2011 push ebx //регистр нам будет нужен, поэтому запихнём его в стек и потом вернём обратно - ebx почему?mov ebx,[core.dll+00155744] //строим многоуровневый указательmov ebx,[ebx+350] - [ebx+350] Что это? Быть может [ebx+250]?add ebx,43C //ebx=[[core.dll+00155744h]+350h]+43Ch – многоуровневый указатель, - Почему 43C?cmp eax,ebx //если игрок наш, то прописать 250 очков здоровьяpop ebx //восстановили ebxjne short originalcodemov byte ptr [eax],#250 //пишем здоровье нашему гирокуoriginalcode: //метка оригинального кодаmov ecx,[eax] //дописываем затёртые инструкции для восстановления логики кодаmov edx,[esp+04] Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 27 июня, 2011 Поделиться Опубликовано 27 июня, 2011 1. ebx выбран автором навскидку. На самом деле, можно использовать любой регистр, лишь бы он не использовался в оригинальном коде, иначе это не будет иметь смысла. Ну и, естественно, крайне не рекомендуется использовать регистр указателя стека (ESP).2. [ebx+350] Что это? Быть может [ebx+250]? - Нет, именно так, как указано, ибо, как видно из найденной цепочки уровней указателей, второй уровень являет собой [[core.dll+00155744h]+350h]+43Ch.3. Почему 43C? - Потому, что по этому смещению нашелся необходимый адрес от указателя верхнего уровня. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 28 июня, 2011 Поделиться Опубликовано 28 июня, 2011 Как написал Xipho по этому скрипту нет ответа почему именно такие смещения прибавляются к регистрам. Эти смещения я когда-то давно искал в отладчике реверсингом совместно со сканером памяти. Суть в том что по выражению [[core.dll+00155744h]+350h]+43Ch находится указатель на адрес здоровья героя. И если этот адрес совпадает с eax на участке кода куда была сделана инъекция, то записать в этот адрес 250 очков здоровь. Если этого не сделать, то все игроки будут бессмертными. Но что здесь неправильно, а то что имея полноценный указатель чуть более правильнее записывать в него данные без сравнения. Именно эту запись нужно делать циклически[[[core.dll+0x00155744]+0x350]+0x43C] = 250 Вот так... push ebx mov ebx,[core.dll+00155744] mov ebx,[ebx+350] mov byte ptr [ebx+43C],#250 pop ebx originalcode: mov ecx,[eax] mov edx,[esp+04] .... Ссылка на комментарий Поделиться на другие сайты Поделиться
Ac1d Опубликовано 28 июня, 2011 Автор Поделиться Опубликовано 28 июня, 2011 Спасибо ребят Ссылка на комментарий Поделиться на другие сайты Поделиться
Ac1d Опубликовано 28 июня, 2011 Автор Поделиться Опубликовано 28 июня, 2011 А вот возможно ли найдя инстр. патрон, залезть в структуру оружия и найти там значения отвечающие за скорость выстрелов, отдача, дёрганье прицела и так далее? Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 28 июня, 2011 Поделиться Опубликовано 28 июня, 2011 Да, возможно, но будут трудности... ) Ссылка на комментарий Поделиться на другие сайты Поделиться
Ac1d Опубликовано 28 июня, 2011 Автор Поделиться Опубликовано 28 июня, 2011 Вас понял. Вот как я понимаю про поиск Multilevel pointers:1 Имея адрес моей жизни и врага я нажимаю на адресе своих жизней Pointer scan for this adress 2 Когда найдёт все указатели я нажимаю на адресе жизней врага Remove pointers no pointing for this adress3 Должен остаться оди указатель и я его добавлю в CE4 Когда я поменяю значение в нём,то и у меня и у врага должно записаться 100 допустимПравильно??? Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 29 июня, 2011 Поделиться Опубликовано 29 июня, 2011 Попробуй сделать и узнаешь правильно ли это Ссылка на комментарий Поделиться на другие сайты Поделиться
Ac1d Опубликовано 29 июня, 2011 Автор Поделиться Опубликовано 29 июня, 2011 Я не дома пока что, так правильно? Ссылка на комментарий Поделиться на другие сайты Поделиться
Ac1d Опубликовано 30 июня, 2011 Автор Поделиться Опубликовано 30 июня, 2011 MasterGH, нужен полноценный тутор вобщем. Ничего не ясно Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 4 июля, 2011 Поделиться Опубликовано 4 июля, 2011 Мне туторы делать некогда Подсказать не могу, т.к. для каждой игры свой случай.Вот статья, там и видео про фильтры Ссылка на комментарий Поделиться на другие сайты Поделиться
Ac1d Опубликовано 6 июля, 2011 Автор Поделиться Опубликовано 6 июля, 2011 Мне кстати понравился твой тутор на чемаксе, но блин он не подходит под мои случаи Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 6 июля, 2011 Поделиться Опубликовано 6 июля, 2011 Очевидно, что у другой игры может быть другой случай Чтобы найти решение нужно кропотливо сидеть и "ковыряться" в коде и данных игрового процесса. Ссылка на комментарий Поделиться на другие сайты Поделиться
Ac1d Опубликовано 8 июля, 2011 Автор Поделиться Опубликовано 8 июля, 2011 Помогите отфильтровать[ENABLE]alloc(newmem,2048)label(returnhere)label(originalcode)label(exit)newmem:mov [ecx+000000a4],#1065353216originalcode:fld dword ptr [ecx+000000a4]//Указательexit:jmp returnhere006F1030:jmp newmemnopreturnhere: [DISABLE]dealloc(newmem)006F1030:fld dword ptr [ecx+000000a4]//Alt: db D9 81 A4 00 00 00 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения