Mon Опубликовано 24 июля, 2022 Поделиться Опубликовано 24 июля, 2022 Здравствуйте, столкнулся со следующей проблемой: нашел в игре инструкцию, которая одинаковая и для врагов, и для игрока. Инструкция постоянно обращается к значению хп врагов рядом и игрока соответственно, а также значение стамины. Удалось найти оффсет в регистре, который отделяет врагов от игрока, был сделан скрипт (на изображении слева), но при попытке загрузки игры или смене локации - игрок сразу же умирает. второй вариант скрипта (на изображении справа) убивает всех врагов поблизости и заодно ставит 1 хп и стамины самому игроку. Довелось так же изучить один старый трейнер от известных BReWErS, там это реализовано так: есть два хоткея, один для "активации системы хп", как указано в описании, другой устанавливает выделенному врагу хп 0, чем мгновенно его убивает - что, в принципе, тоже неплохой способ реализации. В общем, вопрос - как можно еще реализовать OHK, если значения в инструкции постоянно обновляются? Поиск через Break and Trace особо ничего не дал, потому что высвечивается целая куча инструкций как только снимаешь игру с паузы. Изображение: Спойлер Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 25 июля, 2022 Поделиться Опубликовано 25 июля, 2022 У нас на канале есть несколько видео о том, как отделять игрока от врага. Рекомендую их посмотреть. Ссылка на комментарий Поделиться на другие сайты Поделиться
Partizan Опубликовано 25 июля, 2022 Поделиться Опубликовано 25 июля, 2022 У меня получилось только с 2 ударов. В макс. ХП прописал единичку. Спойлер [ENABLE] aobscanmodule(THK,TBB.dll,8B ? ? ? ? ? 85 ? 0F ? ? 8D ? ? 52 E8 ? ? ? ? 85) alloc(newmem,$1000) label(return) registersymbol(THK) newmem: mov eax,[esi+000000D4] //Указатель на структуру cmp [esi+000000F4],00 //Свой чужой 00=чужой jne short @F //Если не 0 то прыжок mov [eax+18],#1 //Запись Макс ХП=1 @@: jmp return THK: jmp newmem nop return: [DISABLE] THK: db 8B 86 D4 00 00 00 unregistersymbol(THK) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: TBB.dll+205EC2 TBB.dll+205E9C: EB 04 - jmp TBB.dll+205EA2 TBB.dll+205E9E: 8B 6C 87 7C - mov ebp,[edi+eax*4+7C] TBB.dll+205EA2: 8B 86 F8 00 00 00 - mov eax,[esi+000000F8] TBB.dll+205EA8: 85 C0 - test eax,eax TBB.dll+205EAA: 0F 84 B1 00 00 00 - je TBB.dll+205F61 TBB.dll+205EB0: 84 9F FC 02 00 00 - test [edi+000002FC],bl TBB.dll+205EB6: 74 04 - je TBB.dll+205EBC TBB.dll+205EB8: 33 C9 - xor ecx,ecx TBB.dll+205EBA: EB 06 - jmp TBB.dll+205EC2 TBB.dll+205EBC: 8B 8F BC 00 00 00 - mov ecx,[edi+000000BC] // ---------- INJECTING HERE ---------- TBB.dll+205EC2: 8B 86 D4 00 00 00 - mov eax,[esi+000000D4] // ---------- DONE INJECTING ---------- TBB.dll+205EC8: 85 C9 - test ecx,ecx TBB.dll+205ECA: 0F 95 C2 - setne dl TBB.dll+205ECD: 8D 48 38 - lea ecx,[eax+38] TBB.dll+205ED0: 52 - push edx TBB.dll+205ED1: E8 CA A9 F8 FF - call TBB.dll+1908A0 TBB.dll+205ED6: 85 C0 - test eax,eax TBB.dll+205ED8: 0F 8E 83 00 00 00 - jng TBB.dll+205F61 TBB.dll+205EDE: 85 ED - test ebp,ebp TBB.dll+205EE0: 74 74 - je TBB.dll+205F56 TBB.dll+205EE2: 8A 86 C3 00 00 00 - mov al,[esi+000000C3] } Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения