Garik66 Опубликовано 24 мая, 2016 Поделиться Опубликовано 24 мая, 2016 (изменено) В видео рассказываю, как подобрать фильтр, если его сложно (или невозможно) найти при Анализе структуры. Скрипт "Infinite Armmo": Скрытый текст { Game : Game.exe Version: Date : 2016-05-24 Author : Garik66 This script does blah blah blah } [ENABLE] aobscanmodule(Ammo,Game.exe,D8 1D 74 C6 85 00) // should be unique aobscan(Ammo1, 8bxx8bxxxxxxxxxx33xx89xxxx83xxxxxx75xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8axxxxxx8bxxxxxx84xx8bxxxxxxxxxx74xx83) alloc(newmem,$1000) label(newmem1) label(code) label(code1) label(return) label(return1) label(P_Ammo) registersymbol(P_Ammo) registersymbol(Ammo) registersymbol(Ammo1) newmem: mov [P_Ammo],ecx code: fcomp dword ptr [Game.exe+45C674] jmp return newmem1: mov edi,[P_Ammo] sub edi,4 cmp ecx,edi jne code1 mov edi,[Game.exe+429478] mov [ecx],#100 xor [ecx],edi code1: mov esi,[ecx] mov edi,[Game.exe+429478] jmp return1 P_Ammo: dd 0 Ammo: jmp newmem db 90 return: Ammo1: jmp newmem1 db 90 90 90 return1: [DISABLE] Ammo: db D8 1D 74 C6 85 00 Ammo1: db 8B 31 8B 3D 78 94 82 00 unregistersymbol(P_Ammo) unregistersymbol(Ammo) unregistersymbol(Ammo1) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "Game.exe"+2AF066 "Game.exe"+2AF037: D9 98 BC 05 00 00 - fstp dword ptr [eax+000005BC] "Game.exe"+2AF03D: 89 88 C4 05 00 00 - mov [eax+000005C4],ecx "Game.exe"+2AF043: D9 98 C0 05 00 00 - fstp dword ptr [eax+000005C0] "Game.exe"+2AF049: 8B 0D E0 C1 85 00 - mov ecx,[Game.exe+45C1E0] "Game.exe"+2AF04F: E8 CC 76 E8 FF - call Game.exe+136720 "Game.exe"+2AF054: 8D 7E 24 - lea edi,[esi+24] "Game.exe"+2AF057: 8B CF - mov ecx,edi "Game.exe"+2AF059: E8 22 92 D5 FF - call Game.exe+8280 "Game.exe"+2AF05E: 89 44 24 1C - mov [esp+1C],eax "Game.exe"+2AF062: DB 44 24 1C - fild dword ptr [esp+1C] // ---------- INJECTING HERE ---------- "Game.exe"+2AF066: D8 1D 74 C6 85 00 - fcomp dword ptr [Game.exe+45C674] // ---------- DONE INJECTING ---------- "Game.exe"+2AF06C: DF E0 - fnstsw ax "Game.exe"+2AF06E: F6 C4 40 - test ah,40 "Game.exe"+2AF071: 75 1F - jne Game.exe+2AF092 "Game.exe"+2AF073: 8B CF - mov ecx,edi "Game.exe"+2AF075: E8 06 92 D5 FF - call Game.exe+8280 "Game.exe"+2AF07A: 89 44 24 1C - mov [esp+1C],eax "Game.exe"+2AF07E: A1 88 36 7E 00 - mov eax,[Game.exe+3E3688] "Game.exe"+2AF083: DB 44 24 1C - fild dword ptr [esp+1C] "Game.exe"+2AF087: A3 78 C6 85 00 - mov [Game.exe+45C678],eax "Game.exe"+2AF08C: D9 1D 74 C6 85 00 - fstp dword ptr [Game.exe+45C674] } { // ORIGINAL CODE - INJECTION POINT: "Game.exe"+5CBFB "Game.exe"+5CBE8: 5F - pop edi "Game.exe"+5CBE9: 5E - pop esi "Game.exe"+5CBEA: C3 - ret "Game.exe"+5CBEB: 83 E2 03 - and edx,03 "Game.exe"+5CBEE: 03 C2 - add eax,edx "Game.exe"+5CBF0: C1 F8 02 - sar eax,02 "Game.exe"+5CBF3: 85 C0 - test eax,eax "Game.exe"+5CBF5: 7E 17 - jle Game.exe+5CC0E "Game.exe"+5CBF7: 8B D6 - mov edx,esi "Game.exe"+5CBF9: 2B D1 - sub edx,ecx // ---------- INJECTING HERE ---------- "Game.exe"+5CBFB: 8B 31 - mov esi,[ecx] "Game.exe"+5CBFD: 8B 3D 38 1E 80 00 - mov edi,[Game.exe+401E38] // ---------- DONE INJECTING ---------- "Game.exe"+5CC03: 33 F7 - xor esi,edi "Game.exe"+5CC05: 89 34 0A - mov [edx+ecx],esi "Game.exe"+5CC08: 83 C1 04 - add ecx,04 "Game.exe"+5CC0B: 48 - dec eax "Game.exe"+5CC0C: 75 ED - jne Game.exe+5CBFB "Game.exe"+5CC0E: 5F - pop edi "Game.exe"+5CC0F: 5E - pop esi "Game.exe"+5CC10: C3 - ret "Game.exe"+5CC11: 90 - nop "Game.exe"+5CC12: 90 - nop } Видео: Изменено 24 мая, 2016 пользователем Garik66 3 Ссылка на комментарий Поделиться на другие сайты Поделиться
Submarina Опубликовано 25 мая, 2016 Поделиться Опубликовано 25 мая, 2016 (изменено) Хороший урок, но во многих играх можно использовать ID, как показано в твоем видео Garik66, он в структуре меняется, я в таком случае делаю так, делаю анализ данной структуры, там стандартно выставляется начальный размер структуры это 4096 я в таком случае выставляю 100000, или 500000, и ID сразу Находится это работает почти во всех играх. Конечно приходится ждать немного, пока структура с таким размером появится.Вот Живой тому пример mov eax,[rcx+00054055]/////////54055 Изменено 25 мая, 2016 пользователем Baracuda Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 25 мая, 2016 Автор Поделиться Опубликовано 25 мая, 2016 1 час назад, Baracuda сказал: я в таком случае выставляю 100000 Для примера, который я привёл и именно для той инструкции, которая временно расшифровывает значения, смысла увеличивать размер структуры нету. Объясню: Под каждую характеристику в этой структуре отводится всего лишь 20 байт, т.е. через каждые 20 байт идёт следующая характеристика. А на этих 20 байтах все значения меняются и поинтеры тоже. Конечно, если пораскрывать поинтеры, то возможно можно будет найти что-нибудь на каком-нибудь уровне, но скорее всего нет. А скрипт, который я написал можно упростить, не привязывая его к основной инструкции, т.к. инструкция, работающая с видимым значением работает гораздо чаще, чем основная. Скрипт "Infinite Armmo v.1": Скрытый текст { Game : Game.exe Version: Date : 2016-05-24 Author : Garik66 This script does blah blah blah } [ENABLE] aobscanmodule(Ammo,Game.exe,D8 1D 74 C6 85 00) // should be unique alloc(newmem,$1000) label(code) label(return) registersymbol(Ammo) newmem: push edi mov edi,[Game.exe+429478] mov [ecx-04],#100 xor [ecx-04],edi pop edi code: fcomp dword ptr [Game.exe+45C674] jmp return Ammo: jmp newmem db 90 return: [DISABLE] Ammo: db D8 1D 74 C6 85 00 unregistersymbol(Ammo) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "Game.exe"+2AF066 "Game.exe"+2AF037: D9 98 BC 05 00 00 - fstp dword ptr [eax+000005BC] "Game.exe"+2AF03D: 89 88 C4 05 00 00 - mov [eax+000005C4],ecx "Game.exe"+2AF043: D9 98 C0 05 00 00 - fstp dword ptr [eax+000005C0] "Game.exe"+2AF049: 8B 0D E0 C1 85 00 - mov ecx,[Game.exe+45C1E0] "Game.exe"+2AF04F: E8 CC 76 E8 FF - call Game.exe+136720 "Game.exe"+2AF054: 8D 7E 24 - lea edi,[esi+24] "Game.exe"+2AF057: 8B CF - mov ecx,edi "Game.exe"+2AF059: E8 22 92 D5 FF - call Game.exe+8280 "Game.exe"+2AF05E: 89 44 24 1C - mov [esp+1C],eax "Game.exe"+2AF062: DB 44 24 1C - fild dword ptr [esp+1C] // ---------- INJECTING HERE ---------- "Game.exe"+2AF066: D8 1D 74 C6 85 00 - fcomp dword ptr [Game.exe+45C674] // ---------- DONE INJECTING ---------- "Game.exe"+2AF06C: DF E0 - fnstsw ax "Game.exe"+2AF06E: F6 C4 40 - test ah,40 "Game.exe"+2AF071: 75 1F - jne Game.exe+2AF092 "Game.exe"+2AF073: 8B CF - mov ecx,edi "Game.exe"+2AF075: E8 06 92 D5 FF - call Game.exe+8280 "Game.exe"+2AF07A: 89 44 24 1C - mov [esp+1C],eax "Game.exe"+2AF07E: A1 88 36 7E 00 - mov eax,[Game.exe+3E3688] "Game.exe"+2AF083: DB 44 24 1C - fild dword ptr [esp+1C] "Game.exe"+2AF087: A3 78 C6 85 00 - mov [Game.exe+45C678],eax "Game.exe"+2AF08C: D9 1D 74 C6 85 00 - fstp dword ptr [Game.exe+45C674] } { // ORIGINAL CODE - INJECTION POINT: "Game.exe"+5CBFB "Game.exe"+5CBE8: 5F - pop edi "Game.exe"+5CBE9: 5E - pop esi "Game.exe"+5CBEA: C3 - ret "Game.exe"+5CBEB: 83 E2 03 - and edx,03 "Game.exe"+5CBEE: 03 C2 - add eax,edx "Game.exe"+5CBF0: C1 F8 02 - sar eax,02 "Game.exe"+5CBF3: 85 C0 - test eax,eax "Game.exe"+5CBF5: 7E 17 - jle Game.exe+5CC0E "Game.exe"+5CBF7: 8B D6 - mov edx,esi "Game.exe"+5CBF9: 2B D1 - sub edx,ecx // ---------- INJECTING HERE ---------- "Game.exe"+5CBFB: 8B 31 - mov esi,[ecx] "Game.exe"+5CBFD: 8B 3D 38 1E 80 00 - mov edi,[Game.exe+401E38] // ---------- DONE INJECTING ---------- "Game.exe"+5CC03: 33 F7 - xor esi,edi "Game.exe"+5CC05: 89 34 0A - mov [edx+ecx],esi "Game.exe"+5CC08: 83 C1 04 - add ecx,04 "Game.exe"+5CC0B: 48 - dec eax "Game.exe"+5CC0C: 75 ED - jne Game.exe+5CBFB "Game.exe"+5CC0E: 5F - pop edi "Game.exe"+5CC0F: 5E - pop esi "Game.exe"+5CC10: C3 - ret "Game.exe"+5CC11: 90 - nop "Game.exe"+5CC12: 90 - nop } Вот этот скрипт работает также, как и первый. Ссылка на комментарий Поделиться на другие сайты Поделиться
Submarina Опубликовано 25 мая, 2016 Поделиться Опубликовано 25 мая, 2016 (изменено) Если ты Garik66 не знал, то ID можно использовать почти любой который не меняется после перезагрузки игры, если ты ищет ID на здоровья, это не значит что он может находится в именно в структуре Здоровья, вот обет все и забывают. таких игр немерено, где ID просто нет в начале структуры, он где то глубоко в структуре, вот я в таком случае и выставляю размер большой. Я скачаю игру, посмотрю. Изменено 25 мая, 2016 пользователем Baracuda Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 25 мая, 2016 Автор Поделиться Опубликовано 25 мая, 2016 55 минут назад, Baracuda сказал: Если ты Garik66 не знал, то ID можно использовать почти любой Знал и очень давно писал для новичков об этом -.> здесь. Ссылка на комментарий Поделиться на другие сайты Поделиться
Submarina Опубликовано 26 мая, 2016 Поделиться Опубликовано 26 мая, 2016 (изменено) Да Garik66, спасибо я читал, самый правильный способ узнать тот ли это ID вы нашли, Это находить например Здоровья игрока, делаешь анализ данной структуры, выставляешь сразу 50000 можно больше выставить размер структуры. Вы находите ID у вас он 5 у врага этот ID 3 после сохраняете, я обычто сохраняю всю структуры в текстовом документе.txt, после не перезагружаете игру 3-4 раза, а перезагружаете её 1 раз и начинаете игру заново. Это самое главное, почему заново потому что при новом старте все данные сбрасываются буду говорить так на заводские, после что бы конкретно убедится что ID на Здоровья который вы нашли правильный, Закрываете игру, и загружаете какие ни будь сохранения, где уже пройдена игра, или пройдена на половину, и тогда всё становится ясным, тот ли ID на Здоровья вы нашли, и только после этого ID на здоровья будет работать на других операционных системах. ВСЕ ТОЖЕ САМОЕ ДЕЛАЕМ И С РЕГИСТРАМИ Изменено 26 мая, 2016 пользователем Baracuda Ссылка на комментарий Поделиться на другие сайты Поделиться
Submarina Опубликовано 2 июня, 2016 Поделиться Опубликовано 2 июня, 2016 Command & Conquer - Renegade, игра весит мало, но у меня она почему то не запускается, скачивал самую последнюю версию игры. Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 2 июня, 2016 Поделиться Опубликовано 2 июня, 2016 13 минуты назад, Baracuda сказал: Command & Conquer - Renegade В личку дал игру - это лицензия и как бы у всех должна работать. У меня работает, так же Игорю давал её и у него работает. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения