Strajder Опубликовано 12 июня, 2017 Поделиться Опубликовано 12 июня, 2017 (изменено) Доброго времени суток . Ну и конечно же здравствуйте. Зовут меня Александр, - можно просто Саня. Вот уже 2 день мучаю данную игру в поисках взлома значений жизни "карт-войнов" в битве. Со взломом очков движения, ресурсов, очков исследования проблем собственно не возникло. Как только не искал - не нашел значения, пробовал через броню, но там для фильтра не нашел значений. Терпения не хватило да и посмотрел как это устроено у MrAntiFun. Сделал все 1в1 но все равно - итог 1: Вылет. Может я что и не так в скрипте написал? Но складывается такое ощущение что еще где то у него в коде что то еще есть Строго не судите) Начал осваивать Cheat Engine относительно недавно. Навыков программирования нет. Из Всего - только желание и любознательность. Ну а теперь собственно по делу: До и после инъекции: Скрытый текст // Thea: The awakening v.1.20.2516.0 156E03C6 - E8 A9619DFA - call mono.mono_inst_name+1407 156E03CB - 83 C4 10 - add esp,10 { 16 } 156E03CE - 83 EC 0C - sub esp,0C { 12 } 156E03D1 - 50 - push eax 156E03D2 - E8 A109B8F0 - call 06260D78 156E03D7 - 6A 44 - push 44 { 68 } 156E03D9 - 68 43010000 - push 00000143 { 323 } 156E03DE - E8 550BB8F0 - call 06260F38 156E03E3 - 6A 5B - push 5B { 91 } 156E03E5 - EB F2 - jmp 156E03D9 156E03E7 - 68 8A000000 - push 0000008A { 138 } 156E03EC - EB EB - jmp 156E03D9 156E03EE - 68 AA000000 - push 000000AA { 170 } 156E03F3 - EB E4 - jmp 156E03D9 156E03F5 - 68 C9000000 - push 000000C9 { 201 } 156E03FA - EB DD - jmp 156E03D9 156E03FC - 00 00 - add [eax],al 156E03FE - 00 00 - add [eax],al 156E0400 - 55 - push ebp 156E0401 - 8B EC - mov ebp,esp 156E0403 - 83 EC 18 - sub esp,18 { 24 } 156E0406 - 8B 45 08 - mov eax,[ebp+08] 156E0409 - 8B 40 08 - mov eax,[eax+08] 156E040C - 83 EC 08 - sub esp,08 { 8 } 156E040F - 6A 01 - push 01 { 1 } 156E0411 - 50 - push eax 156E0412 - 39 00 - cmp [eax],eax 156E0414 - E8 4FF0FFFF - call 156DF468 156E0419 - 83 C4 10 - add esp,10 { 16 } 156E041C - 8B 40 0C - mov eax,[eax+0C] 156E041F - 8B C8 - mov ecx,eax //////////////////////////////////////////Здесь будет инъекция//////////////////// 156E0421 - 39 09 - cmp [ecx],ecx 156E0423 - 8B 40 0C - mov eax,[eax+0C] 156E0426 - 50 - push eax 156E0427 - DB 04 24 - fild dword ptr [esp] 156E042A - D9 1C 24 - fstp dword ptr [esp] 156E042D - D9 04 24 - fld dword ptr [esp] 156E0430 - 83 C4 04 - add esp,04 { 4 } 156E0433 - D9E8 - fld1 156E0435 - 8B 45 08 - mov eax,[ebp+08] 156E0438 - D9 40 20 - fld dword ptr [eax+20] 156E043B - DEE9 - fsubp st(1),st(0) 156E043D - DEC9 - fmulp st(1),st(0) 156E043F - D9 5D F4 - fstp dword ptr [ebp-0C] 156E0442 - D9 45 F4 - fld dword ptr [ebp-0C] 156E0445 - D9FC - frndint 156E0447 - DD 5D F8 - fstp qword ptr [ebp-08] 156E044A - F2 0F10 45 F8 - movsd xmm0,[ebp-08] 156E044F - F2 0F2C C0 - cvttsd2si eax,xmm0 156E0453 - C9 - leave 156E0454 - C3 - ret 156E0455 - 00 00 - add [eax],al 156E0457 - 00 55 8B - add [ebp-75],dl // После Инъекции 156E03C6 - E8 A9619DFA - call mono.mono_inst_name+1407 156E03CB - 83 C4 10 - add esp,10 { 16 } 156E03CE - 83 EC 0C - sub esp,0C { 12 } 156E03D1 - 50 - push eax 156E03D2 - E8 A109B8F0 - call 06260D78 156E03D7 - 6A 44 - push 44 { 68 } 156E03D9 - 68 43010000 - push 00000143 { 323 } 156E03DE - E8 550BB8F0 - call 06260F38 156E03E3 - 6A 5B - push 5B { 91 } 156E03E5 - EB F2 - jmp 156E03D9 156E03E7 - 68 8A000000 - push 0000008A { 138 } 156E03EC - EB EB - jmp 156E03D9 156E03EE - 68 AA000000 - push 000000AA { 170 } 156E03F3 - EB E4 - jmp 156E03D9 156E03F5 - 68 C9000000 - push 000000C9 { 201 } 156E03FA - EB DD - jmp 156E03D9 156E03FC - 00 00 - add [eax],al 156E03FE - 00 00 - add [eax],al 156E0400 - 55 - push ebp 156E0401 - 8B EC - mov ebp,esp 156E0403 - 83 EC 18 - sub esp,18 { 24 } 156E0406 - 8B 45 08 - mov eax,[ebp+08] 156E0409 - 8B 40 08 - mov eax,[eax+08] 156E040C - 83 EC 08 - sub esp,08 { 8 } 156E040F - 6A 01 - push 01 { 1 } 156E0411 - 50 - push eax 156E0412 - 39 00 - cmp [eax],eax 156E0414 - E8 4FF0FFFF - call 156DF468 156E0419 - 83 C4 10 - add esp,10 { 16 } 156E041C - 8B 40 0C - mov eax,[eax+0C] 156E041F - 8B C8 - mov ecx,eax 156E0421 - E9 DAFB35EB - jmp 00A40000 /////////////////////////////////////////////////////////////////////////////////// //00A40000 - 56 - push esi // //00A40001 - 8B 75 08 - mov esi,[ebp+08] // //00A40004 - 80 7E 29 01 - cmp byte ptr [esi+29],01 { 1 } // //00A40008 - 0F85 07000000 - jne 00A40015 // //00A4000E - C7 40 0C 0F270000 - mov [eax+0C],0000270F { 9999 } // //00A40015 - 5E - pop esi // //00A40016 - 39 09 - cmp [ecx],ecx // //00A40018 - 8B 40 0C - mov eax,[eax+0C] // //00A4001B - E9 A627FD55 - jmp 156E0426 // /////////////////////////////////////////////////////////////////////////////////// 156E0426 - 50 - push eax 156E0427 - DB 04 24 - fild dword ptr [esp] 156E042A - D9 1C 24 - fstp dword ptr [esp] 156E042D - D9 04 24 - fld dword ptr [esp] 156E0430 - 83 C4 04 - add esp,04 { 4 } 156E0433 - D9E8 - fld1 156E0435 - 8B 45 08 - mov eax,[ebp+08] 156E0438 - D9 40 20 - fld dword ptr [eax+20] 156E043B - DEE9 - fsubp st(1),st(0) 156E043D - DEC9 - fmulp st(1),st(0) 156E043F - D9 5D F4 - fstp dword ptr [ebp-0C] 156E0442 - D9 45 F4 - fld dword ptr [ebp-0C] 156E0445 - D9FC - frndint 156E0447 - DD 5D F8 - fstp qword ptr [ebp-08] 156E044A - F2 0F10 45 F8 - movsd xmm0,[ebp-08] 156E044F - F2 0F2C C0 - cvttsd2si eax,xmm0 156E0453 - C9 - leave 156E0454 - C3 - ret 156E0455 - 00 00 - add [eax],al 156E0457 - 00 55 8B - add [ebp-75],dl Ну и мой кривой скрипт Скрытый текст // inf.Card Health { Game : Thea.exe Version: Date : 2017-06-12 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(INJECT,8B C8 39 09 8B 40 0C 50 DB 04 24 D9 1C 24 D9 04 24 83 C4 04 D9 E8) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: jmp 00720000 push esi mov esi,[ebp+08] cmp byte ptr [esi+29],01 jne short 00720016 mov [eax+0C],0000270F pop esi cmp [ecx],ecx mov eax,[eax+0C] jmp return code: // INJECT+02: jmp newmem return: registersymbol(INJECT) [DISABLE] INJECT+02: db 8B C8 39 09 8B 40 0C unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 0EBFDDFF ""+EBFDDE3: 83 EC 18 - sub esp,18 ""+EBFDDE6: 8B 45 08 - mov eax,[ebp+08] ""+EBFDDE9: 8B 40 08 - mov eax,[eax+08] ""+EBFDDEC: 83 EC 08 - sub esp,08 ""+EBFDDEF: 6A 01 - push 01 ""+EBFDDF1: 50 - push eax ""+EBFDDF2: 39 00 - cmp [eax],eax ""+EBFDDF4: E8 4F F0 FF FF - call 0EBFCE48 ""+EBFDDF9: 83 C4 10 - add esp,10 ""+EBFDDFC: 8B 40 0C - mov eax,[eax+0C] ""+EBFDDFF: 8B C8 - mov ecx,eax // ---------- INJECTING HERE ---------- ""+EBFDE01: 39 09 - cmp [ecx],ecx // ---------- DONE INJECTING ---------- ""+EBFDE03: 8B 40 0C - mov eax,[eax+0C] ""+EBFDE06: 50 - push eax ""+EBFDE07: DB 04 24 - fild dword ptr [esp] ""+EBFDE0A: D9 1C 24 - fstp dword ptr [esp] ""+EBFDE0D: D9 04 24 - fld dword ptr [esp] ""+EBFDE10: 83 C4 04 - add esp,04 ""+EBFDE13: D9 E8 - fld1 ""+EBFDE15: 8B 45 08 - mov eax,[ebp+08] ""+EBFDE18: D9 40 20 - fld dword ptr [eax+20] ""+EBFDE1B: DE E9 - fsubp st(1),st(0) ""+EBFDE1D: DE C9 - fmulp st(1),st(0) } По сути сравнивал Инструкции MrAntifan и свою. Инструкции прописываются 1в1. Но чего то не хватает) Наверное Ума? Буду рад любой помощи. Изменено 12 июня, 2017 пользователем Strajder Ссылка на комментарий Поделиться на другие сайты Поделиться
Strajder Опубликовано 12 июня, 2017 Автор Поделиться Опубликовано 12 июня, 2017 Проблему вроде удалось решить. Code caves поменял. При 1 сканировании code caves показало пустые адреса. Потом же оказались занятыми. Скрытый текст { Game : Thea.exe Version: Date : 2017-06-12 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(INJECT,8B C8 39 09 8B 40 0C 50 DB 04 24 D9 1C 24 D9 04 24 83 C4 04 D9 E8) // should be unique alloc(newmem,$1000) label(code) label(return) 0E41F300: push esi mov esi,[ebp+08] cmp byte ptr [esi+29],01 jne short 0E41F316 mov [eax+0C],0000270F pop esi cmp [ecx],ecx mov eax,[eax+0C] jmp return code: // INJECT+02: jmp 0E41F300 return: registersymbol(INJECT) [DISABLE] INJECT+02: db 8B C8 39 09 8B 40 0C unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 0EBFDDFF ""+EBFDDE3: 83 EC 18 - sub esp,18 ""+EBFDDE6: 8B 45 08 - mov eax,[ebp+08] ""+EBFDDE9: 8B 40 08 - mov eax,[eax+08] ""+EBFDDEC: 83 EC 08 - sub esp,08 ""+EBFDDEF: 6A 01 - push 01 ""+EBFDDF1: 50 - push eax ""+EBFDDF2: 39 00 - cmp [eax],eax ""+EBFDDF4: E8 4F F0 FF FF - call 0EBFCE48 ""+EBFDDF9: 83 C4 10 - add esp,10 ""+EBFDDFC: 8B 40 0C - mov eax,[eax+0C] ""+EBFDDFF: 8B C8 - mov ecx,eax // ---------- INJECTING HERE ---------- ""+EBFDE01: 39 09 - cmp [ecx],ecx // ---------- DONE INJECTING ---------- ""+EBFDE03: 8B 40 0C - mov eax,[eax+0C] ""+EBFDE06: 50 - push eax ""+EBFDE07: DB 04 24 - fild dword ptr [esp] ""+EBFDE0A: D9 1C 24 - fstp dword ptr [esp] ""+EBFDE0D: D9 04 24 - fld dword ptr [esp] ""+EBFDE10: 83 C4 04 - add esp,04 ""+EBFDE13: D9 E8 - fld1 ""+EBFDE15: 8B 45 08 - mov eax,[ebp+08] ""+EBFDE18: D9 40 20 - fld dword ptr [eax+20] ""+EBFDE1B: DE E9 - fsubp st(1),st(0) ""+EBFDE1D: DE C9 - fmulp st(1),st(0) } Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 12 июня, 2017 Поделиться Опубликовано 12 июня, 2017 Лучше не лазь больше в чужих трейнерах - пробуй сам. А вот правильный скрипт: Скрытый текст { Game : Thea.exe Version: Date : 2017-06-12 Author : MrAntiFun This script does blah blah blah } [ENABLE] aobscan(INJECT,8B C8 39 09 8B 40 0C 50 DB 04 24 D9 1C 24 D9 04 24 83 C4 04 D9 E8) // should be unique alloc(newmem,$1000) label(code) label(return) registersymbol(INJECT) newmem: push esi mov esi,[ebp+08] cmp byte ptr [esi+29],01 pop esi jne code mov [eax+0C],0000270F code: cmp [ecx],ecx mov eax,[eax+0C] jmp return INJECT+02: jmp newmem return: [DISABLE] INJECT+02: db 8B C8 39 09 8B 40 0C unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 0EBFDDFF ""+EBFDDE3: 83 EC 18 - sub esp,18 ""+EBFDDE6: 8B 45 08 - mov eax,[ebp+08] ""+EBFDDE9: 8B 40 08 - mov eax,[eax+08] ""+EBFDDEC: 83 EC 08 - sub esp,08 ""+EBFDDEF: 6A 01 - push 01 ""+EBFDDF1: 50 - push eax ""+EBFDDF2: 39 00 - cmp [eax],eax ""+EBFDDF4: E8 4F F0 FF FF - call 0EBFCE48 ""+EBFDDF9: 83 C4 10 - add esp,10 ""+EBFDDFC: 8B 40 0C - mov eax,[eax+0C] ""+EBFDDFF: 8B C8 - mov ecx,eax // ---------- INJECTING HERE ---------- ""+EBFDE01: 39 09 - cmp [ecx],ecx // ---------- DONE INJECTING ---------- ""+EBFDE03: 8B 40 0C - mov eax,[eax+0C] ""+EBFDE06: 50 - push eax ""+EBFDE07: DB 04 24 - fild dword ptr [esp] ""+EBFDE0A: D9 1C 24 - fstp dword ptr [esp] ""+EBFDE0D: D9 04 24 - fld dword ptr [esp] ""+EBFDE10: 83 C4 04 - add esp,04 ""+EBFDE13: D9 E8 - fld1 ""+EBFDE15: 8B 45 08 - mov eax,[ebp+08] ""+EBFDE18: D9 40 20 - fld dword ptr [eax+20] ""+EBFDE1B: DE E9 - fsubp st(1),st(0) ""+EBFDE1D: DE C9 - fmulp st(1),st(0) } Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 12 июня, 2017 Поделиться Опубликовано 12 июня, 2017 (изменено) 8 минут назад, Garik66 сказал: Лучше не лазь больше в чужих трейнерах - пробуй сам. Согласен. Я если и смотрел на чужие трейнеры ( 1 раз лишь когда начинал ) то лишь на то как реализована функция а не сам код весь вытягивал Цитата Ну и мой кривой скрипт Получается что не твой. Цитата jmp 00720000 jne short 00720016 Тебя это не смущало?) Изменено 12 июня, 2017 пользователем what228 Ссылка на комментарий Поделиться на другие сайты Поделиться
Strajder Опубликовано 12 июня, 2017 Автор Поделиться Опубликовано 12 июня, 2017 Garik66 Спасибо. Совет учту. Я стараюсь учится по уже сделанным скриптам. Пытаясь понять и разобраться. Анализирую. Что не ясно читаю в интернете. Начинаю вечерками с старых игр. Ищу, пробую, щупаю. Чужой труд конечно брать нехорошо тут полностью с тобой согласен. С Уважением Александр. Ссылка на комментарий Поделиться на другие сайты Поделиться
Strajder Опубликовано 12 июня, 2017 Автор Поделиться Опубликовано 12 июня, 2017 3 минуты назад, what228 сказал: Согласен. Я если и смотрел на чужие трейнеры ( 1 раз лишь когда начинал ) то лишь на то как реализована функция а не сам код весь вытягивал Получается что не твой. Тебя это не смущало?) Не "это" как раз я писал. Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 12 июня, 2017 Поделиться Опубликовано 12 июня, 2017 1 час назад, Strajder сказал: Я стараюсь учится по уже сделанным скриптам. Бредово ) Если изначально не вникаешь то так лишь запутаешь или усложнишь путь изучения как я себе. Лучше сразу почитать про ASM и потом смотреть и изучать код игры. имхо. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 12 июня, 2017 Поделиться Опубликовано 12 июня, 2017 2 часа назад, Strajder сказал: Я стараюсь учится по уже сделанным скриптам. Советую посмотреть видео-уроки @Xipho, @keng ну и мои тоже можно посмотреть. Многое станет более понятным. Ссылка на комментарий Поделиться на другие сайты Поделиться
Strajder Опубликовано 13 июня, 2017 Автор Поделиться Опубликовано 13 июня, 2017 (изменено) Прошу вас проверить остальные скрипты. Искал и делал сам. С удовольствием выслушаю все комментарии. Скрипт на Ходы: Скрытый текст { Game : Thea.exe Version: Date : 2017-06-09 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(INJECT,8B 43 54 2B C1) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: cmp [ebx+54],#5 je code mov [ebx+54],#5 code: mov eax,[ebx+54] sub eax,ecx jmp return INJECT: jmp newmem return: registersymbol(INJECT) [DISABLE] INJECT: db 8B 43 54 2B C1 unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 0765E0BD 0765E09E: 8B 48 10 - mov ecx,[eax+10] 0765E0A1: 33 C0 - xor eax,eax 0765E0A3: 81 F9 80 B7 A9 11 - cmp ecx,11A9B780 0765E0A9: 0F 45 D8 - cmovne ebx,eax 0765E0AC: 8B 45 08 - mov eax,[ebp+08] 0765E0AF: 8B 48 08 - mov ecx,[eax+08] 0765E0B2: 8B 49 08 - mov ecx,[ecx+08] 0765E0B5: 8B 40 0C - mov eax,[eax+0C] 0765E0B8: 0F AF C8 - imul ecx,eax 0765E0BB: 39 1B - cmp [ebx],ebx // ---------- INJECTING HERE ---------- 0765E0BD: 8B 43 54 - mov eax,[ebx+54] 0765E0C0: 2B C1 - sub eax,ecx // ---------- DONE INJECTING ---------- 0765E0C2: 89 43 54 - mov [ebx+54],eax 0765E0C5: 8D 65 F8 - lea esp,[ebp-08] 0765E0C8: 5F - pop edi 0765E0C9: 5B - pop ebx 0765E0CA: C9 - leave 0765E0CB: C3 - ret 0765E0CC: 00 00 - add [eax],al 0765E0CE: 00 00 - add [eax],al 0765E0D0: 55 - push ebp 0765E0D1: 8B EC - mov ebp,esp } Скрипт на 100 ресурсов, обнуление веса носимого персонажем, обнуление веса при одевании одежды: Скрытый текст { Game : Thea.exe Version: Date : 2017-06-11 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(INJECT,8B 40 5C 8B 4E 0C) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: mov [eax+5C],#0 mov [esi+0C],#100 code: mov eax,[eax+5C] mov ecx,[esi+0C] jmp return INJECT: jmp newmem nop return: registersymbol(INJECT) [DISABLE] INJECT: db 8B 40 5C 8B 4E 0C unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 30E00D0C ""+30E00CEC: 8B 45 A4 - mov eax,[ebp-5C] ""+30E00CEF: 8B 00 - mov eax,[eax] ""+30E00CF1: 8B 00 - mov eax,[eax] ""+30E00CF3: 8B 40 08 - mov eax,[eax+08] ""+30E00CF6: 8B 40 10 - mov eax,[eax+10] ""+30E00CF9: 3D 00 1D C5 10 - cmp eax,10C51D00 ""+30E00CFE: 74 09 - je 30E00D09 ""+30E00D00: C7 45 A0 00 00 00 00 - mov [ebp-60],00000000 ""+30E00D07: EB 00 - jmp 30E00D09 ""+30E00D09: 8B 45 A0 - mov eax,[ebp-60] // ---------- INJECTING HERE ---------- ""+30E00D0C: 8B 40 5C - mov eax,[eax+5C] ""+30E00D0F: 8B 4E 0C - mov ecx,[esi+0C] // ---------- DONE INJECTING ---------- ""+30E00D12: 0F AF C1 - imul eax,ecx ""+30E00D15: 50 - push eax ""+30E00D16: DB 04 24 - fild dword ptr [esp] ""+30E00D19: D9 1C 24 - fstp dword ptr [esp] ""+30E00D1C: D9 04 24 - fld dword ptr [esp] ""+30E00D1F: 83 C4 04 - add esp,04 ""+30E00D22: DD 45 A8 - fld qword ptr [ebp-58] ""+30E00D25: D9 C9 - fxch st(1) ""+30E00D27: DE C1 - faddp ""+30E00D29: D9 5D B0 - fstp dword ptr [ebp-50] } Скрипт на броню: Скрытый текст { Game : Thea.exe Version: Date : 2017-06-11 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(INJECT,8B 46 30 85 C0 0F 85 92) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: cmp byte ptr [esi+29],01 je @F jmp code @@: mov [esi+30],#99999 code: mov eax,[esi+30] test eax,eax jmp return INJECT: jmp newmem return: registersymbol(INJECT) [DISABLE] INJECT: db 8B 46 30 85 C0 unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 2182FBAE ""+2182FB8A: 39 36 - cmp [esi],esi ""+2182FB8C: E8 27 11 00 00 - call 21830CB8 ""+2182FB91: 83 C4 10 - add esp,10 ""+2182FB94: 83 EC 08 - sub esp,08 ""+2182FB97: 50 - push eax ""+2182FB98: FF B5 D4 FE FF FF - push [ebp-0000012C] ""+2182FB9E: 8B 85 D4 FE FF FF - mov eax,[ebp-0000012C] ""+2182FBA4: 39 00 - cmp [eax],eax ""+2182FBA6: E8 75 4A 2C FD - call 1EAF4620 ""+2182FBAB: 83 C4 10 - add esp,10 // ---------- INJECTING HERE ---------- ""+2182FBAE: 8B 46 30 - mov eax,[esi+30] ""+2182FBB1: 85 C0 - test eax,eax // ---------- DONE INJECTING ---------- ""+2182FBB3: 0F 85 92 00 00 00 - jne 2182FC4B ""+2182FBB9: 83 EC 0C - sub esp,0C ""+2182FBBC: 56 - push esi ""+2182FBBD: 39 36 - cmp [esi],esi ""+2182FBBF: E8 1C DB FF FF - call 2182D6E0 ""+2182FBC4: 83 C4 10 - add esp,10 ""+2182FBC7: 89 85 EC FD FF FF - mov [ebp-00000214],eax ""+2182FBCD: 83 EC 0C - sub esp,0C ""+2182FBD0: 56 - push esi ""+2182FBD1: 39 36 - cmp [esi],esi } Скрипт на урон: Скрытый текст { Game : Thea.exe Version: Date : 2017-06-13 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(INJECT,8B 4E 2C 03 C1 89 85 1C) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: cmp byte ptr [esi+29],01 jne code mov [esi+2C],#100 code: mov ecx,[esi+2C] add eax,ecx jmp return INJECT: jmp newmem return: registersymbol(INJECT) [DISABLE] INJECT: db 8B 4E 2C 03 C1 unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 06F627D5 ""+6F627B1: FF B5 E0 FE FF FF - push [ebp-00000120] ""+6F627B7: 8B 85 E0 FE FF FF - mov eax,[ebp-00000120] ""+6F627BD: 39 00 - cmp [eax],eax ""+6F627BF: E8 1C 1C 95 0E - call 158B43E0 ""+6F627C4: 83 C4 10 - add esp,10 ""+6F627C7: 83 EC 0C - sub esp,0C ""+6F627CA: 56 - push esi ""+6F627CB: 39 36 - cmp [esi],esi ""+6F627CD: E8 DE 15 00 00 - call 06F63DB0 ""+6F627D2: 83 C4 10 - add esp,10 // ---------- INJECTING HERE ---------- ""+6F627D5: 8B 4E 2C - mov ecx,[esi+2C] ""+6F627D8: 03 C1 - add eax,ecx // ---------- DONE INJECTING ---------- ""+6F627DA: 89 85 1C FE FF FF - mov [ebp-000001E4],eax ""+6F627E0: 8D 85 1C FE FF FF - lea eax,[ebp-000001E4] ""+6F627E6: 83 EC 0C - sub esp,0C ""+6F627E9: 50 - push eax ""+6F627EA: E8 E9 74 8E FF - call 06849CD8 ""+6F627EF: 83 C4 10 - add esp,10 ""+6F627F2: 83 EC 08 - sub esp,08 ""+6F627F5: 50 - push eax ""+6F627F6: FF B5 DC FE FF FF - push [ebp-00000124] ""+6F627FC: 8B 85 DC FE FF FF - mov eax,[ebp-00000124] } Скрипт на очки улучшения: Скрытый текст { Game : Thea.exe Version: Date : 2017-06-11 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(INJECT,8B 40 44 89 45 94) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: mov [eax+44],100 code: mov eax,[eax+44] mov [ebp-6C],eax jmp return INJECT: jmp newmem nop return: registersymbol(INJECT) [DISABLE] INJECT: db 8B 40 44 89 45 94 unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 34D07AFE ""+34D07ACD: 56 - push esi ""+34D07ACE: 83 EC 7C - sub esp,7C ""+34D07AD1: C7 45 A0 00 00 00 00 - mov [ebp-60],00000000 ""+34D07AD8: C7 45 A4 00 00 00 00 - mov [ebp-5C],00000000 ""+34D07ADF: C7 45 A8 00 00 00 00 - mov [ebp-58],00000000 ""+34D07AE6: C7 45 AC 00 00 00 00 - mov [ebp-54],00000000 ""+34D07AED: C7 45 B0 00 00 00 00 - mov [ebp-50],00000000 ""+34D07AF4: D9 EE - fldz ""+34D07AF6: D9 5D E4 - fstp dword ptr [ebp-1C] ""+34D07AF9: E8 BA C7 20 E9 - call 1DF142B8 // ---------- INJECTING HERE ---------- ""+34D07AFE: 8B 40 44 - mov eax,[eax+44] ""+34D07B01: 89 45 94 - mov [ebp-6C],eax // ---------- DONE INJECTING ---------- ""+34D07B04: 83 EC 0C - sub esp,0C ""+34D07B07: 68 90 34 21 1B - push 1B213490 ""+34D07B0C: E8 97 90 86 D1 - call 06570BA8 ""+34D07B11: 83 C4 10 - add esp,10 ""+34D07B14: 8B F8 - mov edi,eax ""+34D07B16: 8B 45 08 - mov eax,[ebp+08] ""+34D07B19: 8B 40 24 - mov eax,[eax+24] ""+34D07B1C: 8D 4D A0 - lea ecx,[ebp-60] ""+34D07B1F: 83 EC 08 - sub esp,08 ""+34D07B22: 50 - push eax } Изменено 13 июня, 2017 пользователем Strajder 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 13 июня, 2017 Поделиться Опубликовано 13 июня, 2017 33 минуты назад, Strajder сказал: Прошу вас проверить остальные скрипты. У тебя во всех скриптах используется единственная метка для аобскана, т.е активировав скрипты, ты их не сможешь выключить. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 13 июня, 2017 Поделиться Опубликовано 13 июня, 2017 38 минут назад, Strajder сказал: С удовольствием выслушаю все комментарии. Не плохо. 1 скрипт можно просто занопить: Скрытый текст { Game : Thea.exe Version: Date : 2017-06-09 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(INJECT,2B C1 89 43 54) // should be unique registersymbol(INJECT) INJECT: db 90 90 [DISABLE] INJECT: db 2B C1 unregistersymbol(INJECT) { // ORIGINAL CODE - INJECTION POINT: 0765E0BD 0765E09E: 8B 48 10 - mov ecx,[eax+10] 0765E0A1: 33 C0 - xor eax,eax 0765E0A3: 81 F9 80 B7 A9 11 - cmp ecx,11A9B780 0765E0A9: 0F 45 D8 - cmovne ebx,eax 0765E0AC: 8B 45 08 - mov eax,[ebp+08] 0765E0AF: 8B 48 08 - mov ecx,[eax+08] 0765E0B2: 8B 49 08 - mov ecx,[ecx+08] 0765E0B5: 8B 40 0C - mov eax,[eax+0C] 0765E0B8: 0F AF C8 - imul ecx,eax 0765E0BB: 39 1B - cmp [ebx],ebx // ---------- INJECTING HERE ---------- 0765E0BD: 8B 43 54 - mov eax,[ebx+54] 0765E0C0: 2B C1 - sub eax,ecx // ---------- DONE INJECTING ---------- 0765E0C2: 89 43 54 - mov [ebx+54],eax 0765E0C5: 8D 65 F8 - lea esp,[ebp-08] 0765E0C8: 5F - pop edi 0765E0C9: 5B - pop ebx 0765E0CA: C9 - leave 0765E0CB: C3 - ret 0765E0CC: 00 00 - add [eax],al 0765E0CE: 00 00 - add [eax],al 0765E0D0: 55 - push ebp 0765E0D1: 8B EC - mov ebp,esp } 3 скрипт короче записать так: Скрытый текст { Game : Thea.exe Version: Date : 2017-06-11 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(INJECT,8B 46 30 85 C0 0F 85 92) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: cmp byte ptr [esi+29],01 jne code mov [esi+30],#99999 code: mov eax,[esi+30] test eax,eax jmp return INJECT: jmp newmem return: registersymbol(INJECT) [DISABLE] INJECT: db 8B 46 30 85 C0 unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 2182FBAE ""+2182FB8A: 39 36 - cmp [esi],esi ""+2182FB8C: E8 27 11 00 00 - call 21830CB8 ""+2182FB91: 83 C4 10 - add esp,10 ""+2182FB94: 83 EC 08 - sub esp,08 ""+2182FB97: 50 - push eax ""+2182FB98: FF B5 D4 FE FF FF - push [ebp-0000012C] ""+2182FB9E: 8B 85 D4 FE FF FF - mov eax,[ebp-0000012C] ""+2182FBA4: 39 00 - cmp [eax],eax ""+2182FBA6: E8 75 4A 2C FD - call 1EAF4620 ""+2182FBAB: 83 C4 10 - add esp,10 // ---------- INJECTING HERE ---------- ""+2182FBAE: 8B 46 30 - mov eax,[esi+30] ""+2182FBB1: 85 C0 - test eax,eax // ---------- DONE INJECTING ---------- ""+2182FBB3: 0F 85 92 00 00 00 - jne 2182FC4B ""+2182FBB9: 83 EC 0C - sub esp,0C ""+2182FBBC: 56 - push esi ""+2182FBBD: 39 36 - cmp [esi],esi ""+2182FBBF: E8 1C DB FF FF - call 2182D6E0 ""+2182FBC4: 83 C4 10 - add esp,10 ""+2182FBC7: 89 85 EC FD FF FF - mov [ebp-00000214],eax ""+2182FBCD: 83 EC 0C - sub esp,0C ""+2182FBD0: 56 - push esi ""+2182FBD1: 39 36 - cmp [esi],esi } ну и общая ошибка давай разные названия меткам. а то у тебя везде INJECT, в результате деактивируется только один из пяти скриптов. Ссылка на комментарий Поделиться на другие сайты Поделиться
Strajder Опубликовано 13 июня, 2017 Автор Поделиться Опубликовано 13 июня, 2017 О как Спасибо большое всем. Не думал про "INJECT" - что так критично. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 13 июня, 2017 Поделиться Опубликовано 13 июня, 2017 ЗЫ: за старания плюс, продолжай. Удачного взлома!!! Ссылка на комментарий Поделиться на другие сайты Поделиться
Strajder Опубликовано 13 июня, 2017 Автор Поделиться Опубликовано 13 июня, 2017 Пробуя ломать количество выставляемых карт за 1 ход: столкнулся с цепочкой проверки значения. Попыткой задушить первый DEC eax - nop срабатывает но до второй проверки Выход занопить оба DEC eax. Или же как то можно лучше реализовать? По проверке через AOB: 1)48 89 43 18 8B 05 30 B2 A0 06 83 EC 0C 50 39 00 E8 AC 2)48 89 43 18 8B 05 30 B2 A0 06 83 EC 0C 50 39 00 E8 E7 Всего по сигнатуре 48 89 43 18 8B 05 30 B2 A0 06 83 EC 0C 50 39 00 E8 находит 2 адреса в памяти. (Которые и участвуют) Скрытый текст 0777B3E6 - FF 75 F0 - push [ebp-10] 0777B3E9 - 57 - push edi 0777B3EA - FF 75 0C - push [ebp+0C] 0777B3ED - 50 - push eax 0777B3EE - 39 00 - cmp [eax],eax 0777B3F0 - E8 23040000 - call 0777B818 0777B3F5 - 83 C4 10 - add esp,10 { 16 } 0777B3F8 - 85 C0 - test eax,eax 0777B3FA - 74 2F - je 0777B42B 0777B3FC - 8B 43 18 - mov eax,[ebx+18] ///////////////////////////////////////////////////////////////////////////////////////////// 0777B3FF - 48 - dec eax ///////////////////////////////////////////////////////////////////////////////////////////// 0777B400 - 89 43 18 - mov [ebx+18],eax 0777B403 - 8B 05 30B2A006 - mov eax,[06A0B230] { [1F536F00] } 0777B409 - 83 EC 0C - sub esp,0C { 12 } 0777B40C - 50 - push eax 0777B40D - 39 00 - cmp [eax],eax 0777B40F - E8 AC48FFFF - call 0776FCC0 0777B414 - 83 C4 10 - add esp,10 { 16 } 0777B417 - 8B 05 30B2A006 - mov eax,[06A0B230] { [1F536F00] } 0777B41D - 83 EC 0C - sub esp,0C { 12 } 0777B420 - 50 - push eax 0777B421 - 39 00 - cmp [eax],eax 0777B423 - E8 58070000 - call 0777BB80 0777B428 - 83 C4 10 - add esp,10 { 16 } 0777B42B - 89 7D DC - mov [ebp-24],edi 0777B42E - 89 7D E0 - mov [ebp-20],edi 0777B431 - 85 FF - test edi,edi 0777B433 - 74 1D - je 0777B452 0777B435 - 8B 45 DC - mov eax,[ebp-24] 0777B438 - 8B 00 - mov eax,[eax] 0777B43A - 8B 00 - mov eax,[eax] 0777B43C - 8B 40 08 - mov eax,[eax+08] 0777B43F - 8B 40 08 - mov eax,[eax+08] 0777B442 - 33 C9 - xor ecx,ecx 0777B444 - 3D 28BD001C - cmp eax,1C00BD28 { [1C00BD28] } 0777B449 - 8B 45 E0 - mov eax,[ebp-20] 0777B44C - 0F45 C1 - cmovne eax,ecx 0777B44F - 89 45 E0 - mov [ebp-20],eax 0777B452 - 8B 45 E0 - mov eax,[ebp-20] 0777B455 - 89 45 E8 - mov [ebp-18],eax 0777B458 - 83 7D E0 00 - cmp dword ptr [ebp-20],00 { 0 } 0777B45C - 74 3E - je 0777B49C 0777B45E - 8B 45 E8 - mov eax,[ebp-18] 0777B461 - 8B 48 08 - mov ecx,[eax+08] 0777B464 - 89 4D E4 - mov [ebp-1C],ecx 0777B467 - 8B 05 30B2A006 - mov eax,[06A0B230] { [1F536F00] } 0777B46D - 51 - push ecx 0777B46E - 57 - push edi 0777B46F - FF 75 0C - push [ebp+0C] 0777B472 - 50 - push eax 0777B473 - 39 00 - cmp [eax],eax 0777B475 - E8 AEAF0000 - call 07786428 0777B47A - 83 C4 10 - add esp,10 { 16 } 0777B47D - 85 C0 - test eax,eax 0777B47F - 74 1B - je 0777B49C 0777B481 - 8B 43 18 - mov eax,[ebx+18] ///////////////////////////////////////////////////////////////////////////////////////////// 0777B484 - 48 - dec eax ///////////////////////////////////////////////////////////////////////////////////////////// 0777B485 - 89 43 18 - mov [ebx+18],eax 0777B488 - 8B 05 30B2A006 - mov eax,[06A0B230] { [1F536F00] } 0777B48E - 83 EC 0C - sub esp,0C { 12 } 0777B491 - 50 - push eax 0777B492 - 39 00 - cmp [eax],eax 0777B494 - E8 E7060000 - call 0777BB80 0777B499 - 83 C4 10 - add esp,10 { 16 } 0777B49C - 8B 43 18 - mov eax,[ebx+18] 0777B49F - 85 C0 - test eax,eax Правильным ли будет решение занопить 2 Dec eax по их общей сигнатуре 48 89 43 18 8B 05 30 B2 A0 06 83 EC 0C 50 39 00 E8 через такой скрипт? Или же есть другое решение? Скрытый текст { Game : Thea.exe Version: Date : 2017-06-13 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(IN,48 89 43 18 8B 05 30 B2 A0 06 83 EC 0C 50 39 00 E8) // should be unique registersymbol(IN) IN: db 90 [DISABLE] IN: db 48 unregistersymbol(IN) { // ORIGINAL CODE - INJECTION POINT: 0777B484 ""+777B46D: 51 - push ecx ""+777B46E: 57 - push edi ""+777B46F: FF 75 0C - push [ebp+0C] ""+777B472: 50 - push eax ""+777B473: 39 00 - cmp [eax],eax ""+777B475: E8 AE AF 00 00 - call 07786428 ""+777B47A: 83 C4 10 - add esp,10 ""+777B47D: 85 C0 - test eax,eax ""+777B47F: 74 1B - je 0777B49C ""+777B481: 8B 43 18 - mov eax,[ebx+18] // ---------- INJECTING HERE ---------- ""+777B484: 48 - dec eax ""+777B485: 89 43 18 - mov [ebx+18],eax ""+777B488: 8B 05 30 B2 A0 06 - mov eax,[06A0B230] // ---------- DONE INJECTING ---------- ""+777B48E: 83 EC 0C - sub esp,0C ""+777B491: 50 - push eax ""+777B492: 39 00 - cmp [eax],eax ""+777B494: E8 E7 06 00 00 - call 0777BB80 ""+777B499: 83 C4 10 - add esp,10 ""+777B49C: 8B 43 18 - mov eax,[ebx+18] ""+777B49F: 85 C0 - test eax,eax ""+777B4A1: 0F 85 43 00 00 00 - jne 0777B4EA ""+777B4A7: 83 EC 08 - sub esp,08 ""+777B4AA: 6A 00 - push 00 } Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 13 июня, 2017 Поделиться Опубликовано 13 июня, 2017 (изменено) 0777B3F8 - 85 C0 - test eax,eax тут у тебя количество карт с 0 сравниваются, думаю это то место которое решит все твои проблемы. 0777B431 - 85 FF - test edi,edi В edi надо посмотреть что хранится и изменить под себя. А нопить, дело не благородное, это может вызывать краши в непредвиденных обстоятельствах, пусть игра сама решает как будет работать код, а значения ты можешь менять не нарушая ход кода. Изменено 13 июня, 2017 пользователем partoftheworlD Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 13 июня, 2017 Поделиться Опубликовано 13 июня, 2017 10 минут назад, Strajder сказал: Или же есть другое решение? Оба дека занопь: Скрытый текст [ENABLE] aobscan(INJECT1,48 89 43 18 8B 05 30 B2 A0 06 83 EC 0C 50 39 00 E8 AC) aobscan(INJECT2,48 89 43 18 8B 05 30 B2 A0 06 83 EC 0C 50 39 00 E8 E7) registersymbol(INJECT1) registersymbol(INJECT2) INJECT1: db 90 INJECT2: db 90 [DISABLE] INJECT1: db 48 INJECT2: db 48 unregistersymbol(INJECT1) unregistersymbol(INJECT2) Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 13 июня, 2017 Поделиться Опубликовано 13 июня, 2017 8 минут назад, partoftheworlD сказал: тут у тебя количество карт с 0 сравниваются Я не уверен, что на том участке кода в eax лежит именно кол-во карт. Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 13 июня, 2017 Поделиться Опубликовано 13 июня, 2017 (изменено) 1 минуту назад, Garik66 сказал: Я не уверен, что на том участке кода в eax лежит именно кол-во карт. Ну это я предположил по 17 минут назад, Strajder сказал: Пробуя ломать количество выставляемых карт за 1 ход: столкнулся с цепочкой проверки значения. Попыткой задушить первый DEC eax - nop , может и не количество карт. Изменено 13 июня, 2017 пользователем partoftheworlD Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 13 июня, 2017 Поделиться Опубликовано 13 июня, 2017 Только что, partoftheworlD сказал: Ну это я предположил по, может и не количество карт. Как я понял код кол-во карт загружается только после: mov eax,[ebx+18] // здесь Ссылка на комментарий Поделиться на другие сайты Поделиться
Strajder Опубликовано 13 июня, 2017 Автор Поделиться Опубликовано 13 июня, 2017 На столе есть 2 пары карт вида: Игровые: Вспомогательные: //// //// //// //// //// //// Получается что, когда ноплю, то основные карты не тратят свое значение (уменьшение регистра eax не происходит) Но когда использую вспомогательные, то значение кол-ва карт падает. Видимо Нужно копать глубже... Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 13 июня, 2017 Поделиться Опубликовано 13 июня, 2017 32 минуты назад, Strajder сказал: Или же как то можно лучше реализовать? Ещё, как мне кажется, исходя из кода, можно сделать из последней проверки скрипт: 0777B49C - 8B 43 18 - mov eax,[ebx+18] // Сделать скрипт отсюда и записывать в [ebx+18] нужное тебе кол-во карт. // как раз именно здесь идёт и проверка, а 0 ли у тебя карт: 0777B49F - 85 C0 - test eax,eax // про которую и писал partoftheworlD ранее Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 13 июня, 2017 Поделиться Опубликовано 13 июня, 2017 1 минуту назад, Strajder сказал: Но когда использую вспомогательные, то значение кол-ва карт падает. Этот скрипт проверял? Ссылка на комментарий Поделиться на другие сайты Поделиться
Strajder Опубликовано 13 июня, 2017 Автор Поделиться Опубликовано 13 июня, 2017 10 минут назад, Garik66 сказал: Этот скрипт проверял? Да. Сигнатуры убежали) Но не далеко. 48 89 43 18 8B 05 30 B2 4 адреса. Но это не суть. Удлиню цепочку. занопил. Очки не тратятся. Скрытый текст [ENABLE] aobscan(INJECT1,48 89 43 18 8B 05 30 B2 EA 05 83 EC 0C 50 39 00 E8 5C) aobscan(INJECT2,48 89 43 18 8B 05 30 B2 EA 05 83 EC 0C 50 39 00 E8 67) aobscan(INJECT3,48 89 43 18 8B 05 30 B2 EA 05 83 EC 0C 50 39 00 E8 BC) aobscan(INJECT4,48 89 43 18 8B 05 30 B2 EA 05 83 EC 0C 50 39 00 E8 37) registersymbol(INJECT1) registersymbol(INJECT2) registersymbol(INJECT3) registersymbol(INJECT4) INJECT1: db 90 INJECT2: db 90 INJECT3: db 90 INJECT4: db 90 [DISABLE] INJECT1: db 48 INJECT2: db 48 INJECT3: db 48 INJECT4: db 48 unregistersymbol(INJECT1) unregistersymbol(INJECT2) unregistersymbol(INJECT3) unregistersymbol(INJECT4) Осталось уточнить. Откуда еще 2 адреса вылезли. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 13 июня, 2017 Поделиться Опубликовано 13 июня, 2017 5 минут назад, Strajder сказал: Да. Сигнатуры убежали) Сигнатуры придётся делать по другому. Они и будут так бегать так как в них попадают call -ы, например этот: call 0777BB80 // а так как адрес динамический они будет меняться и соответсвенно будет меняться сигнатура. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 13 июня, 2017 Поделиться Опубликовано 13 июня, 2017 Попробуй качнуть это и с помощью него сделать оба скрипта. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения