Garik66 Опубликовано 18 марта, 2016 Поделиться Опубликовано 18 марта, 2016 Ну и кстати добавлять предметы в скрипте, до их подбора в игре, тоже не проблема. Скрипт писать не буду, попробуй сам. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 18 марта, 2016 Поделиться Опубликовано 18 марта, 2016 В 18.03.2016 в 18:07, SergBrNord сказал: Только я вот не понимаю, про какой флаг речь? Показать mov [ecx+1C], 1 //Пишем тот флаг Ты же вроде сам его так назвал. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 18 марта, 2016 Поделиться Опубликовано 18 марта, 2016 Что-то вы какой-то спор ни о чем затеяли, друзья. Завязывайте. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 18 марта, 2016 Поделиться Опубликовано 18 марта, 2016 В 18.03.2016 в 16:45, SergBrNord сказал: Правда, на этом моменте у меня мозг немного переклинило: Цитата Now back to the case. If You have clicked on more information, You can see the code that You have examined and the value of the registers. Make sure to remember what is between the [ ] and what is the value of the register. Now click on "Hex" left to the value box in CE, type in the value of the register and search for it. You have found the address of the pointer. Click on "Add address manually". Select pointer, and type in the address of the pointer that You have found. If You have done it right, You have added an address to the table which will "track" the location of Your health, wherever it is. Показать Я не могу сообразить где тут собака зарыта? Мы находим значение регистра. Но смысл? Нет, ну я, конечно, пробовал сделать так в Сэме но получилась чушь в 2к+ адресов, практически не отсеивающаяся. Показать Здесь всё правильно и понятно, это грубо ШАГ № 8 Туториала. Если не понял повтори "Обучение СЕ" 8 шаг. Часто это использую в играх, если не нахожу фильтра в первой струтуре, то нахожу этим способом первый поинтер и уже из него исследую струтуру, часто уже на первом уровне указателя в структуре лежит обычно текстовый фильтр (ID). Но для новой твоей игры этот метод к сожалению не подходит. Поэтому и пробовал искать указатели автоматически. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 18 марта, 2016 Поделиться Опубликовано 18 марта, 2016 (изменено) В 18.03.2016 в 18:25, Garik66 сказал: Если у тебя не подобрано в игре, то скорее всего будет вылет из игры. Потестируй свой скрипт, например загрузи самое начало игры пока ничего нет, активируй свой скрипт и посмотри, что будет . Показать Проверил твой скрипт, без проблем добавляет патроны и вылетов нет, так что проверка флага не нужна. Есть одна опечатка в скрипте mov [esi+00000A50],#998 //flamethrower mov [esi+00000A50],#799 //lasergun нужно [esi+00000A60] и push ecx pop ecx в данном случае не нужны, так как ecx затирается другим значением дальше по коду игры. Добавил в скрипт, добавление оружия без его подбора в игре: Показать контент { Game : SamHD_TSE.exe Version: Date : 2016-03-18 Author : Garik66 This script does blah blah blah } [ENABLE] aobscanmodule(GodMod,SamHD_TSE.exe,39 86 98 04 00 00) // should be unique alloc(newmem,$1000) label(code) label(return) label(flag) registersymbol(GodMod) newmem: mov ecx,[esi+58] cmp [ecx],79616C50 jne code // Блок - бесконечные НР, Armor и Ammo mov [esi+00000488],#99 //Heath mov [esi+0000049C],#98 //Armor mov [esi+00000A10],#199 //shotsgun + db shotgun mov [esi+00000A20],#998 //tompson + minigan mov [esi+00000A30],#99 //rocketlauncher mov [esi+00000A40],#99 //grenadegun mov [esi+00000A50],#998 //flamethrower mov [esi+00000A60],#799 //lasergun mov [esi+00000A70],#59 //SBC mov [esi+00000A80],#99 //sniper rifle mov [esi+00000A90],#4 //bomb // Блок - разового добавления Weapon cmp [flag],1 jne code mov [esi+ad8],#32767 // Weapon, откуда цифра смотри следующий спойлер. mov [flag],0 code: cmp [esi+00000498],eax jmp return flag: dd 1 GodMod: jmp newmem nop return: [DISABLE] GodMod: db 39 86 98 04 00 00 unregistersymbol(GodMod) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "SamHD_TSE.exe"+6BBA6 "SamHD_TSE.exe"+6BB80: 74 10 - je SamHD_TSE.exe+6BB92 "SamHD_TSE.exe"+6BB82: 83 BE 38 08 00 00 00 - cmp dword ptr [esi+00000838],00 "SamHD_TSE.exe"+6BB89: 74 07 - je SamHD_TSE.exe+6BB92 "SamHD_TSE.exe"+6BB8B: 8B CE - mov ecx,esi "SamHD_TSE.exe"+6BB8D: E8 1E 46 FF FF - call SamHD_TSE.exe+601B0 "SamHD_TSE.exe"+6BB92: 8B CE - mov ecx,esi "SamHD_TSE.exe"+6BB94: E8 B7 FD 02 00 - call SamHD_TSE.exe+9B950 "SamHD_TSE.exe"+6BB99: 8D BE 88 04 00 00 - lea edi,[esi+00000488] "SamHD_TSE.exe"+6BB9F: 8B CF - mov ecx,edi "SamHD_TSE.exe"+6BBA1: E8 4A 0B 48 00 - call SamHD_TSE.exe+4EC6F0 // ---------- INJECTING HERE ---------- "SamHD_TSE.exe"+6BBA6: 39 86 98 04 00 00 - cmp [esi+00000498],eax // ---------- DONE INJECTING ---------- "SamHD_TSE.exe"+6BBAC: 75 0B - jne SamHD_TSE.exe+6BBB9 "SamHD_TSE.exe"+6BBAE: 8B CE - mov ecx,esi "SamHD_TSE.exe"+6BBB0: E8 2B AE 00 00 - call SamHD_TSE.exe+769E0 "SamHD_TSE.exe"+6BBB5: 85 C0 - test eax,eax "SamHD_TSE.exe"+6BBB7: 75 19 - jne SamHD_TSE.exe+6BBD2 "SamHD_TSE.exe"+6BBB9: 8B 16 - mov edx,[esi] "SamHD_TSE.exe"+6BBBB: 8B 82 B8 06 00 00 - mov eax,[edx+000006B8] "SamHD_TSE.exe"+6BBC1: 8B CE - mov ecx,esi "SamHD_TSE.exe"+6BBC3: FF D0 - call eax "SamHD_TSE.exe"+6BBC5: 8B CF - mov ecx,edi } Показать контент Двоичная система (часто используется в играх) 2Е0 = 1 - нож 1 2Е1 = 2 - пила 3 2Е2 = 4 - 1 пистолет 7 2Е3 = 8 - 2 пистолета 15 2Е4 = 16 - дробовик 31 2Е5 = 32 - двустволка 63 2Е6 = 64 - автомат 127 2Е7 = 128 - миниган 255 2Е8 = 256 - гранатомёт 511 2Е9 = 512 - ракетница 1023 2Е10= 1024 - огнемёт 2047 2Е11= 2048 - лазер 4095 2Е12= 4096 - пушка 8191 2Е13= 8192 - снайперка 16383 2Е14=16384 - бомбочка 32767 2Е15=32768 - 65535(вроде не появляется ничё) Судя по Вики всего 15 видов оружия. Изменено 19 марта, 2016 пользователем Garik66 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
SergBrNord Опубликовано 19 марта, 2016 Автор Поделиться Опубликовано 19 марта, 2016 В 18.03.2016 в 23:23, Garik66 сказал: Добавил в скрипт, добавление оружия без его подбора в игре: Показать контент { Game : SamHD_TSE.exe Version: Date : 2016-03-18 Author : Garik66 This script does blah blah blah } [ENABLE] aobscanmodule(GodMod,SamHD_TSE.exe,39 86 98 04 00 00) // should be unique alloc(newmem,$1000) label(code) label(return) label(flag) registersymbol(GodMod) newmem: mov ecx,[esi+58] cmp [ecx],79616C50 jne code // Блок - бесконечные НР, Armor и Ammo mov [esi+00000488],#99 //Heath mov [esi+0000049C],#98 //Armor mov [esi+00000A10],#199 //shotsgun + db shotgun mov [esi+00000A20],#998 //tompson + minigan mov [esi+00000A30],#99 //rocketlauncher mov [esi+00000A40],#99 //grenadegun mov [esi+00000A50],#998 //flamethrower mov [esi+00000A60],#799 //lasergun mov [esi+00000A70],#59 //SBC mov [esi+00000A80],#99 //sniper rifle mov [esi+00000A90],#4 //bomb // Блок - разового добавления Weapon cmp [flag],1 jne code mov [esi+ad8],#32767 // Weapon, откуда цифра смотри следующий спойлер. mov [flag],0 code: cmp [esi+00000498],eax jmp return flag: dd 1 GodMod: jmp newmem nop return: [DISABLE] GodMod: db 39 86 98 04 00 00 unregistersymbol(GodMod) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "SamHD_TSE.exe"+6BBA6 "SamHD_TSE.exe"+6BB80: 74 10 - je SamHD_TSE.exe+6BB92 "SamHD_TSE.exe"+6BB82: 83 BE 38 08 00 00 00 - cmp dword ptr [esi+00000838],00 "SamHD_TSE.exe"+6BB89: 74 07 - je SamHD_TSE.exe+6BB92 "SamHD_TSE.exe"+6BB8B: 8B CE - mov ecx,esi "SamHD_TSE.exe"+6BB8D: E8 1E 46 FF FF - call SamHD_TSE.exe+601B0 "SamHD_TSE.exe"+6BB92: 8B CE - mov ecx,esi "SamHD_TSE.exe"+6BB94: E8 B7 FD 02 00 - call SamHD_TSE.exe+9B950 "SamHD_TSE.exe"+6BB99: 8D BE 88 04 00 00 - lea edi,[esi+00000488] "SamHD_TSE.exe"+6BB9F: 8B CF - mov ecx,edi "SamHD_TSE.exe"+6BBA1: E8 4A 0B 48 00 - call SamHD_TSE.exe+4EC6F0 // ---------- INJECTING HERE ---------- "SamHD_TSE.exe"+6BBA6: 39 86 98 04 00 00 - cmp [esi+00000498],eax // ---------- DONE INJECTING ---------- "SamHD_TSE.exe"+6BBAC: 75 0B - jne SamHD_TSE.exe+6BBB9 "SamHD_TSE.exe"+6BBAE: 8B CE - mov ecx,esi "SamHD_TSE.exe"+6BBB0: E8 2B AE 00 00 - call SamHD_TSE.exe+769E0 "SamHD_TSE.exe"+6BBB5: 85 C0 - test eax,eax "SamHD_TSE.exe"+6BBB7: 75 19 - jne SamHD_TSE.exe+6BBD2 "SamHD_TSE.exe"+6BBB9: 8B 16 - mov edx,[esi] "SamHD_TSE.exe"+6BBBB: 8B 82 B8 06 00 00 - mov eax,[edx+000006B8] "SamHD_TSE.exe"+6BBC1: 8B CE - mov ecx,esi "SamHD_TSE.exe"+6BBC3: FF D0 - call eax "SamHD_TSE.exe"+6BBC5: 8B CF - mov ecx,edi } Показать контент Двоичная система (часто используется в играх) 2Е0 = 1 - нож 1 2Е1 = 2 - пила 3 2Е2 = 4 - 1 пистолет 7 2Е3 = 8 - 2 пистолета 15 2Е4 = 16 - дробовик 31 2Е5 = 32 - двустволка 63 2Е6 = 64 - автомат 127 2Е7 = 128 - миниган 255 2Е8 = 256 - гранатомёт 511 2Е9 = 512 - ракетница 1023 2Е10= 1024 - огнемёт 2047 2Е11= 2048 - лазер 4095 2Е12= 4096 - пушка 8191 2Е13= 8192 - снайперка 16383 2Е14=16384 - бомбочка 32767 2Е15=32768 - 65535(вроде не появляется ничё) Судя по Вики всего 15 видов оружия. Показать Как я понял, ты сравнением структур нашёл это значение? 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 19 марта, 2016 Поделиться Опубликовано 19 марта, 2016 В 19.03.2016 в 11:07, SergBrNord сказал: Как я понял, ты сравнением структур нашёл это значение? Показать Нет. Просто взял инструкцию на чтение игры (их две - можно любую) в отдладчике, ПКМ по ней, из контекстного меню выбрал строчку "Найти адреса, к которым обращается эта инструкция" и после этого подобрал сперва одно оружие в игре, которого у меня не было - вышел на адрес, подобрал второе - стало сразу понятно, а потом уже вручную менял значение в адресе в таблице, следуя двоичной сиситеме. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 19 марта, 2016 Поделиться Опубликовано 19 марта, 2016 (изменено) Кстати там много чего таким образом можно найти. Например явно виден адрес счётчика нахождения секретных вещей, короче поэкспериментируй, там много чего есть. Изменено 19 марта, 2016 пользователем Garik66 Ссылка на комментарий Поделиться на другие сайты Поделиться
SergBrNord Опубликовано 19 марта, 2016 Автор Поделиться Опубликовано 19 марта, 2016 В 19.03.2016 в 11:15, Garik66 сказал: Просто взял инструкцию на чтение игры (их две - можно любую) в отдладчике, ПКМ по ней, из контекстного меню выбрал строчку "Найти адреса, к которым обращается эта инструкция" и после этого подобрал сперва одно оружие в игре, которого у меня не было - вышел на адрес, подобрал второе - стало сразу понятно, а потом уже вручную менял значение в адресе в таблице, следуя двоичной сиситеме. Показать Я так понимаю, одна из них та, на которую ты второй вариант скрипта писал? В 19.03.2016 в 11:17, Garik66 сказал: Кстати там много чего таким образом можно найти. Например явно виден адрес счётчика нахождения секретных вещей, короче поэкспериментируй, там много чего есть. Показать Гарик, а ты пробовал координаты поискать? Я пробовал как на видео у Xipho, но у меня из получившихся значений ничто не оказалось координатами игрока. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 19 марта, 2016 Поделиться Опубликовано 19 марта, 2016 В 19.03.2016 в 12:58, SergBrNord сказал: Я так понимаю, одна из них та, на которую ты второй вариант скрипта писал? Показать Не знаю какой вариант - скриптов было много, короче вот здесь скрипт на одну из этих инструкций: В 19.03.2016 в 12:58, SergBrNord сказал: Гарик, а ты пробовал координаты поискать? Показать Нет не пробовал. А что нужна помощь? Они скорее всего в той же структуре будут. Ссылка на комментарий Поделиться на другие сайты Поделиться
SergBrNord Опубликовано 19 марта, 2016 Автор Поделиться Опубликовано 19 марта, 2016 В 19.03.2016 в 13:07, Garik66 сказал: Нет не пробовал. А что нужна помощь? Они скорее всего в той же структуре будут. Показать Я не могу выйти на адрес хотя бы одной координаты - пытался сделать так же как на видео у Xipho, но ничего не замораживается. Не могу понять, что же делаю не так?... Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 20 марта, 2016 Поделиться Опубликовано 20 марта, 2016 (изменено) В 19.03.2016 в 12:58, SergBrNord сказал: Не могу понять, что же делаю не так?... Показать Игра не стабильная, постоянно вылетает, нужно терпение. Подскажу более быстрый способ для твоей игры - как выйти на координату Z (высоту). Загрузи самое начало (мостик около озера, на дне которого гранатомёт, а на другом берегу бронь, пистолет и красная телефонная будка) Подключи консоль -> подключи "Режим полёта". Начни поиск: Тип "float" Диапозон 0 до 5, стоя на мостике. А дальше поднялся вверх - увеличилось, опустился - уменьшилось. Перед проверкой адресов заморозкой, останется около 160 адресов, среди них есть искомая координата Z, при заморозке которой ГГ не будет опускаться вниз и подниматься вверх, в регионе памяти найдёшь и другие координаты. Но правда тебе это ни чего не даст, поймёшь, когда увидишь инструкции работающие с этими адресами. Там ещё нужно будет разбираться и задавать много вопросов тебе на форуме, чтобы написать телепорт. Изменено 20 марта, 2016 пользователем Garik66 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 21 марта, 2016 Поделиться Опубликовано 21 марта, 2016 (изменено) SergBrNord, написал скрипт для включения читов от разработчиков, чтобы не играться с консолью "Disable / Enable cheats (0/1)": Показать контент { Game : SamHD_TSE.exe Version: Date : 2016-03-20 Author : Garik66 This script does blah blah blah } [ENABLE] aobscanmodule(INJECT1_1,SamHD_TSE.exe,83 3D 58 28 E1 00 00 56 8B F1 0F 84 20) // should be unique alloc(newmem,$1000) label(code) label(return) label(DisplayInterface) registersymbol(DisplayInterface) label(GhostMode) registersymbol(GhostMode) label(FlightMode) registersymbol(FlightMode) label(StealthMode) registersymbol(StealthMode) label(TurboMode) registersymbol(TurboMode) label(GodMode) registersymbol(GodMode) registersymbol(INJECT1_1) newmem: mov [SamHD_TSE.exe+B35268],2 push [DisplayInterface] pop [SamHD_TSE.exe+A12858] push [GhostMode] pop [SamHD_TSE.exe+B35270] push [FlightMode] pop [SamHD_TSE.exe+B35274] push [StealthMode] pop [SamHD_TSE.exe+B35278] push [TurboMode] pop [SamHD_TSE.exe+B3527C] push [GodMode] pop [SamHD_TSE.exe+B35288] code: cmp dword ptr [SamHD_TSE.exe+A12858],00 jmp return DisplayInterface: dd 1 GhostMode: dd 0 FlightMode: dd 0 StealthMode: dd 0 TurboMode: dd 0 GodMode: dd 0 INJECT1_1: jmp newmem nop nop return: [DISABLE] INJECT1_1: db 83 3D 58 28 E1 00 00 unregistersymbol(GodMode) unregistersymbol(TurboMode) unregistersymbol(StealthMode) unregistersymbol(FlightMode) unregistersymbol(GhostMode) unregistersymbol(DisplayInterface) unregistersymbol(INJECT1_1) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "SamHD_TSE.exe"+27E8D6 "SamHD_TSE.exe"+27E8C9: CC - int 3 "SamHD_TSE.exe"+27E8CA: CC - int 3 "SamHD_TSE.exe"+27E8CB: CC - int 3 "SamHD_TSE.exe"+27E8CC: CC - int 3 "SamHD_TSE.exe"+27E8CD: CC - int 3 "SamHD_TSE.exe"+27E8CE: CC - int 3 "SamHD_TSE.exe"+27E8CF: CC - int 3 "SamHD_TSE.exe"+27E8D0: 55 - push ebp "SamHD_TSE.exe"+27E8D1: 8B EC - mov ebp,esp "SamHD_TSE.exe"+27E8D3: 83 EC 44 - sub esp,44 // ---------- INJECTING HERE ---------- "SamHD_TSE.exe"+27E8D6: 83 3D 58 28 E1 00 00 - cmp dword ptr [SamHD_TSE.exe+A12858],00 // ---------- DONE INJECTING ---------- "SamHD_TSE.exe"+27E8DD: 56 - push esi "SamHD_TSE.exe"+27E8DE: 8B F1 - mov esi,ecx "SamHD_TSE.exe"+27E8E0: 0F 84 20 02 00 00 - je SamHD_TSE.exe+27EB06 "SamHD_TSE.exe"+27E8E6: 8B 46 5C - mov eax,[esi+5C] "SamHD_TSE.exe"+27E8E9: 53 - push ebx "SamHD_TSE.exe"+27E8EA: 57 - push edi "SamHD_TSE.exe"+27E8EB: 89 45 E0 - mov [ebp-20],eax "SamHD_TSE.exe"+27E8EE: 8B 45 E0 - mov eax,[ebp-20] "SamHD_TSE.exe"+27E8F1: 3B 05 C8 D6 E1 00 - cmp eax,[SamHD_TSE.exe+A1D6C8] "SamHD_TSE.exe"+27E8F7: 0F 4F 05 C8 D6 E1 00 - cmovg eax,[SamHD_TSE.exe+A1D6C8] } И табличка уже с нужными адресами в ней. Горячие клавиши не назначал. Ниже залил новую табличку с телепортом. Изменено 22 марта, 2016 пользователем Garik66 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
SergBrNord Опубликовано 22 марта, 2016 Автор Поделиться Опубликовано 22 марта, 2016 (изменено) В 20.03.2016 в 15:43, Garik66 сказал: Перед проверкой адресов заморозкой, останется около 160 адресов, среди них есть искомая координата Z, при заморозке которой ГГ не будет опускаться вниз и подниматься вверх, в регионе памяти найдёшь и другие координаты. Но правда тебе это ни чего не даст, поймёшь, когда увидишь инструкции работающие с этими адресами. Там ещё нужно будет разбираться и задавать много вопросов тебе на форуме, чтобы написать телепорт. Показать Появилось наконец-то время, сейчас попробую. Правда есть опасения, что таким образом я выйду на функцию, отвечающую за полёт в чит режиме. Я подобным образом уже пробовал делать - брал тот же уровень и нырял в яму с водой. Но при заморозке значений игра любила вылетать =) Изменено 22 марта, 2016 пользователем SergBrNord Ссылка на комментарий Поделиться на другие сайты Поделиться
SergBrNord Опубликовано 22 марта, 2016 Автор Поделиться Опубликовано 22 марта, 2016 (изменено) Вот нашёл координаты и посмотрел в памяти что где: Показать контент Поставил останов на X: Показать контент Останов на Y: Показать контент Останов на Z: Показать контент Собственно, с какой инструкции начать работать лучше? Я не вижу ни одной подходящей Upd. Пока буду работать с X, так как Z - бессмысленно; Y - в структуре чушь. Изменено 22 марта, 2016 пользователем SergBrNord Ссылка на комментарий Поделиться на другие сайты Поделиться
SergBrNord Опубликовано 22 марта, 2016 Автор Поделиться Опубликовано 22 марта, 2016 (изменено) В общем, практически зеркально повторилась ситуация с нахождением инструкции по здоровью. Скриншот с остановом по X в предыдущем посте я заскринил неправильно и позже это понял. Однако это привело к пониманию, что структура с координатами лежит в EAX. Показать контент Кстати, в ESI лежит практически то же самое... Изменено 22 марта, 2016 пользователем SergBrNord Ссылка на комментарий Поделиться на другие сайты Поделиться
SergBrNord Опубликовано 22 марта, 2016 Автор Поделиться Опубликовано 22 марта, 2016 Что собственно, получилось: Показать контент { Game : SamHD_TSE.exe Version: Date : 2016-03-22 Author : SergBrNord } [ENABLE] //code from here to '[DISABLE]' will be used to enable the cheat aobscanmodule(TELEPORT,SamHD_TSE.exe,F3 0F 11 45 FC F3 A5 76) // should be unique alloc(newmem,$1000) label(code) label(return) label(saveCRDS) label(tflag) newmem: cmp byte ptr[tflag], 0 je code cmp byte ptr [tflag], 1 jne @F push edx mov edx, [eax+3C] mov [saveCRDS], edx mov edx, [eax+40] mov [saveCRDS+4], edx mov edx, [eax+44] mov [saveCRDS+8], edx pop edx mov byte ptr [tflag], 0 @F: cmp byte ptr[tflag], 2 jne code push edx mov edx, [saveCRDS] mov [eax+3C], edx mov edx, [saveCRDS+4] mov [eax+40], edx mov edx, [saveCRDS+8] mov [eax+44], edx pop edx mov byte ptr [tflag], 0 code: movss [ebp-04],xmm0 jmp return tflag: db 00 saveCRDS: db 00 00 00 00 00 00 00 00 00 00 00 00 TELEPORT: jmp newmem return: registersymbol(TELEPORT) registersymbol(tflag) [DISABLE] //code from here till the end of the code will be used to disable the cheat TELEPORT: db F3 0F 11 45 FC unregistersymbol(TELEPORT) unregistersymbol(tflag) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "SamHD_TSE.exe"+FF96E "SamHD_TSE.exe"+FF946: D9 83 B0 09 00 00 - fld dword ptr [ebx+000009B0] "SamHD_TSE.exe"+FF94C: 8B 83 24 01 00 00 - mov eax,[ebx+00000124] "SamHD_TSE.exe"+FF952: 0F 57 C0 - xorps xmm0,xmm0 "SamHD_TSE.exe"+FF955: D9 5D E0 - fstp dword ptr [ebp-20] "SamHD_TSE.exe"+FF958: D9 45 E0 - fld dword ptr [ebp-20] "SamHD_TSE.exe"+FF95B: 8D 70 2C - lea esi,[eax+2C] "SamHD_TSE.exe"+FF95E: DD 05 30 50 B9 00 - fld qword ptr [SamHD_TSE.exe+795030] "SamHD_TSE.exe"+FF964: B9 07 00 00 00 - mov ecx,00000007 "SamHD_TSE.exe"+FF969: DF F1 - fcomip st(0),st(1) "SamHD_TSE.exe"+FF96B: 8D 7D BC - lea edi,[ebp-44] // ---------- INJECTING HERE ---------- "SamHD_TSE.exe"+FF96E: F3 0F 11 45 FC - movss [ebp-04],xmm0 // ---------- DONE INJECTING ---------- "SamHD_TSE.exe"+FF973: F3 A5 - repe movsd "SamHD_TSE.exe"+FF975: 76 08 - jna SamHD_TSE.exe+FF97F "SamHD_TSE.exe"+FF977: D8 6D D0 - fsubr dword ptr [ebp-30] "SamHD_TSE.exe"+FF97A: D9 5D FC - fstp dword ptr [ebp-04] "SamHD_TSE.exe"+FF97D: EB 02 - jmp SamHD_TSE.exe+FF981 "SamHD_TSE.exe"+FF97F: DD D8 - fstp st(0) "SamHD_TSE.exe"+FF981: F3 0F 10 45 D0 - movss xmm0,[ebp-30] "SamHD_TSE.exe"+FF986: 8B B3 48 07 00 00 - mov esi,[ebx+00000748] "SamHD_TSE.exe"+FF98C: 8B BB 4C 07 00 00 - mov edi,[ebx+0000074C] "SamHD_TSE.exe"+FF992: 8D 45 E8 - lea eax,[ebp-18] } Ссылка на таблицу 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 22 марта, 2016 Поделиться Опубликовано 22 марта, 2016 (изменено) В 22.03.2016 в 15:23, SergBrNord сказал: Что собственно, получилось: Показать Молодец! Я тоже написал для тебя скрипт (сегодня утром), он более компактен : Показать контент { Game : SamHD_TSE.exe Version: Date : 2016-03-22 Author : Garik66 This script does blah blah blah } [ENABLE] aobscanmodule(Teleport,SamHD_TSE.exe,F3 0F 11 45 FC F3 A5 76) // should be unique alloc(newmem,$1000) label(code) label(return) label(coordX) label(coordY) label(coordZ) label(Flag1) registersymbol(Flag1) registersymbol(Teleport) newmem: cmp [Flag1],0 je code cmp [Flag1],1 jne @f push [eax+3C] pop [coordX] push [eax+40] pop [coordZ] push [eax+44] pop [coordY] @@: cmp [coordX],0 je code cmp [Flag1],2 jne code push [coordX] pop [eax+3C] push [coordZ] pop [eax+40] push [coordY] pop [eax+44] code: mov [Flag1],0 movss [ebp-04],xmm0 jmp return coordX: dd 0 coordY: dd 0 coordZ: dd 0 Flag1: dd 0 Teleport: jmp newmem return: [DISABLE] Teleport: db F3 0F 11 45 FC unregistersymbol(Flag1) unregistersymbol(Teleport) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "SamHD_TSE.exe"+FCBDE "SamHD_TSE.exe"+FCBB6: D9 83 B0 09 00 00 - fld dword ptr [ebx+000009B0] "SamHD_TSE.exe"+FCBBC: 8B 83 24 01 00 00 - mov eax,[ebx+00000124] "SamHD_TSE.exe"+FCBC2: 0F 57 C0 - xorps xmm0,xmm0 "SamHD_TSE.exe"+FCBC5: D9 5D E0 - fstp dword ptr [ebp-20] "SamHD_TSE.exe"+FCBC8: D9 45 E0 - fld dword ptr [ebp-20] "SamHD_TSE.exe"+FCBCB: 8D 70 2C - lea esi,[eax+2C] "SamHD_TSE.exe"+FCBCE: DD 05 A8 FD B7 00 - fld qword ptr [SamHD_TSE.exe+77FDA8] "SamHD_TSE.exe"+FCBD4: B9 07 00 00 00 - mov ecx,00000007 "SamHD_TSE.exe"+FCBD9: DF F1 - fcomip st(0),st(1) "SamHD_TSE.exe"+FCBDB: 8D 7D BC - lea edi,[ebp-44] // ---------- INJECTING HERE ---------- "SamHD_TSE.exe"+FCBDE: F3 0F 11 45 FC - movss [ebp-04],xmm0 // ---------- DONE INJECTING ---------- "SamHD_TSE.exe"+FCBE3: F3 A5 - repe movsd "SamHD_TSE.exe"+FCBE5: 76 08 - jna SamHD_TSE.exe+FCBEF "SamHD_TSE.exe"+FCBE7: D8 6D D0 - fsubr dword ptr [ebp-30] "SamHD_TSE.exe"+FCBEA: D9 5D FC - fstp dword ptr [ebp-04] "SamHD_TSE.exe"+FCBED: EB 02 - jmp SamHD_TSE.exe+FCBF1 "SamHD_TSE.exe"+FCBEF: DD D8 - fstp st(0) "SamHD_TSE.exe"+FCBF1: F3 0F 10 45 D0 - movss xmm0,[ebp-30] "SamHD_TSE.exe"+FCBF6: 8B B3 48 07 00 00 - mov esi,[ebx+00000748] "SamHD_TSE.exe"+FCBFC: 8B BB 4C 07 00 00 - mov edi,[ebx+0000074C] "SamHD_TSE.exe"+FCC02: 8D 45 E8 - lea eax,[ebp-18] } Ну и табличка конечно: SamHD_TSE.CT Изменено 22 марта, 2016 пользователем Garik66 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
SergBrNord Опубликовано 1 апреля, 2016 Автор Поделиться Опубликовано 1 апреля, 2016 Гарик, а есть метод/методы отловить, что неправильно делает скрипт? В чём дело - у меня появилось времени немного пробегать в игрушке и выяснилось - спустя некоторое время камера начинает либо бешено трястись, либо игра зависает/крашится. Крашнуться она может, например, при подборе здоровья или на ровном месте. Вот, собственно, хочется отследить этот момент. P.S. В моём другом скрипте, для SS:FE такого не происходит. Хотя логика скриптов такая же и внедряется в аналогичные куски кода. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 2 апреля, 2016 Поделиться Опубликовано 2 апреля, 2016 В 01.04.2016 в 15:48, SergBrNord сказал: Гарик, а есть метод/методы отловить, что неправильно делает скрипт? Показать SerBrNord, есть конечно, но всё индивидуально. Ты выяснил, из-за какого скрипта начинаются глюки/вылеты? -> Выложи этот скрипт. Посмотрим. Ссылка на комментарий Поделиться на другие сайты Поделиться
SergBrNord Опубликовано 2 апреля, 2016 Автор Поделиться Опубликовано 2 апреля, 2016 (изменено) В 02.04.2016 в 05:51, Garik66 сказал: SerBrNord, есть конечно, но всё индивидуально. Ты выяснил, из-за какого скрипта начинаются глюки/вылеты? -> Выложи этот скрипт. Посмотрим. Показать Да банально. Берём тот же скрипт Лирва. Показать контент [ENABLE] aobscanmodule(Base,SamHD_TSE.exe,39 86 * * * * 75 * 8B CE E8 * * * * 85 C0 75) alloc(newmem,$1000) label(code) label(return) newmem: push ecx mov ecx,[esi+58] cmp [ecx],79616C50 jne code mov [esi+00000488],#99 //Heath mov [esi+0000049C],#98 //Armor mov [esi+00000A10],#199 //shotsgun + db shotgun mov [esi+00000A20],#998 //tompson + minigan mov [esi+00000A30],#99 //rocketlauncher mov [esi+00000A40],#99 //grenadegun mov [esi+00000A50],#998 //flamethrower mov [esi+00000A60],#799 //lasergun mov [esi+00000A70],#59 //SBC mov [esi+00000A80],#99 //sniper rifle mov [esi+00000A90],#4 //bomb code: pop ecx cmp [esi+00000498],eax jmp return Base: jmp newmem nop return: registersymbol(Base) [DISABLE] Base: db 39 86 98 04 00 00 unregistersymbol(Base) dealloc(newmem) Собственно, какие глюки я пока выловил: падение при использовании рычага, падение при подбирании бонуса +100 к здоровью (выглядит как большое сердце), внезапно начинающееся дерганье камеры вверх-вниз, ну и отдельный случай был - падение при открытии статистики по уровню. В SS:FE такой ерунды нет, хотя скрипты написаны на ту же функцию игры. Изменено 2 апреля, 2016 пользователем SergBrNord Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 2 апреля, 2016 Поделиться Опубликовано 2 апреля, 2016 Повторяемость вылетов есть? Например возьмём вылет: В 02.04.2016 в 15:44, SergBrNord сказал: падение при подбирании бонуса +100 к здоровью Показать Если ты можешь повторить это вылет, то можно посмотреть, почему происходит вылет. Например может быть вылет из-за сверки текущего здоровья с текущим здоровьем, шифрованным XORированием через адрес текущего здоровья, писал об этом раньше: Второй вариант вылета возможен из-за того что через наш фильтр: cmp [ecx],79616C50 jne code проскакивают и другие адреса. План поиска причин вылета: 1. Перепишим скрипт, чтобы в нём ничего не изменялось: Показать контент { Game : SamHD_TSE.exe Version: Date : 2016-03-18 Author : Garik66 This script does blah blah blah } [ENABLE] aobscanmodule(GodMod,SamHD_TSE.exe,39 86 98 04 00 00) // should be unique alloc(newmem,$1000) label(code) label(return) registersymbol(GodMod) newmem: mov ecx,[esi+58] cmp [ecx],79616C50 jne code cmp [esi+00000498],eax // Проверяем с какими адресами работает инструкция, для проверки фильтра. jmp return code: cmp [esi+00000498],eax jmp return GodMod: jmp newmem nop return: [DISABLE] GodMod: db 39 86 98 04 00 00 unregistersymbol(GodMod) dealloc(newmem) 2. Активируем скрипт переходим на инъекцию и проверяем с какими адресами работает инструкция (ПКМ по инструкции отмеченной в комментариях в скрипте. если не понятно - посмотри моё видео Стандартная ошибка в скриптах Cheat Engine всех новичков ) , например подбирая бонус здоровья, рычаг и т.д. Проверка - чётко ли работает фильтр, должен проскакивать только один адрес. 3. Переписываем скрипт, чтобы менять только значение здоровья: Показать контент { Game : SamHD_TSE.exe Version: Date : 2016-03-18 Author : Garik66 This script does blah blah blah } [ENABLE] aobscanmodule(GodMod,SamHD_TSE.exe,39 86 98 04 00 00) // should be unique alloc(newmem,$1000) label(code) label(return) registersymbol(GodMod) newmem: mov ecx,[esi+58] cmp [ecx],79616C50 jne code mov [esi+00000488],#99 // Ставим брейкпоинт для выхода на инструкцию, при срабатывании которой происходит вылет. code: cmp [esi+00000498],eax jmp return GodMod: jmp newmem nop return: [DISABLE] GodMod: db 39 86 98 04 00 00 unregistersymbol(GodMod) dealloc(newmem) 4. На инструкцию ставим брейкпоинт и делаем пошаговую (F7) отладку, засекаем на какой инструкции происходит вылет. По поводу: В 02.04.2016 в 15:44, SergBrNord сказал: внезапно начинающееся дерганье камеры вверх-вниз, ну и отдельный случай был - падение при открытии статистики по уровню. Показать Это могут быть баги не связанные с нашими скриптами, а с самим репаком или даже с самой игрой (поищи инфу в инете по поводу версии своей игры, там могут быть и эти баги, установи последний патч.) Ссылка на комментарий Поделиться на другие сайты Поделиться
SergBrNord Опубликовано 3 апреля, 2016 Автор Поделиться Опубликовано 3 апреля, 2016 (изменено) Гарик, в общем я попробовал сделать всё это. Игра вылетает до функций чтения и записи здоровья, которые мы используем. Т.е. - набежал на здоровье - и в момент разрушения объекта игра крашится. Брекпоинт не срабатывал на инструкции записи. На инструкцию чтения брекпоинт поставить сложновато - там постоянно чтение идёт. Изменено 3 апреля, 2016 пользователем SergBrNord Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 3 апреля, 2016 Поделиться Опубликовано 3 апреля, 2016 В 03.04.2016 в 14:40, SergBrNord сказал: Гарик, в общем я попробовал сделать всё это. Показать А первый пункт делал? Фильтр проверил? Ссылка на комментарий Поделиться на другие сайты Поделиться
SergBrNord Опубликовано 4 апреля, 2016 Автор Поделиться Опубликовано 4 апреля, 2016 В 03.04.2016 в 16:34, Garik66 сказал: А первый пункт делал? Фильтр проверил? Показать Да, фильтр работает прекрасно. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения