Strajder
-
Постов
48 -
Зарегистрирован
-
Посещение
-
Победитель дней
7
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные Strajder
-
-
Да действительно, проблема была в собственном отладчике игры, который запускается при запуске game.dat
По совету собственно ничего не получилось. Выход нашел при помощи Process hacker.
Отключил родной дебаггер, подключился CE. Полет нормальный. Но главное уже отключать при запущенной карте, а то при создании карты игра крашится.
-
Ну ладно. Начнем по новой.
Скрытый текст -
Привет всем.
Собственно хотел поковырять старую игрушку The Lord of the Ring: The Battle for Minle Earth.
По сути она построена на .ini файлах - в которых хранятся фиксированные характеристики и запресованных в один .DAT
Как я понимаю Cheat Engine тут будет почти бесполезен - в плане написания скриптов, т.к. отладчик там работать не будет (в плане бряков) и устойчивой системы построения кода там нет (Заранее извиняюсь за ломаный язык написания - думаю изъяснил понятно).
Возможность нахождения указателей значений в игре - Это предел для CE в таких играх? или же есть возможность расковырять данные игры без влезания в файлы .ini?
Заранее благодарен.
-
Ну и пожалуй последний гвоздь в игру Thea: The Awakening
Выложу сразу все скрипты, может кому нужно будет, или трейнер кто соберет.
Карточные скрипты:
Здоровье:
Скрытый текст{ Game : Thea.exe Version: Date : 2017-06-12 Author : MrAntiFun This script does blah blah blah } [ENABLE] aobscan(HP,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(HP) 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 HP+02: jmp newmem return: [DISABLE] HP+02: db 8B C8 39 09 8B 40 0C unregistersymbol(HP) 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) }
Броня:
Скрытый текст{ Game : Thea.exe Version: Date : 2017-06-11 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(ARMOR,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 ARMOR: jmp newmem return: registersymbol(ARMOR) [DISABLE] ARMOR: db 8B 46 30 85 C0 unregistersymbol(ARMOR) 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 }
Урон+100:
Скрытый текст{ Game : Thea.exe Version: Date : 2017-06-13 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(ATTACK,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 ATTACK: jmp newmem return: registersymbol(ATTACK) [DISABLE] ATTACK: db 8B 4E 2C 03 C1 unregistersymbol(ATTACK) 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-14 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(INJECTq,8B 43 18 85 C0 0F 85 43) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: mov [ebx+18],#1 code: mov eax,[ebx+18] test eax,eax jmp return INJECTq: jmp newmem return: registersymbol(INJECTq) [DISABLE] INJECTq: db 8B 43 18 85 C0 unregistersymbol(INJECTq) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 0737AEA4 ""+737AE87: 74 1B - je 0737AEA4 ""+737AE89: 8B 43 18 - mov eax,[ebx+18] ""+737AE8C: 48 - dec eax ""+737AE8D: 89 43 18 - mov [ebx+18],eax ""+737AE90: 8B 05 30 B2 5C 06 - mov eax,[065CB230] ""+737AE96: 83 EC 0C - sub esp,0C ""+737AE99: 50 - push eax ""+737AE9A: 39 00 - cmp [eax],eax ""+737AE9C: E8 E7 06 00 00 - call 0737B588 ""+737AEA1: 83 C4 10 - add esp,10 // ---------- INJECTING HERE ---------- ""+737AEA4: 8B 43 18 - mov eax,[ebx+18] ""+737AEA7: 85 C0 - test eax,eax // ---------- DONE INJECTING ---------- ""+737AEA9: 0F 85 43 00 00 00 - jne 0737AEF2 ""+737AEAF: 83 EC 08 - sub esp,08 ""+737AEB2: 6A 00 - push 00 ""+737AEB4: 53 - push ebx ""+737AEB5: E8 6E 75 FF FF - call 07372428 ""+737AEBA: 83 C4 10 - add esp,10 ""+737AEBD: 85 C0 - test eax,eax ""+737AEBF: 75 14 - jne 0737AED5 ""+737AEC1: 83 EC 08 - sub esp,08 ""+737AEC4: 6A 01 - push 01 }
Общие - Игровые скрипты:
Все ресурсы на 100, - лимит веса, - лимит обмундирования:
Скрытый текст{ Game : Thea.exe Version: Date : 2017-06-11 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(WSE,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 WSE: jmp newmem nop return: registersymbol(WSE) [DISABLE] WSE: db 8B 40 5C 8B 4E 0C unregistersymbol(WSE) 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(UPGRADE,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 UPGRADE: jmp newmem nop return: registersymbol(UPGRADE) [DISABLE] UPGRADE: db 8B 40 44 89 45 94 unregistersymbol(UPGRADE) 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 }
Бесконечные ходы отряда:
Скрытый текст{ Game : Thea.exe Version: Date : 2017-06-09 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(HODE,8B 40 54 85 C0 7C) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: mov [eax+54],#5 code: mov eax,[eax+54] test eax,eax jmp return HODE: jmp newmem return: registersymbol(HODE) [DISABLE] HODE: db 8B 40 54 85 C0 unregistersymbol(HODE) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 15C9C02A ""+15C9C016: 0E - push cs ""+15C9C017: 40 - inc eax ""+15C9C018: C0 F0 00 - rol al,00 ""+15C9C01B: 00 00 - add [eax],al ""+15C9C01D: 00 00 - add [eax],al ""+15C9C01F: 00 55 8B - add [ebp-75],dl ""+15C9C022: EC - in al,dx ""+15C9C023: 56 - push esi ""+15C9C024: 83 EC 04 - sub esp,04 ""+15C9C027: 8B 45 08 - mov eax,[ebp+08] // ---------- INJECTING HERE ---------- ""+15C9C02A: 8B 40 54 - mov eax,[eax+54] ""+15C9C02D: 85 C0 - test eax,eax // ---------- DONE INJECTING ---------- ""+15C9C02F: 7C 12 - jl 15C9C043 ""+15C9C031: 83 EC 0C - sub esp,0C ""+15C9C034: FF 75 08 - push [ebp+08] ""+15C9C037: E8 2C 00 00 00 - call 15C9C068 ""+15C9C03C: 83 C4 10 - add esp,10 ""+15C9C03F: 85 C0 - test eax,eax ""+15C9C041: 74 08 - je 15C9C04B ""+15C9C043: 8B 45 08 - mov eax,[ebp+08] ""+15C9C046: 8B 70 54 - mov esi,[eax+54] ""+15C9C049: EB 02 - jmp 15C9C04D }
Опыт - Максимальный опыт божества:
Скрытый текст{ Game : Thea.exe Version: Date : 2017-06-14 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(INJECTff,8B 40 54 89 85 14 FF FF FF) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: cmp [eax+54],#10000 JGE code mov [eax+54],#10000 code: mov eax,[eax+54] mov [ebp-000000EC],eax jmp return INJECTff: jmp newmem nop nop nop nop return: registersymbol(INJECTff) [DISABLE] INJECTff: db 8B 40 54 89 85 14 FF FF FF unregistersymbol(INJECTff) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 06B2E3ED ""+6B2E3BE: FF B5 F4 FE FF FF - push [ebp-0000010C] ""+6B2E3C4: 8B 85 F4 FE FF FF - mov eax,[ebp-0000010C] ""+6B2E3CA: 39 00 - cmp [eax],eax ""+6B2E3CC: E8 BF A1 80 FF - call 06338590 ""+6B2E3D1: 83 C4 10 - add esp,10 ""+6B2E3D4: 8B 85 1C FF FF FF - mov eax,[ebp-000000E4] ""+6B2E3DA: 8B 8D 18 FF FF FF - mov ecx,[ebp-000000E8] ""+6B2E3E0: 03 C1 - add eax,ecx ""+6B2E3E2: 89 85 1C FF FF FF - mov [ebp-000000E4],eax ""+6B2E3E8: E8 1B 68 BE 0E - call 15714C08 // ---------- INJECTING HERE ---------- ""+6B2E3ED: 8B 40 54 - mov eax,[eax+54] ""+6B2E3F0: 89 85 14 FF FF FF - mov [ebp-000000EC],eax // ---------- DONE INJECTING ---------- ""+6B2E3F6: B9 32 00 00 00 - mov ecx,00000032 ""+6B2E3FB: 99 - cdq ""+6B2E3FC: F7 F9 - idiv ecx ""+6B2E3FE: 8D 04 80 - lea eax,[eax+eax*4] ""+6B2E401: 03 C0 - add eax,eax ""+6B2E403: 89 85 18 FF FF FF - mov [ebp-000000E8],eax ""+6B2E409: 8D 85 14 FF FF FF - lea eax,[ebp-000000EC] ""+6B2E40F: 83 EC 0C - sub esp,0C ""+6B2E412: 50 - push eax ""+6B2E413: E8 C0 B8 88 FF - call 063B9CD8 }
Все скрипты сделаны для версии Thea: The Awakening 1.20.2516.0
Огромная благодарность всем кто помогал.
- 2
-
10 часов назад, Garik66 сказал:
Правильный подход. Тоже так предпочитаю делать.
А новый скрипт то работает? а то не написал.
Да скрипт работает. Но записал через mov, ибо через inc или add при выставлении карт идет увеличение значений, что не есть хорошо. Ну и еще 1 нюанс: Скрипт активируется только после того, как выставить одну карту. Видимо код срабатывает и прописывает себя, а до этого нужных сигнатур нет. Ну а дальше все норм.
-
Доделать до конца и идти спать
Скрытый текст{ Game : Thea.exe Version: Date : 2017-06-14 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(INJECTq,8B 43 18 85 C0 0F 85 43) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: mov [ebx+18],#1 code: mov eax,[ebx+18] test eax,eax jmp return INJECTq: jmp newmem return: registersymbol(INJECTq) [DISABLE] INJECTq: db 8B 43 18 85 C0 unregistersymbol(INJECTq) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 0737AEA4 ""+737AE87: 74 1B - je 0737AEA4 ""+737AE89: 8B 43 18 - mov eax,[ebx+18] ""+737AE8C: 48 - dec eax ""+737AE8D: 89 43 18 - mov [ebx+18],eax ""+737AE90: 8B 05 30 B2 5C 06 - mov eax,[065CB230] ""+737AE96: 83 EC 0C - sub esp,0C ""+737AE99: 50 - push eax ""+737AE9A: 39 00 - cmp [eax],eax ""+737AE9C: E8 E7 06 00 00 - call 0737B588 ""+737AEA1: 83 C4 10 - add esp,10 // ---------- INJECTING HERE ---------- ""+737AEA4: 8B 43 18 - mov eax,[ebx+18] ""+737AEA7: 85 C0 - test eax,eax // ---------- DONE INJECTING ---------- ""+737AEA9: 0F 85 43 00 00 00 - jne 0737AEF2 ""+737AEAF: 83 EC 08 - sub esp,08 ""+737AEB2: 6A 00 - push 00 ""+737AEB4: 53 - push ebx ""+737AEB5: E8 6E 75 FF FF - call 07372428 ""+737AEBA: 83 C4 10 - add esp,10 ""+737AEBD: 85 C0 - test eax,eax ""+737AEBF: 75 14 - jne 0737AED5 ""+737AEC1: 83 EC 08 - sub esp,08 ""+737AEC4: 6A 01 - push 01 }
Всем добрых.
- 1
-
Ошибку понял, завтра исправлю. Garik66 Спасибо еще раз.
Пойду спать. Завтра еще на работе пахать и пахать.
-
11 минуту назад, Garik66 сказал:
Я же говорил про последнюю проверку:
0777B49C - 8B 43 18 - mov eax,[ebx+18] // попробуй именно здесь написать, может будет нужен один скрипт 0777B49F - 85 C0 - test eax,eax
Поздно уже) Час ночи. Затупил ...
Хотя как ни странно с 1 скриптом не работает.. (Либо 1 либо 2) С двумя да.
Теперь понятно почему.)
Первый отвечает за левую часть карт. А второй за правую.
-
Изменил
Скрытый текст{ Game : Thea.exe Version: Date : 2017-06-14 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(INJECT,1B 8B 43 18 48 89 43 18) // should be unique aobscan(INJECT1,2F 8B 43 18 48 89 43 18) // should be unique alloc(newmem,$1000) alloc(newmem1,$1000) registersymbol(INJECT) registersymbol(INJECT1) label(code) label(code1) label(return) label(return1) newmem: inc [ebx+18] code: mov eax,[ebx+18] dec eax mov [ebx+18],eax jmp return newmem1: inc [ebx+18] code1: mov eax,[ebx+18] dec eax mov [ebx+18],eax jmp return1 INJECT+01: jmp newmem nop nop return: INJECT1+01: jmp newmem1 nop nop return1: [DISABLE] INJECT+01: db 8B 43 18 48 89 43 18 INJECT1+01: db 8B 43 18 48 89 43 18 unregistersymbol(INJECT) unregistersymbol(INJECT1) dealloc(newmem) dealloc(newmem1) { // ORIGINAL CODE - INJECTION POINT: 0737AE89 ""+737AE6F: 8B 05 30 B2 5C 06 - mov eax,[065CB230] ""+737AE75: 51 - push ecx ""+737AE76: 57 - push edi ""+737AE77: FF 75 0C - push [ebp+0C] ""+737AE7A: 50 - push eax ""+737AE7B: 39 00 - cmp [eax],eax ""+737AE7D: E8 46 8D 00 00 - call 07383BC8 ""+737AE82: 83 C4 10 - add esp,10 ""+737AE85: 85 C0 - test eax,eax ""+737AE87: 74 1B - je 0737AEA4 // ---------- INJECTING HERE ---------- ""+737AE89: 8B 43 18 - mov eax,[ebx+18] ""+737AE8C: 48 - dec eax ""+737AE8D: 89 43 18 - mov [ebx+18],eax // ---------- DONE INJECTING ---------- ""+737AE90: 8B 05 30 B2 5C 06 - mov eax,[065CB230] ""+737AE96: 83 EC 0C - sub esp,0C ""+737AE99: 50 - push eax ""+737AE9A: 39 00 - cmp [eax],eax ""+737AE9C: E8 E7 06 00 00 - call 0737B588 ""+737AEA1: 83 C4 10 - add esp,10 ""+737AEA4: 8B 43 18 - mov eax,[ebx+18] ""+737AEA7: 85 C0 - test eax,eax ""+737AEA9: 0F 85 43 00 00 00 - jne 0737AEF2 ""+737AEAF: 83 EC 08 - sub esp,08 }
-
2 минуты назад, Garik66 сказал:
Тебе в твоём случае не нужно его обходить, а сделать как я и написал тут.
Спасибо. Буду пробовать.
-
25 минут назад, Garik66 сказал:
Попробуй качнуть это и с помощью него сделать оба скрипта.
Сделал. Работает. Очки не уменьшаются.
Почитал про "test" Честно говоря понял только то что он производит вычисления значений, но не записывает результат, а сравнивает.
Можно если не затруднит показать какой - нибудь пример решения. Но не к данному случаю. Хочу сам понять как обойти этот
"test eax,eax"
-
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 адреса вылезли.
-
На столе есть 2 пары карт вида:
Игровые: Вспомогательные:
//// //// //// //// //// ////
Получается что, когда ноплю, то основные карты не тратят свое значение (уменьшение регистра eax не происходит)
Но когда использую вспомогательные, то значение кол-ва карт падает. Видимо Нужно копать глубже...
-
Пробуя ломать количество выставляемых карт за 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 }
-
О как Спасибо большое всем. Не думал про "INJECT" - что так критично.
-
Прошу вас проверить остальные скрипты. Искал и делал сам. С удовольствием выслушаю все комментарии.
Скрипт на Ходы:
Скрытый текст{ 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 }
- 2
-
3 минуты назад, what228 сказал:
Согласен. Я если и смотрел на чужие трейнеры ( 1 раз лишь когда начинал ) то лишь на то как реализована функция а не сам код весь вытягивал
Получается что не твой.
Тебя это не смущало?)
Не "это" как раз я писал.
-
Garik66 Спасибо. Совет учту.
Я стараюсь учится по уже сделанным скриптам. Пытаясь понять и разобраться. Анализирую. Что не ясно читаю в интернете.
Начинаю вечерками с старых игр. Ищу, пробую, щупаю.
Чужой труд конечно брать нехорошо тут полностью с тобой согласен.
С Уважением Александр.
-
Проблему вроде удалось решить. 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) }
-
Доброго времени суток . Ну и конечно же здравствуйте.
Зовут меня Александр, - можно просто Саня.
Вот уже 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. Но чего то не хватает) Наверное Ума?
Буду рад любой помощи.
-
Благодарю.
-
Доброго времени суток.
Хотел узнать по материалам:
В частности ссылки на скачивание материалов уже не существуют.
Появится ли возможность перезалить?
http://nullalex.gamehacklab.ru/files/gamehacklab/articles_gamehacking/DevilMayCry.zip - not Found
Был бы признателен.
С Уважением Александр.
Вопрос по взлому игр построеных на .ini файлах
in Вопросы по созданию читов в одиночных играх
Опубликовано
Подскажите пожалуйста что делает "cvttss2si"
Читал в интернете но так толком ничего не понял.
Заранее благодарен.