Strajder Опубликовано 28 июня, 2017 Поделиться Опубликовано 28 июня, 2017 (изменено) Привет Всем. Dead In Bermuda игра Survival, - решил ее поломать, ну и заодно подучиться . Собственно возникла пара вопросов: Но сначала немного о механике игры: В наличии 8 персонажей потерпевших крушение. У каждого из которых есть основные характеристики: 1) Голод 2) Болезнь 3) Дипрессия 4) Усталость 5) Ранения И общие характеристики: Скрытность, Изготовление, Исследования, Собирательство, Охота, Рыбалка, Сбор, Готовка, Сила, Ловкость, Телосложение, Борьба, Интеллект, Речь, Медицина, Знания. Пробовал сначала сделать каждую из основных характеристик своим скриптом: Голод: Скрытый текст { Game : Dead In Bermuda.exe Version: Date : 2017-06-27 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(Hungry,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9 ED) // should be unique alloc(newmem,$1000) label(code) label(return) registersymbol(Hungry) newmem: mov [eax+08], (float)0 code: fld dword ptr [eax+08] fstp dword ptr [ebp-0C] jmp return Hungry: jmp newmem db 90 return: [DISABLE] Hungry: db D9 40 08 D9 5D F4 unregistersymbol(Hungry) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 1403CF7D ""+1403CF5E: 83 EC 08 - sub esp,08 ""+1403CF61: 68 E0 FC CF 0E - push 0ECFFCE0 ""+1403CF66: 57 - push edi ""+1403CF67: E8 F4 4F 68 F1 - call 056C1F60 ""+1403CF6C: 83 C4 10 - add esp,10 ""+1403CF6F: 85 C0 - test eax,eax ""+1403CF71: 74 1E - je 1403CF91 ""+1403CF73: 8B 86 A8 00 00 00 - mov eax,[esi+000000A8] ""+1403CF79: 8B C8 - mov ecx,eax ""+1403CF7B: 39 09 - cmp [ecx],ecx // ---------- INJECTING HERE ---------- ""+1403CF7D: D9 40 08 - fld dword ptr [eax+08] ""+1403CF80: D9 5D F4 - fstp dword ptr [ebp-0C] // ---------- DONE INJECTING ---------- ""+1403CF83: D9 45 F4 - fld dword ptr [ebp-0C] ""+1403CF86: D9 5D F4 - fstp dword ptr [ebp-0C] ""+1403CF89: D9 45 F4 - fld dword ptr [ebp-0C] ""+1403CF8C: E9 ED 00 00 00 - jmp 1403D07E ""+1403CF91: 83 EC 08 - sub esp,08 ""+1403CF94: 68 60 FB CF 0E - push 0ECFFB60 ""+1403CF99: 57 - push edi ""+1403CF9A: E8 C1 4F 68 F1 - call 056C1F60 ""+1403CF9F: 83 C4 10 - add esp,10 ""+1403CFA2: 85 C0 - test eax,eax } Болезнь: Скрытый текст { Game : Dead In Bermuda.exe Version: Date : 2017-06-27 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(Disease,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9) // should be unique alloc(newmem,$1000) label(code) label(return) registersymbol(Disease) newmem: mov [eax+08], (float)0 code: fld dword ptr [eax+08] fstp dword ptr [ebp-0C] jmp return Disease: jmp newmem db 90 return: [DISABLE] Disease: db D9 40 08 D9 5D F4 unregistersymbol(Disease) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 1403CFE3 ""+1403CFC4: 83 EC 08 - sub esp,08 ""+1403CFC7: 68 A0 0F D0 0E - push 0ED00FA0 ""+1403CFCC: 57 - push edi ""+1403CFCD: E8 8E 4F 68 F1 - call 056C1F60 ""+1403CFD2: 83 C4 10 - add esp,10 ""+1403CFD5: 85 C0 - test eax,eax ""+1403CFD7: 74 1E - je 1403CFF7 ""+1403CFD9: 8B 86 B0 00 00 00 - mov eax,[esi+000000B0] ""+1403CFDF: 8B C8 - mov ecx,eax ""+1403CFE1: 39 09 - cmp [ecx],ecx // ---------- INJECTING HERE ---------- ""+1403CFE3: D9 40 08 - fld dword ptr [eax+08] ""+1403CFE6: D9 5D F4 - fstp dword ptr [ebp-0C] // ---------- DONE INJECTING ---------- ""+1403CFE9: D9 45 F4 - fld dword ptr [ebp-0C] ""+1403CFEC: D9 5D F4 - fstp dword ptr [ebp-0C] ""+1403CFEF: D9 45 F4 - fld dword ptr [ebp-0C] ""+1403CFF2: E9 87 00 00 00 - jmp 1403D07E ""+1403CFF7: 83 EC 08 - sub esp,08 ""+1403CFFA: 68 20 FB CF 0E - push 0ECFFB20 ""+1403CFFF: 57 - push edi ""+1403D000: E8 5B 4F 68 F1 - call 056C1F60 ""+1403D005: 83 C4 10 - add esp,10 ""+1403D008: 85 C0 - test eax,eax } Депрессия: Скрытый текст { Game : Dead In Bermuda.exe Version: Date : 2017-06-27 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(Psyho,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 EB) // should be unique alloc(newmem,$1000) label(code) label(return) registersymbol(Psyho) newmem: mov [eax+08], (float)0 code: fld dword ptr [eax+08] fstp dword ptr [ebp-0C] jmp return Psyho: jmp newmem db 90 return: [DISABLE] Psyho: db D9 40 08 D9 5D F4 unregistersymbol(Psyho) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 1403D049 ""+1403D02A: 83 EC 08 - sub esp,08 ""+1403D02D: 68 60 0E D0 0E - push 0ED00E60 ""+1403D032: 57 - push edi ""+1403D033: E8 28 4F 68 F1 - call 056C1F60 ""+1403D038: 83 C4 10 - add esp,10 ""+1403D03B: 85 C0 - test eax,eax ""+1403D03D: 74 1B - je 1403D05A ""+1403D03F: 8B 86 B8 00 00 00 - mov eax,[esi+000000B8] ""+1403D045: 8B C8 - mov ecx,eax ""+1403D047: 39 09 - cmp [ecx],ecx // ---------- INJECTING HERE ---------- ""+1403D049: D9 40 08 - fld dword ptr [eax+08] ""+1403D04C: D9 5D F4 - fstp dword ptr [ebp-0C] // ---------- DONE INJECTING ---------- ""+1403D04F: D9 45 F4 - fld dword ptr [ebp-0C] ""+1403D052: D9 5D F4 - fstp dword ptr [ebp-0C] ""+1403D055: D9 45 F4 - fld dword ptr [ebp-0C] ""+1403D058: EB 24 - jmp 1403D07E ""+1403D05A: 83 EC 08 - sub esp,08 ""+1403D05D: 57 - push edi ""+1403D05E: 68 10 23 2A 17 - push 172A2310 ""+1403D063: E8 10 49 68 F1 - call 056C1978 ""+1403D068: 83 C4 10 - add esp,10 ""+1403D06B: 83 EC 08 - sub esp,08 } Усталость: Скрытый текст { Game : Dead In Bermuda.exe Version: Date : 2017-06-27 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(Sleep,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9 BA) // should be unique alloc(newmem,$1000) label(code) label(return) registersymbol(Sleep) newmem: mov [eax+08], (float)0 code: fld dword ptr [eax+08] fstp dword ptr [ebp-0C] jmp return Sleep: jmp newmem db 90 return: [DISABLE] Sleep: db D9 40 08 D9 5D F4 unregistersymbol(Sleep) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 1403CFB0 ""+1403CF91: 83 EC 08 - sub esp,08 ""+1403CF94: 68 60 FB CF 0E - push 0ECFFB60 ""+1403CF99: 57 - push edi ""+1403CF9A: E8 C1 4F 68 F1 - call 056C1F60 ""+1403CF9F: 83 C4 10 - add esp,10 ""+1403CFA2: 85 C0 - test eax,eax ""+1403CFA4: 74 1E - je 1403CFC4 ""+1403CFA6: 8B 86 AC 00 00 00 - mov eax,[esi+000000AC] ""+1403CFAC: 8B C8 - mov ecx,eax ""+1403CFAE: 39 09 - cmp [ecx],ecx // ---------- INJECTING HERE ---------- ""+1403CFB0: D9 40 08 - fld dword ptr [eax+08] ""+1403CFB3: D9 5D F4 - fstp dword ptr [ebp-0C] // ---------- DONE INJECTING ---------- ""+1403CFB6: D9 45 F4 - fld dword ptr [ebp-0C] ""+1403CFB9: D9 5D F4 - fstp dword ptr [ebp-0C] ""+1403CFBC: D9 45 F4 - fld dword ptr [ebp-0C] ""+1403CFBF: E9 BA 00 00 00 - jmp 1403D07E ""+1403CFC4: 83 EC 08 - sub esp,08 ""+1403CFC7: 68 A0 0F D0 0E - push 0ED00FA0 ""+1403CFCC: 57 - push edi ""+1403CFCD: E8 8E 4F 68 F1 - call 056C1F60 ""+1403CFD2: 83 C4 10 - add esp,10 ""+1403CFD5: 85 C0 - test eax,eax } Ранения: Скрытый текст { Game : Dead In Bermuda.exe Version: Date : 2017-06-27 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(Noattack,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9 54) // should be unique alloc(newmem,$1000) label(code) label(return) registersymbol(Noattack) newmem: mov [eax+08], (float)0 code: fld dword ptr [eax+08] fstp dword ptr [ebp-0C] jmp return Noattack: jmp newmem db 90 return: [DISABLE] Noattack: db D9 40 08 D9 5D F4 unregistersymbol(Noattack) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 1403D016 ""+1403CFF7: 83 EC 08 - sub esp,08 ""+1403CFFA: 68 20 FB CF 0E - push 0ECFFB20 ""+1403CFFF: 57 - push edi ""+1403D000: E8 5B 4F 68 F1 - call 056C1F60 ""+1403D005: 83 C4 10 - add esp,10 ""+1403D008: 85 C0 - test eax,eax ""+1403D00A: 74 1E - je 1403D02A ""+1403D00C: 8B 86 B4 00 00 00 - mov eax,[esi+000000B4] ""+1403D012: 8B C8 - mov ecx,eax ""+1403D014: 39 09 - cmp [ecx],ecx // ---------- INJECTING HERE ---------- ""+1403D016: D9 40 08 - fld dword ptr [eax+08] ""+1403D019: D9 5D F4 - fstp dword ptr [ebp-0C] // ---------- DONE INJECTING ---------- ""+1403D01C: D9 45 F4 - fld dword ptr [ebp-0C] ""+1403D01F: D9 5D F4 - fstp dword ptr [ebp-0C] ""+1403D022: D9 45 F4 - fld dword ptr [ebp-0C] ""+1403D025: E9 54 00 00 00 - jmp 1403D07E ""+1403D02A: 83 EC 08 - sub esp,08 ""+1403D02D: 68 60 0E D0 0E - push 0ED00E60 ""+1403D032: 57 - push edi ""+1403D033: E8 28 4F 68 F1 - call 056C1F60 ""+1403D038: 83 C4 10 - add esp,10 ""+1403D03B: 85 C0 - test eax,eax } Все работает, но уж больно все громоздко, если учесть, что у всех 5 скриптов отличается AOB всего 1 - 2 последних байта, хотя и работают по однотипной инструкции. Отсюда и следует вопрос: Возможно ли заставить работать все 5 скриптов по одному коду? Примерно так: Скрытый текст { Game : Dead In Bermuda.exe Version: Date : 2017-06-27 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(Psyho,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 EB) // should be unique aobscan(Sleep,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9 BA) // should be unique aobscan(Noattack,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9 54) // should be unique aobscan(Hungry,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9 ED) // should be unique aobscan(Disease,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9) // should be unique alloc(newmem,$2048) label(code) label(return) registersymbol(Psyho) registersymbol(Sleep) registersymbol(Noattack) registersymbol(Hungry) registersymbol(Disease) newmem: mov [eax+08], (float)0 code: fld dword ptr [eax+08] fstp dword ptr [ebp-0C] jmp return Sleep: jmp newmem db 90 return: Psyho: jmp newmem db 90 return: Noattack: jmp newmem db 90 return: Hungry: jmp newmem db 90 return: Disease: jmp newmem db 90 return: [DISABLE] Psyho: db D9 40 08 D9 5D F4 Sleep: db D9 40 08 D9 5D F4 Noattack: db D9 40 08 D9 5D F4 Hungry: db D9 40 08 D9 5D F4 Disease: db D9 40 08 D9 5D F4 unregistersymbol(Psyho) unregistersymbol(Sleep) unregistersymbol(Noattack) unregistersymbol(Hungry) unregistersymbol(Disease) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 1403D049 ""+1403D02A: 83 EC 08 - sub esp,08 ""+1403D02D: 68 60 0E D0 0E - push 0ED00E60 ""+1403D032: 57 - push edi ""+1403D033: E8 28 4F 68 F1 - call 056C1F60 ""+1403D038: 83 C4 10 - add esp,10 ""+1403D03B: 85 C0 - test eax,eax ""+1403D03D: 74 1B - je 1403D05A ""+1403D03F: 8B 86 B8 00 00 00 - mov eax,[esi+000000B8] ""+1403D045: 8B C8 - mov ecx,eax ""+1403D047: 39 09 - cmp [ecx],ecx // ---------- INJECTING HERE ---------- ""+1403D049: D9 40 08 - fld dword ptr [eax+08] ""+1403D04C: D9 5D F4 - fstp dword ptr [ebp-0C] // ---------- DONE INJECTING ---------- ""+1403D04F: D9 45 F4 - fld dword ptr [ebp-0C] ""+1403D052: D9 5D F4 - fstp dword ptr [ebp-0C] ""+1403D055: D9 45 F4 - fld dword ptr [ebp-0C] ""+1403D058: EB 24 - jmp 1403D07E ""+1403D05A: 83 EC 08 - sub esp,08 ""+1403D05D: 57 - push edi ""+1403D05E: 68 10 23 2A 17 - push 172A2310 ""+1403D063: E8 10 49 68 F1 - call 056C1978 ""+1403D068: 83 C4 10 - add esp,10 ""+1403D06B: 83 EC 08 - sub esp,08 } Соответственно скрипт не будет работать, т.к. label(return) объявлен всего 1 а должно быть 5. Позже пошел другим путем: Нашел инструкцию: Скрытый текст { Game : Dead In Bermuda.exe Version: Date : 2017-06-28 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(HeroStat,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9 BA) // should be unique alloc(newmem,$1000) label(code) label(return) label(P_HERO) registersymbol(P_HERO) registersymbol(HeroStat) newmem: mov [P_HERO],eax code: fld dword ptr [eax+08] fstp dword ptr [ebp-0C] jmp return P_HERO: dd 0 HeroStat: jmp newmem nop return: [DISABLE] HeroStat: db D9 40 08 D9 5D F4 unregistersymbol(HeroStat) unregistersymbol(P_HERO) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 1D8FE290 ""+1D8FE271: 83 EC 08 - sub esp,08 ""+1D8FE274: 68 20 3E FE 0E - push 0EFE3E20 ""+1D8FE279: 57 - push edi ""+1D8FE27A: E8 E1 3C 02 E8 - call 05921F60 ""+1D8FE27F: 83 C4 10 - add esp,10 ""+1D8FE282: 85 C0 - test eax,eax ""+1D8FE284: 74 1E - je 1D8FE2A4 ""+1D8FE286: 8B 86 AC 00 00 00 - mov eax,[esi+000000AC] ""+1D8FE28C: 8B C8 - mov ecx,eax ""+1D8FE28E: 39 09 - cmp [ecx],ecx // ---------- INJECTING HERE ---------- ""+1D8FE290: D9 40 08 - fld dword ptr [eax+08] ""+1D8FE293: D9 5D F4 - fstp dword ptr [ebp-0C] // ---------- DONE INJECTING ---------- ""+1D8FE296: D9 45 F4 - fld dword ptr [ebp-0C] ""+1D8FE299: D9 5D F4 - fstp dword ptr [ebp-0C] ""+1D8FE29C: D9 45 F4 - fld dword ptr [ebp-0C] ""+1D8FE29F: E9 BA 00 00 00 - jmp 1D8FE35E ""+1D8FE2A4: 83 EC 08 - sub esp,08 ""+1D8FE2A7: 68 48 D8 EA 0E - push 0EEAD848 ""+1D8FE2AC: 57 - push edi ""+1D8FE2AD: E8 AE 3C 02 E8 - call 05921F60 ""+1D8FE2B2: 83 C4 10 - add esp,10 ""+1D8FE2B5: 85 C0 - test eax,eax } Сделал пойнтер. Прописал смещения. При выделении персонажа, корректно показывает все его характеристики. Исключением является 1 персонаж у которого 4-6 стат показывают бред. Пробовал с другими инструкциями, итог один и тот же. Буду благодарен за подсказку в данном направлении. Скрипт на бесконечные ресурсы работает: Скрытый текст { Game : Dead In Bermuda.exe Version: Date : 2017-06-27 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(Resour,8B 40 0C 85 C0 0F 8F DE) // should be unique alloc(newmem,$1000) label(code) label(return) registersymbol(Resour) newmem: mov [eax+0C],#100 code: mov eax,[eax+0C] test eax,eax jmp return Resour: jmp newmem return: [DISABLE] Resour: db 8B 40 0C 85 C0 unregistersymbol(Resour) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 1406AF57 ""+1406AF3C: 83 EC 08 - sub esp,08 ""+1406AF3F: 53 - push ebx ""+1406AF40: 50 - push eax ""+1406AF41: E8 2A 0C 67 F1 - call 056DBB70 ""+1406AF46: 83 C4 10 - add esp,10 ""+1406AF49: 8B 45 F0 - mov eax,[ebp-10] ""+1406AF4C: 8B 48 0C - mov ecx,[eax+0C] ""+1406AF4F: 03 CE - add ecx,esi ""+1406AF51: 89 48 0C - mov [eax+0C],ecx ""+1406AF54: 8B 45 F0 - mov eax,[ebp-10] // ---------- INJECTING HERE ---------- ""+1406AF57: 8B 40 0C - mov eax,[eax+0C] ""+1406AF5A: 85 C0 - test eax,eax // ---------- DONE INJECTING ---------- ""+1406AF5C: 0F 8F DE 00 00 00 - jg 1406B040 ""+1406AF62: 8B 43 30 - mov eax,[ebx+30] ""+1406AF65: 8B 4D F0 - mov ecx,[ebp-10] ""+1406AF68: 83 EC 08 - sub esp,08 ""+1406AF6B: 51 - push ecx ""+1406AF6C: 50 - push eax ""+1406AF6D: 39 00 - cmp [eax],eax ""+1406AF6F: E8 F0 01 00 00 - call 1406B164 ""+1406AF74: 83 C4 10 - add esp,10 ""+1406AF77: 8B 43 20 - mov eax,[ebx+20] } Быстрая постройка в мастерской - тоже работает: Скрытый текст { Game : Dead In Bermuda.exe Version: Date : 2017-06-27 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(ISSLE,88 10 D9 00 83 EC 0C) // should be unique alloc(newmem,$1000) label(code) label(return) registersymbol(ISSLE) newmem: mov [eax], (float)1000 code: fld dword ptr [eax] sub esp,0C jmp return ISSLE+02: jmp newmem return: [DISABLE] ISSLE+02: db D9 00 83 EC 0C unregistersymbol(ISSLE) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 1403EE91 ""+1403EE70: E8 A3 D8 69 F1 - call 056DC718 ""+1403EE75: 83 C4 10 - add esp,10 ""+1403EE78: 8B C8 - mov ecx,eax ""+1403EE7A: 8B 45 D4 - mov eax,[ebp-2C] ""+1403EE7D: 8B D1 - mov edx,ecx ""+1403EE7F: 39 12 - cmp [edx],edx ""+1403EE81: 8B 49 40 - mov ecx,[ecx+40] ""+1403EE84: 39 48 0C - cmp [eax+0C],ecx ""+1403EE87: 0F 86 36 01 00 00 - jbe 1403EFC3 ""+1403EE8D: 8D 44 88 10 - lea eax,[eax+ecx*4+10] // ---------- INJECTING HERE ---------- ""+1403EE91: D9 00 - fld dword ptr [eax] ""+1403EE93: 83 EC 0C - sub esp,0C // ---------- DONE INJECTING ---------- ""+1403EE96: 83 EC 04 - sub esp,04 ""+1403EE99: D9 1C 24 - fstp dword ptr [esp] ""+1403EE9C: E8 2F F7 6D F1 - call 0571E5D0 ""+1403EEA1: 83 C4 10 - add esp,10 ""+1403EEA4: 8B D0 - mov edx,eax ""+1403EEA6: 8B 45 DC - mov eax,[ebp-24] ""+1403EEA9: 8B 4D D8 - mov ecx,[ebp-28] ""+1403EEAC: 52 - push edx ""+1403EEAD: DB 04 24 - fild dword ptr [esp] ""+1403EEB0: D9 1C 24 - fstp dword ptr [esp] } Очки навыков работают: Скрытый текст { Game : Dead In Bermuda.exe Version: Date : 2017-06-27 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(points,8B 87 10 01 00 00 8B D9) // should be unique alloc(newmem,$1000) label(code) label(return) registersymbol(points) newmem: mov [edi+00000110],#50 code: mov eax,[edi+00000110] jmp return points: jmp newmem db 90 return: [DISABLE] points: db 8B 87 10 01 00 00 unregistersymbol(points) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 1706B24F ""+1706B232: 85 C0 - test eax,eax ""+1706B234: 0F 84 6F 00 00 00 - je 1706B2A9 ""+1706B23A: 8B 46 44 - mov eax,[esi+44] ""+1706B23D: 83 EC 0C - sub esp,0C ""+1706B240: 50 - push eax ""+1706B241: 39 00 - cmp [eax],eax ""+1706B243: E8 78 99 39 EE - call 05404BC0 ""+1706B248: 83 C4 10 - add esp,10 ""+1706B24B: 8B C8 - mov ecx,eax ""+1706B24D: 39 3F - cmp [edi],edi // ---------- INJECTING HERE ---------- ""+1706B24F: 8B 87 10 01 00 00 - mov eax,[edi+00000110] // ---------- DONE INJECTING ---------- ""+1706B255: 8B D9 - mov ebx,ecx ""+1706B257: 85 C0 - test eax,eax ""+1706B259: 7E 36 - jle 1706B291 ""+1706B25B: 8B 46 2C - mov eax,[esi+2C] ""+1706B25E: 83 EC 0C - sub esp,0C ""+1706B261: 50 - push eax ""+1706B262: 39 00 - cmp [eax],eax ""+1706B264: E8 E7 0A 3A EE - call 0540BD50 ""+1706B269: 83 C4 10 - add esp,10 ""+1706B26C: 83 EC 04 - sub esp,04 } Все характеристики по 100 - работает, но нужно покопать поглубже, при рестарте не все значения остаются 100 Пока, что так: Скрытый текст { Game : Dead In Bermuda.exe Version: Date : 2017-06-27 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(HaRR,D9 40 0C DD 5D F8) // should be unique alloc(newmem,$1000) label(code) label(return) registersymbol(HaRR) newmem: mov dword ptr [eax+0C], (float)100 code: fld dword ptr [eax+0C] fstp qword ptr [ebp-08] jmp return HaRR: jmp newmem db 90 return: [DISABLE] HaRR: db D9 40 0C DD 5D F8 unregistersymbol(HaRR) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 1403CC16 ""+1403CBFA: D9 FC - frndint ""+1403CBFC: 83 EC 04 - sub esp,04 ""+1403CBFF: D9 1C 24 - fstp dword ptr [esp] ""+1403CC02: D9 04 24 - fld dword ptr [esp] ""+1403CC05: 83 C4 04 - add esp,04 ""+1403CC08: D9 5D F4 - fstp dword ptr [ebp-0C] ""+1403CC0B: D9 45 F4 - fld dword ptr [ebp-0C] ""+1403CC0E: DD 5D F8 - fstp qword ptr [ebp-08] ""+1403CC11: EB 09 - jmp 1403CC1C ""+1403CC13: 8B 45 08 - mov eax,[ebp+08] // ---------- INJECTING HERE ---------- ""+1403CC16: D9 40 0C - fld dword ptr [eax+0C] ""+1403CC19: DD 5D F8 - fstp qword ptr [ebp-08] // ---------- DONE INJECTING ---------- ""+1403CC1C: DD 45 F8 - fld qword ptr [ebp-08] ""+1403CC1F: C9 - leave ""+1403CC20: C3 - ret ""+1403CC21: 00 00 - add [eax],al ""+1403CC23: 00 00 - add [eax],al ""+1403CC25: 00 00 - add [eax],al ""+1403CC27: 00 55 8B - add [ebp-75],dl ""+1403CC2A: EC - in al,dx ""+1403CC2B: 53 - push ebx ""+1403CC2C: 57 - push edi } Ну и ремонт библиотеки и мастерской: Скрытый текст { Game : Dead In Bermuda.exe Version: Date : 2017-06-27 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(Repair2,D9 80 90 00 00 00 C9) // should be unique alloc(newmem,$1000) label(code) label(return) registersymbol(Repair2) newmem: mov [eax+00000090], (float)100 code: fld dword ptr [eax+00000090] jmp return Repair2: jmp newmem db 90 return: [DISABLE] Repair2: db D9 80 90 00 00 00 unregistersymbol(Repair2) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 140384F9 ""+140384E5: 00 00 - add [eax],al ""+140384E7: 00 55 8B - add [ebp-75],dl ""+140384EA: EC - in al,dx ""+140384EB: 83 EC 08 - sub esp,08 ""+140384EE: C9 - leave ""+140384EF: C3 - ret ""+140384F0: 55 - push ebp ""+140384F1: 8B EC - mov ebp,esp ""+140384F3: 83 EC 08 - sub esp,08 ""+140384F6: 8B 45 08 - mov eax,[ebp+08] // ---------- INJECTING HERE ---------- ""+140384F9: D9 80 90 00 00 00 - fld dword ptr [eax+00000090] // ---------- DONE INJECTING ---------- ""+140384FF: C9 - leave ""+14038500: C3 - ret ""+14038501: 00 00 - add [eax],al ""+14038503: 00 00 - add [eax],al ""+14038505: 00 00 - add [eax],al ""+14038507: 00 55 8B - add [ebp-75],dl ""+1403850A: EC - in al,dx ""+1403850B: 83 EC 08 - sub esp,08 ""+1403850E: 8B 45 08 - mov eax,[ebp+08] ""+14038511: D9 80 94 00 00 00 - fld dword ptr [eax+00000094] } Собственно нужна помощь / подсказка с характеристиками персонажей, с проблемой что описал выше. Заранее благодарен. Изменено 28 июня, 2017 пользователем Strajder Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 28 июня, 2017 Поделиться Опубликовано 28 июня, 2017 Вроде с помощью Lua можно найти все вхождения сигнатур одной строкой, подставив на места меняющихся байт знаки вопроса (это скажет СЕ, что значения в этих байтах могут меняться). Затем можно пройтись циклом по найденным адресам и везде прописать прыжок на выделенную память, а лучше не прыжок, а call и в конце вместо прыжка возврата ret Я в lua не силен, это нужно ждать тех участников, кто разбирается в нем. Ссылка на комментарий Поделиться на другие сайты Поделиться
Strajder Опубликовано 29 июня, 2017 Автор Поделиться Опубликовано 29 июня, 2017 5 часов назад, Xipho сказал: Вроде с помощью Lua можно найти все вхождения сигнатур одной строкой, подставив на места меняющихся байт знаки вопроса (это скажет СЕ, что значения в этих байтах могут меняться). Затем можно пройтись циклом по найденным адресам и везде прописать прыжок на выделенную память, а лучше не прыжок, а call и в конце вместо прыжка возврата ret Я в lua не силен, это нужно ждать тех участников, кто разбирается в нем. Спасибо, мысль интересная. К сожалению в Lua тоже не силен. Попробую почитать вечером, после работы. Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 29 июня, 2017 Поделиться Опубликовано 29 июня, 2017 10 часов назад, Xipho сказал: (это скажет СЕ, что значения в этих байтах могут меняться). А если Хипхо - таких строк будет не 5, а 155 с пропуском байт под вопросик - то тогда что ? Или от одной строчки через + сколько то байт хук ставить ? Так там может расстояния между функциями в + 30000 байт - это считать будешь весь день. Одно дело - это если бы они друг от друга были не далеко, там можно было бы от одной сигнатуры, через + сколько то байт - наставить хуки, но а если они далеко друг от друга Хотя автор темы - пишет, что можно сделать поинтером, а то есть вывести адрес и от него уже писать, а это значит они не далеко друг от друга... Но опять же пишет, что там бред показывает у одного из персонажей из за подобного подхода. Хотя если игра на Юнити - то я видел как люди делали от модуля прям (а то есть класса персонажа) подобное - прям с одной строкой. Ссылка на комментарий Поделиться на другие сайты Поделиться
Strajder Опубликовано 29 июня, 2017 Автор Поделиться Опубликовано 29 июня, 2017 (изменено) Вот собственно смещения от пойнтера: Скрытый текст Голод 20 Болезнь -10 Депрессия -40 Усталость 8 Ранения -28 Скрытность 6c Изготовление 84 Исследования 54 Собирательство 3c Охота b4 Рыбалка e4 Сбор cc Готовка 9c Сила 114 Ловкость fc Телосложение 144 Борьба 12c Интелект 1a4 Речь 174 Медицина 18c Знания 15c Скрытый текст Вот графически. Что бы было более понятно. Наглядно так сказать. У остальных 7 персонажей все корректно отображается. Что в красном и зеленом квадрате отображается корректно. Изменено 29 июня, 2017 пользователем Strajder Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 июня, 2017 Поделиться Опубликовано 29 июня, 2017 13 часа назад, Strajder сказал: Возможно ли заставить работать все 5 скриптов по одному коду? Примерно так: Тестить не на чем, попробуй так (прочти кометы в скрипте: Скрытый текст { Game : Dead In Bermuda.exe Version: Date : 2017-06-27 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(Psyho,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 EB) // should be unique aobscan(Sleep,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9 BA) // should be unique aobscan(Noattack,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9 54) // should be unique aobscan(Hungry,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9 ED) // should be unique aobscan(Disease,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9) // should be unique alloc(newmem,$2048) label(code) label(returnP) label(returnS) label(returnN) label(returnH) label(returnD) registersymbol(Psyho) registersymbol(Sleep) registersymbol(Noattack) registersymbol(Hungry) registersymbol(Disease) newmem: mov [eax+08], (float)0 code: fld dword ptr [eax+08] fstp dword ptr [ebp-0C] cmp byte ptr [Psyho+10],EB // Писал на коленке, так что: je returnP // 1 - проверь смещение +10 а то cmp word ptr [Sleep+10],E9BA // может я не правильно посчитал и je returnS // 2 - лучше сделать проверку по cmp word ptr [Noattack+10],E954 // двум (а может и по четырём) байтам je returnN // во всех скриптах, а то у тебя E9 cmp word ptr [Hungry+10],E9ED // в четырёх скриптах. je returnH cmp byte ptr [Disease+10],E9 je returnD Sleep: jmp newmem db 90 returnS: Psyho: jmp newmem db 90 returnP: Noattack: jmp newmem db 90 returnN: Hungry: jmp newmem db 90 returnH: Disease: jmp newmem db 90 returnD: [DISABLE] Psyho: db D9 40 08 D9 5D F4 Sleep: db D9 40 08 D9 5D F4 Noattack: db D9 40 08 D9 5D F4 Hungry: db D9 40 08 D9 5D F4 Disease: db D9 40 08 D9 5D F4 unregistersymbol(Psyho) unregistersymbol(Sleep) unregistersymbol(Noattack) unregistersymbol(Hungry) unregistersymbol(Disease) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 1403D049 ""+1403D02A: 83 EC 08 - sub esp,08 ""+1403D02D: 68 60 0E D0 0E - push 0ED00E60 ""+1403D032: 57 - push edi ""+1403D033: E8 28 4F 68 F1 - call 056C1F60 ""+1403D038: 83 C4 10 - add esp,10 ""+1403D03B: 85 C0 - test eax,eax ""+1403D03D: 74 1B - je 1403D05A ""+1403D03F: 8B 86 B8 00 00 00 - mov eax,[esi+000000B8] ""+1403D045: 8B C8 - mov ecx,eax ""+1403D047: 39 09 - cmp [ecx],ecx // ---------- INJECTING HERE ---------- ""+1403D049: D9 40 08 - fld dword ptr [eax+08] ""+1403D04C: D9 5D F4 - fstp dword ptr [ebp-0C] // ---------- DONE INJECTING ---------- ""+1403D04F: D9 45 F4 - fld dword ptr [ebp-0C] ""+1403D052: D9 5D F4 - fstp dword ptr [ebp-0C] ""+1403D055: D9 45 F4 - fld dword ptr [ebp-0C] ""+1403D058: EB 24 - jmp 1403D07E ""+1403D05A: 83 EC 08 - sub esp,08 ""+1403D05D: 57 - push edi ""+1403D05E: 68 10 23 2A 17 - push 172A2310 ""+1403D063: E8 10 49 68 F1 - call 056C1978 ""+1403D068: 83 C4 10 - add esp,10 ""+1403D06B: 83 EC 08 - sub esp,08 } Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 июня, 2017 Поделиться Опубликовано 29 июня, 2017 ЗЫ: Но скорее всего скрипт будет приводить к вылету - если от двух (или более) игровых инструкций одновременно попадёт на newmem. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 июня, 2017 Поделиться Опубликовано 29 июня, 2017 ЗЫ1: Посмотрел логи во всех пяти скриптах - более правильное решение будет такое: 1. Перейди на адрес jmp 1403D07E // на него в отладчике и сделай АА-скрипт с Логами из инструкции по этому адресу и выложи сюда. Ссылка на комментарий Поделиться на другие сайты Поделиться
Strajder Опубликовано 29 июня, 2017 Автор Поделиться Опубликовано 29 июня, 2017 (изменено) Функция: Скрытый текст 128CDE20 - 55 - push ebp 128CDE21 - 8B EC - mov ebp,esp 128CDE23 - 57 - push edi 128CDE24 - 56 - push esi 128CDE25 - 83 EC 10 - sub esp,10 { 16 } 128CDE28 - 8B 75 08 - mov esi,[ebp+08] 128CDE2B - 8B 7D 0C - mov edi,[ebp+0C] 128CDE2E - 83 EC 08 - sub esp,08 { 8 } 128CDE31 - 68 C03FA70E - push 0EA73FC0 { [050082F4] } 128CDE36 - 57 - push edi 128CDE37 - E8 2441CAF2 - call 05571F60 128CDE3C - 83 C4 10 - add esp,10 { 16 } 128CDE3F - 85 C0 - test eax,eax 128CDE41 - 74 1E - je 128CDE61 128CDE43 - 8B 86 A8000000 - mov eax,[esi+000000A8] 128CDE49 - 8B C8 - mov ecx,eax 128CDE4B - 39 09 - cmp [ecx],ecx 128CDE4D - D9 40 08 - fld dword ptr [eax+08] 128CDE50 - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDE53 - D9 45 F4 - fld dword ptr [ebp-0C] 128CDE56 - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDE59 - D9 45 F4 - fld dword ptr [ebp-0C] 128CDE5C - E9 ED000000 - jmp 128CDF4E 128CDE61 - 83 EC 08 - sub esp,08 { 8 } 128CDE64 - 68 403EA70E - push 0EA73E40 { [050082F4] } 128CDE69 - 57 - push edi 128CDE6A - E8 F140CAF2 - call 05571F60 128CDE6F - 83 C4 10 - add esp,10 { 16 } 128CDE72 - 85 C0 - test eax,eax 128CDE74 - 74 1E - je 128CDE94 128CDE76 - 8B 86 AC000000 - mov eax,[esi+000000AC] 128CDE7C - 8B C8 - mov ecx,eax 128CDE7E - 39 09 - cmp [ecx],ecx 128CDE80 - D9 40 08 - fld dword ptr [eax+08] 128CDE83 - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDE86 - D9 45 F4 - fld dword ptr [ebp-0C] 128CDE89 - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDE8C - D9 45 F4 - fld dword ptr [ebp-0C] 128CDE8F - E9 BA000000 - jmp 128CDF4E 128CDE94 - 83 EC 08 - sub esp,08 { 8 } 128CDE97 - 68 48C89D0E - push 0E9DC848 { [050082F4] } 128CDE9C - 57 - push edi 128CDE9D - E8 BE40CAF2 - call 05571F60 128CDEA2 - 83 C4 10 - add esp,10 { 16 } 128CDEA5 - 85 C0 - test eax,eax 128CDEA7 - 74 1E - je 128CDEC7 128CDEA9 - 8B 86 B0000000 - mov eax,[esi+000000B0] 128CDEAF - 8B C8 - mov ecx,eax 128CDEB1 - 39 09 - cmp [ecx],ecx 128CDEB3 - D9 40 08 - fld dword ptr [eax+08] 128CDEB6 - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDEB9 - D9 45 F4 - fld dword ptr [ebp-0C] 128CDEBC - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDEBF - D9 45 F4 - fld dword ptr [ebp-0C] 128CDEC2 - E9 87000000 - jmp 128CDF4E 128CDEC7 - 83 EC 08 - sub esp,08 { 8 } 128CDECA - 68 003EA70E - push 0EA73E00 { [050082F4] } 128CDECF - 57 - push edi 128CDED0 - E8 8B40CAF2 - call 05571F60 128CDED5 - 83 C4 10 - add esp,10 { 16 } 128CDED8 - 85 C0 - test eax,eax 128CDEDA - 74 1E - je 128CDEFA 128CDEDC - 8B 86 B4000000 - mov eax,[esi+000000B4] 128CDEE2 - 8B C8 - mov ecx,eax 128CDEE4 - 39 09 - cmp [ecx],ecx 128CDEE6 - D9 40 08 - fld dword ptr [eax+08] 128CDEE9 - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDEEC - D9 45 F4 - fld dword ptr [ebp-0C] 128CDEEF - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDEF2 - D9 45 F4 - fld dword ptr [ebp-0C] 128CDEF5 - E9 54000000 - jmp 128CDF4E 128CDEFA - 83 EC 08 - sub esp,08 { 8 } 128CDEFD - 68 08C79D0E - push 0E9DC708 { [050082F4] } 128CDF02 - 57 - push edi 128CDF03 - E8 5840CAF2 - call 05571F60 128CDF08 - 83 C4 10 - add esp,10 { 16 } 128CDF0B - 85 C0 - test eax,eax 128CDF0D - 74 1B - je 128CDF2A 128CDF0F - 8B 86 B8000000 - mov eax,[esi+000000B8] 128CDF15 - 8B C8 - mov ecx,eax 128CDF17 - 39 09 - cmp [ecx],ecx 128CDF19 - D9 40 08 - fld dword ptr [eax+08] 128CDF1C - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDF1F - D9 45 F4 - fld dword ptr [ebp-0C] 128CDF22 - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDF25 - D9 45 F4 - fld dword ptr [ebp-0C] 128CDF28 - EB 24 - jmp 128CDF4E 128CDF2A - 83 EC 08 - sub esp,08 { 8 } 128CDF2D - 57 - push edi 128CDF2E - 68 C0110916 - push 160911C0 { [050082F4] } 128CDF33 - E8 403ACAF2 - call 05571978 128CDF38 - 83 C4 10 - add esp,10 { 16 } 128CDF3B - 83 EC 08 - sub esp,08 { 8 } 128CDF3E - 56 - push esi 128CDF3F - 50 - push eax 128CDF40 - E8 A346D0F2 - call 055D25E8 128CDF45 - 83 C4 10 - add esp,10 { 16 } 128CDF48 - D9 05 9809A613 - fld dword ptr [13A60998] { [-1.00] } 128CDF4E - 8D 65 F8 - lea esp,[ebp-08] 128CDF51 - 5E - pop esi 128CDF52 - 5F - pop edi 128CDF53 - C9 - leave 128CDF54 - C3 - ret Скрытый текст Изменено 29 июня, 2017 пользователем Strajder Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 июня, 2017 Поделиться Опубликовано 29 июня, 2017 20 минут назад, Strajder сказал: Функция: Выложи АА-скрипт из: 128CDF48 - D9 05 9809A613 - fld dword ptr [13A60998] { [-1.00] } 128CDF4E - 8D 65 F8 - lea esp,[ebp-08] // этой инструкции, попробуем написать скрипт 128CDF51 - 5E - pop esi 128CDF52 - 5F - pop edi 128CDF53 - C9 - leave 128CDF54 - C3 - ret Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 июня, 2017 Поделиться Опубликовано 29 июня, 2017 ЗЫ: и напиши как этот скрипт сработал - интересно же. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 июня, 2017 Поделиться Опубликовано 29 июня, 2017 36 минут назад, Strajder сказал: Функция: Смотрю ты заморочился Плагином. Плагин не нужен просто сделай стандартный СЕ-ный скрипт с аобсканом. Вот давно делал видео для новичков. Ссылка на комментарий Поделиться на другие сайты Поделиться
Strajder Опубликовано 29 июня, 2017 Автор Поделиться Опубликовано 29 июня, 2017 Да нет, тут маленько другое... Дочка с садика вернулась с температурой 37,6, маленькие истерики. Нам всего 4 года в августе будет. Вот и ныряю, туда - сюда. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 июня, 2017 Поделиться Опубликовано 29 июня, 2017 3 минуты назад, Strajder сказал: Да нет, тут маленько другое... Дочка с садика вернулась с температурой 37,6, маленькие истерики. Нам всего 4 года в августе будет. Вот и ныряю, туда - сюда. ОК! Ну тыды, как получится. Ссылка на комментарий Поделиться на другие сайты Поделиться
Strajder Опубликовано 29 июня, 2017 Автор Поделиться Опубликовано 29 июня, 2017 Сейчас займусь. Ссылка на комментарий Поделиться на другие сайты Поделиться
Strajder Опубликовано 29 июня, 2017 Автор Поделиться Опубликовано 29 июня, 2017 Скрытый текст { Game : Dead In Bermuda.exe Version: Date : 2017-06-29 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(INJECT,05 * * * * 8D 65 F8 5E 5F C9 C3 00) // should be unique alloc(newmem,$1000) label(code) label(return) newmem: code: lea esp,[ebp-08] pop esi pop edi jmp return INJECT+05: jmp newmem return: registersymbol(INJECT) [DISABLE] INJECT+05: db 8D 65 F8 5E 5F unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 15CEC5E6 15CEC5C5: 57 - push edi 15CEC5C6: 68 C0 31 4C 1D - push 1D4C31C0 15CEC5CB: E8 A8 53 94 EF - call 05631978 15CEC5D0: 83 C4 10 - add esp,10 15CEC5D3: 83 EC 08 - sub esp,08 15CEC5D6: 56 - push esi 15CEC5D7: 50 - push eax 15CEC5D8: E8 C3 36 9A EF - call 0568FCA0 15CEC5DD: 83 C4 10 - add esp,10 15CEC5E0: D9 05 50 BA 80 0F - fld dword ptr [0F80BA50] // ---------- INJECTING HERE ---------- 15CEC5E6: 8D 65 F8 - lea esp,[ebp-08] 15CEC5E9: 5E - pop esi 15CEC5EA: 5F - pop edi // ---------- DONE INJECTING ---------- 15CEC5EB: C9 - leave 15CEC5EC: C3 - ret 15CEC5ED: 00 00 - add [eax],al 15CEC5EF: 00 55 8B - add [ebp-75],dl 15CEC5F2: EC - in al,dx 15CEC5F3: 53 - push ebx 15CEC5F4: 57 - push edi 15CEC5F5: 56 - push esi 15CEC5F6: 83 EC 1C - sub esp,1C 15CEC5F9: 8B 45 08 - mov eax,[ebp+08] } На счет твоего скрипта не работает. Ругается на смещения +10. Я еще пока, что мало знаю. Да и плохо понимаю, откуда +10 ты вычислил. Буду благодарен за ссылку. Где можно почитать об этом. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 июня, 2017 Поделиться Опубликовано 29 июня, 2017 3 минуты назад, Strajder сказал: aobscan(INJECT,05 * * * * 8D 65 F8 5E 5F C9 C3 00) // should be unique Попробуй: Скрытый текст { Game : Dead In Bermuda.exe Version: Date : 2017-06-29 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(INJECT,05 * * * * 8D 65 F8 5E 5F C9 C3 00) // should be unique alloc(newmem,$1000) label(code) label(return) registersymbol(INJECT) newmem: mov [eax+08], (float)0 fld dword ptr [eax+08] fst dword ptr [ebp-0C] code: lea esp,[ebp-08] pop esi pop edi jmp return INJECT+05: jmp newmem return: [DISABLE] INJECT+05: db 8D 65 F8 5E 5F unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 15CEC5E6 15CEC5C5: 57 - push edi 15CEC5C6: 68 C0 31 4C 1D - push 1D4C31C0 15CEC5CB: E8 A8 53 94 EF - call 05631978 15CEC5D0: 83 C4 10 - add esp,10 15CEC5D3: 83 EC 08 - sub esp,08 15CEC5D6: 56 - push esi 15CEC5D7: 50 - push eax 15CEC5D8: E8 C3 36 9A EF - call 0568FCA0 15CEC5DD: 83 C4 10 - add esp,10 15CEC5E0: D9 05 50 BA 80 0F - fld dword ptr [0F80BA50] // ---------- INJECTING HERE ---------- 15CEC5E6: 8D 65 F8 - lea esp,[ebp-08] 15CEC5E9: 5E - pop esi 15CEC5EA: 5F - pop edi // ---------- DONE INJECTING ---------- 15CEC5EB: C9 - leave 15CEC5EC: C3 - ret 15CEC5ED: 00 00 - add [eax],al 15CEC5EF: 00 55 8B - add [ebp-75],dl 15CEC5F2: EC - in al,dx 15CEC5F3: 53 - push ebx 15CEC5F4: 57 - push edi 15CEC5F5: 56 - push esi 15CEC5F6: 83 EC 1C - sub esp,1C 15CEC5F9: 8B 45 08 - mov eax,[ebp+08] } Но сразу оговорюсь, что обнуляться будут все характеристики ГГ и которые нужно и которые (наверное) не нужно, так что нужно будет фильтровать характеристики. Ссылка на комментарий Поделиться на другие сайты Поделиться
Strajder Опубликовано 29 июня, 2017 Автор Поделиться Опубликовано 29 июня, 2017 (изменено) Как не странно обнуляются, только первые 5 характеристик, остальные 16 не меняются. Скрипт работает как нужно Изменено 29 июня, 2017 пользователем Strajder Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 июня, 2017 Поделиться Опубликовано 29 июня, 2017 10 минут назад, Strajder сказал: Ругается на смещения +10 А ну да не много не так, пробуй: Скрытый текст { Game : Dead In Bermuda.exe Version: Date : 2017-06-27 Author : ALEXSP This script does blah blah blah } [ENABLE] aobscan(Psyho,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 EB) // should be unique aobscan(Sleep,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9 BA) // should be unique aobscan(Noattack,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9 54) // should be unique aobscan(Hungry,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9 ED) // should be unique aobscan(Disease,D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 E9) // should be unique alloc(newmem,$2048) label(code) label(returnP) label(returnS) label(returnN) label(returnH) label(returnD) registersymbol(Psyho) registersymbol(Sleep) registersymbol(Noattack) registersymbol(Hungry) registersymbol(Disease) newmem: mov [eax+08], (float)0 code: fld dword ptr [eax+08] fstp dword ptr [ebp-0C] cmp byte ptr [[Psyho]+10],EB // Писал на коленке, так что: je returnP // 1 - проверь смещение +10 а то cmp word ptr [[Sleep]+10],E9BA // может я не правильно посчитал и je returnS // 2 - лучше сделать проверку по cmp word ptr [[Noattack]+10],E954 // двум (а может и по четырём) байтам je returnN // во всех скриптах, а то у тебя E9 cmp word ptr [[Hungry]+10],E9ED // в четырёх скриптах. je returnH cmp byte ptr [[Disease]+10],E9 je returnD Sleep: jmp newmem db 90 returnS: Psyho: jmp newmem db 90 returnP: Noattack: jmp newmem db 90 returnN: Hungry: jmp newmem db 90 returnH: Disease: jmp newmem db 90 returnD: [DISABLE] Psyho: db D9 40 08 D9 5D F4 Sleep: db D9 40 08 D9 5D F4 Noattack: db D9 40 08 D9 5D F4 Hungry: db D9 40 08 D9 5D F4 Disease: db D9 40 08 D9 5D F4 unregistersymbol(Psyho) unregistersymbol(Sleep) unregistersymbol(Noattack) unregistersymbol(Hungry) unregistersymbol(Disease) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: 1403D049 ""+1403D02A: 83 EC 08 - sub esp,08 ""+1403D02D: 68 60 0E D0 0E - push 0ED00E60 ""+1403D032: 57 - push edi ""+1403D033: E8 28 4F 68 F1 - call 056C1F60 ""+1403D038: 83 C4 10 - add esp,10 ""+1403D03B: 85 C0 - test eax,eax ""+1403D03D: 74 1B - je 1403D05A ""+1403D03F: 8B 86 B8 00 00 00 - mov eax,[esi+000000B8] ""+1403D045: 8B C8 - mov ecx,eax ""+1403D047: 39 09 - cmp [ecx],ecx // ---------- INJECTING HERE ---------- ""+1403D049: D9 40 08 - fld dword ptr [eax+08] ""+1403D04C: D9 5D F4 - fstp dword ptr [ebp-0C] // ---------- DONE INJECTING ---------- ""+1403D04F: D9 45 F4 - fld dword ptr [ebp-0C] ""+1403D052: D9 5D F4 - fstp dword ptr [ebp-0C] ""+1403D055: D9 45 F4 - fld dword ptr [ebp-0C] ""+1403D058: EB 24 - jmp 1403D07E ""+1403D05A: 83 EC 08 - sub esp,08 ""+1403D05D: 57 - push edi ""+1403D05E: 68 10 23 2A 17 - push 172A2310 ""+1403D063: E8 10 49 68 F1 - call 056C1978 ""+1403D068: 83 C4 10 - add esp,10 ""+1403D06B: 83 EC 08 - sub esp,08 } Ссылка на комментарий Поделиться на другие сайты Поделиться
Strajder Опубликовано 29 июня, 2017 Автор Поделиться Опубликовано 29 июня, 2017 Все равно пишет ошибка в строке 35. Не весь код пригоден к инъекции. Можно если не затруднит вкратце рассказать как получил [[Psyho] ""+10"" ] Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 июня, 2017 Поделиться Опубликовано 29 июня, 2017 2 минуты назад, Strajder сказал: Можно если не затруднит вкратце рассказать как получил [[Psyho] ""+10"" ] Посчитать байты D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 EB Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 июня, 2017 Поделиться Опубликовано 29 июня, 2017 15 минут назад, Strajder сказал: Как не странно обнуляются, только первые 5 характеристик, остальные 16 не меняются. Скрытый текст // Всё правильно в этой функции их пять 128CDE20 - 55 - push ebp 128CDE21 - 8B EC - mov ebp,esp 128CDE23 - 57 - push edi 128CDE24 - 56 - push esi 128CDE25 - 83 EC 10 - sub esp,10 { 16 } 128CDE28 - 8B 75 08 - mov esi,[ebp+08] 128CDE2B - 8B 7D 0C - mov edi,[ebp+0C] 128CDE2E - 83 EC 08 - sub esp,08 { 8 } 128CDE31 - 68 C03FA70E - push 0EA73FC0 { [050082F4] } 128CDE36 - 57 - push edi 128CDE37 - E8 2441CAF2 - call 05571F60 128CDE3C - 83 C4 10 - add esp,10 { 16 } 128CDE3F - 85 C0 - test eax,eax 128CDE41 - 74 1E - je 128CDE61 128CDE43 - 8B 86 A8000000 - mov eax,[esi+000000A8] // 1 128CDE49 - 8B C8 - mov ecx,eax 128CDE4B - 39 09 - cmp [ecx],ecx 128CDE4D - D9 40 08 - fld dword ptr [eax+08] 128CDE50 - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDE53 - D9 45 F4 - fld dword ptr [ebp-0C] 128CDE56 - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDE59 - D9 45 F4 - fld dword ptr [ebp-0C] 128CDE5C - E9 ED000000 - jmp 128CDF4E 128CDE61 - 83 EC 08 - sub esp,08 { 8 } 128CDE64 - 68 403EA70E - push 0EA73E40 { [050082F4] } 128CDE69 - 57 - push edi 128CDE6A - E8 F140CAF2 - call 05571F60 128CDE6F - 83 C4 10 - add esp,10 { 16 } 128CDE72 - 85 C0 - test eax,eax 128CDE74 - 74 1E - je 128CDE94 128CDE76 - 8B 86 AC000000 - mov eax,[esi+000000AC] // 2 128CDE7C - 8B C8 - mov ecx,eax 128CDE7E - 39 09 - cmp [ecx],ecx 128CDE80 - D9 40 08 - fld dword ptr [eax+08] 128CDE83 - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDE86 - D9 45 F4 - fld dword ptr [ebp-0C] 128CDE89 - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDE8C - D9 45 F4 - fld dword ptr [ebp-0C] 128CDE8F - E9 BA000000 - jmp 128CDF4E 128CDE94 - 83 EC 08 - sub esp,08 { 8 } 128CDE97 - 68 48C89D0E - push 0E9DC848 { [050082F4] } 128CDE9C - 57 - push edi 128CDE9D - E8 BE40CAF2 - call 05571F60 128CDEA2 - 83 C4 10 - add esp,10 { 16 } 128CDEA5 - 85 C0 - test eax,eax 128CDEA7 - 74 1E - je 128CDEC7 128CDEA9 - 8B 86 B0000000 - mov eax,[esi+000000B0] // 3 128CDEAF - 8B C8 - mov ecx,eax 128CDEB1 - 39 09 - cmp [ecx],ecx 128CDEB3 - D9 40 08 - fld dword ptr [eax+08] 128CDEB6 - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDEB9 - D9 45 F4 - fld dword ptr [ebp-0C] 128CDEBC - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDEBF - D9 45 F4 - fld dword ptr [ebp-0C] 128CDEC2 - E9 87000000 - jmp 128CDF4E 128CDEC7 - 83 EC 08 - sub esp,08 { 8 } 128CDECA - 68 003EA70E - push 0EA73E00 { [050082F4] } 128CDECF - 57 - push edi 128CDED0 - E8 8B40CAF2 - call 05571F60 128CDED5 - 83 C4 10 - add esp,10 { 16 } 128CDED8 - 85 C0 - test eax,eax 128CDEDA - 74 1E - je 128CDEFA 128CDEDC - 8B 86 B4000000 - mov eax,[esi+000000B4] // 4 128CDEE2 - 8B C8 - mov ecx,eax 128CDEE4 - 39 09 - cmp [ecx],ecx 128CDEE6 - D9 40 08 - fld dword ptr [eax+08] 128CDEE9 - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDEEC - D9 45 F4 - fld dword ptr [ebp-0C] 128CDEEF - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDEF2 - D9 45 F4 - fld dword ptr [ebp-0C] 128CDEF5 - E9 54000000 - jmp 128CDF4E 128CDEFA - 83 EC 08 - sub esp,08 { 8 } 128CDEFD - 68 08C79D0E - push 0E9DC708 { [050082F4] } 128CDF02 - 57 - push edi 128CDF03 - E8 5840CAF2 - call 05571F60 128CDF08 - 83 C4 10 - add esp,10 { 16 } 128CDF0B - 85 C0 - test eax,eax 128CDF0D - 74 1B - je 128CDF2A 128CDF0F - 8B 86 B8000000 - mov eax,[esi+000000B8] //5 128CDF15 - 8B C8 - mov ecx,eax 128CDF17 - 39 09 - cmp [ecx],ecx 128CDF19 - D9 40 08 - fld dword ptr [eax+08] 128CDF1C - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDF1F - D9 45 F4 - fld dword ptr [ebp-0C] 128CDF22 - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDF25 - D9 45 F4 - fld dword ptr [ebp-0C] 128CDF28 - EB 24 - jmp 128CDF4E 128CDF2A - 83 EC 08 - sub esp,08 { 8 } 128CDF2D - 57 - push edi 128CDF2E - 68 C0110916 - push 160911C0 { [050082F4] } 128CDF33 - E8 403ACAF2 - call 05571978 128CDF38 - 83 C4 10 - add esp,10 { 16 } 128CDF3B - 83 EC 08 - sub esp,08 { 8 } 128CDF3E - 56 - push esi 128CDF3F - 50 - push eax 128CDF40 - E8 A346D0F2 - call 055D25E8 128CDF45 - 83 C4 10 - add esp,10 { 16 } 128CDF48 - D9 05 9809A613 - fld dword ptr [13A60998] { [-1.00] } 128CDF4E - 8D 65 F8 - lea esp,[ebp-08] 128CDF51 - 5E - pop esi 128CDF52 - 5F - pop edi 128CDF53 - C9 - leave 128CDF54 - C3 - ret Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 июня, 2017 Поделиться Опубликовано 29 июня, 2017 20 минут назад, Strajder сказал: остальные 16 не меняются. Чтобы выйти на функции других характеристик, думаю нужно рассматривать структуру по esi: mov eax,[esi+000000A8] // 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Strajder Опубликовано 29 июня, 2017 Автор Поделиться Опубликовано 29 июня, 2017 6 минут назад, Garik66 сказал: Посчитать байты D9 40 08 D9 5D F4 D9 45 F4 D9 5D F4 D9 45 F4 EB Понял спасибо Ссылка на комментарий Поделиться на другие сайты Поделиться
Strajder Опубликовано 29 июня, 2017 Автор Поделиться Опубликовано 29 июня, 2017 9 минут назад, Garik66 сказал: Показать содержимое // Всё правильно в этой функции их пять 128CDE20 - 55 - push ebp 128CDE21 - 8B EC - mov ebp,esp 128CDE23 - 57 - push edi 128CDE24 - 56 - push esi 128CDE25 - 83 EC 10 - sub esp,10 { 16 } 128CDE28 - 8B 75 08 - mov esi,[ebp+08] 128CDE2B - 8B 7D 0C - mov edi,[ebp+0C] 128CDE2E - 83 EC 08 - sub esp,08 { 8 } 128CDE31 - 68 C03FA70E - push 0EA73FC0 { [050082F4] } 128CDE36 - 57 - push edi 128CDE37 - E8 2441CAF2 - call 05571F60 128CDE3C - 83 C4 10 - add esp,10 { 16 } 128CDE3F - 85 C0 - test eax,eax 128CDE41 - 74 1E - je 128CDE61 128CDE43 - 8B 86 A8000000 - mov eax,[esi+000000A8] // 1 128CDE49 - 8B C8 - mov ecx,eax 128CDE4B - 39 09 - cmp [ecx],ecx 128CDE4D - D9 40 08 - fld dword ptr [eax+08] 128CDE50 - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDE53 - D9 45 F4 - fld dword ptr [ebp-0C] 128CDE56 - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDE59 - D9 45 F4 - fld dword ptr [ebp-0C] 128CDE5C - E9 ED000000 - jmp 128CDF4E 128CDE61 - 83 EC 08 - sub esp,08 { 8 } 128CDE64 - 68 403EA70E - push 0EA73E40 { [050082F4] } 128CDE69 - 57 - push edi 128CDE6A - E8 F140CAF2 - call 05571F60 128CDE6F - 83 C4 10 - add esp,10 { 16 } 128CDE72 - 85 C0 - test eax,eax 128CDE74 - 74 1E - je 128CDE94 128CDE76 - 8B 86 AC000000 - mov eax,[esi+000000AC] // 2 128CDE7C - 8B C8 - mov ecx,eax 128CDE7E - 39 09 - cmp [ecx],ecx 128CDE80 - D9 40 08 - fld dword ptr [eax+08] 128CDE83 - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDE86 - D9 45 F4 - fld dword ptr [ebp-0C] 128CDE89 - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDE8C - D9 45 F4 - fld dword ptr [ebp-0C] 128CDE8F - E9 BA000000 - jmp 128CDF4E 128CDE94 - 83 EC 08 - sub esp,08 { 8 } 128CDE97 - 68 48C89D0E - push 0E9DC848 { [050082F4] } 128CDE9C - 57 - push edi 128CDE9D - E8 BE40CAF2 - call 05571F60 128CDEA2 - 83 C4 10 - add esp,10 { 16 } 128CDEA5 - 85 C0 - test eax,eax 128CDEA7 - 74 1E - je 128CDEC7 128CDEA9 - 8B 86 B0000000 - mov eax,[esi+000000B0] // 3 128CDEAF - 8B C8 - mov ecx,eax 128CDEB1 - 39 09 - cmp [ecx],ecx 128CDEB3 - D9 40 08 - fld dword ptr [eax+08] 128CDEB6 - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDEB9 - D9 45 F4 - fld dword ptr [ebp-0C] 128CDEBC - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDEBF - D9 45 F4 - fld dword ptr [ebp-0C] 128CDEC2 - E9 87000000 - jmp 128CDF4E 128CDEC7 - 83 EC 08 - sub esp,08 { 8 } 128CDECA - 68 003EA70E - push 0EA73E00 { [050082F4] } 128CDECF - 57 - push edi 128CDED0 - E8 8B40CAF2 - call 05571F60 128CDED5 - 83 C4 10 - add esp,10 { 16 } 128CDED8 - 85 C0 - test eax,eax 128CDEDA - 74 1E - je 128CDEFA 128CDEDC - 8B 86 B4000000 - mov eax,[esi+000000B4] // 4 128CDEE2 - 8B C8 - mov ecx,eax 128CDEE4 - 39 09 - cmp [ecx],ecx 128CDEE6 - D9 40 08 - fld dword ptr [eax+08] 128CDEE9 - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDEEC - D9 45 F4 - fld dword ptr [ebp-0C] 128CDEEF - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDEF2 - D9 45 F4 - fld dword ptr [ebp-0C] 128CDEF5 - E9 54000000 - jmp 128CDF4E 128CDEFA - 83 EC 08 - sub esp,08 { 8 } 128CDEFD - 68 08C79D0E - push 0E9DC708 { [050082F4] } 128CDF02 - 57 - push edi 128CDF03 - E8 5840CAF2 - call 05571F60 128CDF08 - 83 C4 10 - add esp,10 { 16 } 128CDF0B - 85 C0 - test eax,eax 128CDF0D - 74 1B - je 128CDF2A 128CDF0F - 8B 86 B8000000 - mov eax,[esi+000000B8] //5 128CDF15 - 8B C8 - mov ecx,eax 128CDF17 - 39 09 - cmp [ecx],ecx 128CDF19 - D9 40 08 - fld dword ptr [eax+08] 128CDF1C - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDF1F - D9 45 F4 - fld dword ptr [ebp-0C] 128CDF22 - D9 5D F4 - fstp dword ptr [ebp-0C] 128CDF25 - D9 45 F4 - fld dword ptr [ebp-0C] 128CDF28 - EB 24 - jmp 128CDF4E 128CDF2A - 83 EC 08 - sub esp,08 { 8 } 128CDF2D - 57 - push edi 128CDF2E - 68 C0110916 - push 160911C0 { [050082F4] } 128CDF33 - E8 403ACAF2 - call 05571978 128CDF38 - 83 C4 10 - add esp,10 { 16 } 128CDF3B - 83 EC 08 - sub esp,08 { 8 } 128CDF3E - 56 - push esi 128CDF3F - 50 - push eax 128CDF40 - E8 A346D0F2 - call 055D25E8 128CDF45 - 83 C4 10 - add esp,10 { 16 } 128CDF48 - D9 05 9809A613 - fld dword ptr [13A60998] { [-1.00] } 128CDF4E - 8D 65 F8 - lea esp,[ebp-08] 128CDF51 - 5E - pop esi 128CDF52 - 5F - pop edi 128CDF53 - C9 - leave 128CDF54 - C3 - ret И тут ты был тоже прав. Цепляет другие значения. Пропадают диалоги. Попробую с Esi. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения