Жажда Знаний
-
Постов
99 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные Жажда Знаний
-
-
Привет. Помогите найти решение данной задачи. Как сделать код что бы он работал только с игроком, Id игрока и врага есть, но структура параметров оружия и эффектов является общей . Как сделать что бы значение установленные мной работали с героем а с врагами восстанавливались оригинальные значения ?
Спойлерpush r8 mov r8, [r12+120] cmp [r8+340], 44E74000 // Enemy-44B54000; Player-44E74000 pop r8 jne @f push rdi mov rdi,(float)0.30 // добавляет 30% к вероятности срабатывания эффекта оружия movd xmm11,rdi addps xmm9,xmm11 mov [r13+28],(float)18 // Это количество ходов от эффекта оружия , заклинаний и умений оно меняется у всех, т.к структура общая. pop rdi @@: movss xmm9,[r13+28] // Оригинальная инструкция mulss xmm9,xmm12 jmp return
-
ReWanet,Да это одна из инструкций, регистры одинаковые и в других инструкциях. Там запись на одно смещение,один ресурс
-
ReWanet, это людские резервы, боеприпасы, горючее.
-
Garik66, скрин брекпойнта не подойдет ?
-
ReWanet, вообщем хотел увеличить скорость пополнения ресурсов или без вычитания стоимости войск. С поддержкой получилось с ресурсами нет.
-
Garik66, Хорошо, понял.
-
Garik66, я не пойму пойму почему выдает ошибку когда регистр используешь esi,? При точке останова брекпойнта его видно. Про регистр ebp я имел в виду что если присвоить ресурсы например - горючее ebp=1, боеприпасы ebp=2, и так далее
-
ReWanet, Смотри,если взять регистр ebx как единицу обозначение ресурса, например 4 ресурса присвоить к ebp1,ebp2,ebp3,ebp4 и как сделать их что бы записать за место регистра eax, регистр сравнения esi, что бы игра не выдавала ошибку. ?
-
@ReWanet, я так писал, работает со мной и с врагами. Причем работает только "cmp ebx"
-
ReWanet, да думаю ты прав,потому что когда пишу с ebx то работает нормально, но тогда не работает фильтр на игрока. Как бы правильно это Записать ?
cmp [eax+13c],0
jne @f@@: // так не пойдет ?
cmp ebx,5
jne @f -
Garik6, версия 21.0.0.421799
-
К сожалению нет(
-
Скрытый текст
define(address,"RelicCoH2.exe"+F756E2)
define(bytes,F3 0F 10 41 04)[ENABLE]
assert(address,bytes)
alloc(newmem,$1000)label(code)
label(return)newmem:
code:
cmp [eax+13c],0
jne @f
//cmp ebx,5
//jne @f
mov [esp+58],(float)0
mov [esp+5c],(float)0
mov [esp+60],(float)0
mov [esp+64],(float)0
movss xmm0,[ecx+04]
jmp return
@@:
movss xmm0,[ecx+04]
jmp returnaddress:
jmp newmem
return:[DISABLE]
address:
db bytes
// movss xmm0,[ecx+04]dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: "RelicCoH2.exe"+F756E2"RelicCoH2.exe"+F756CB: CC - int 3
"RelicCoH2.exe"+F756CC: CC - int 3
"RelicCoH2.exe"+F756CD: CC - int 3
"RelicCoH2.exe"+F756CE: CC - int 3
"RelicCoH2.exe"+F756CF: CC - int 3
"RelicCoH2.exe"+F756D0: 8B C1 - mov eax,ecx
"RelicCoH2.exe"+F756D2: 8B 4C 24 04 - mov ecx,[esp+04]
"RelicCoH2.exe"+F756D6: F3 0F 10 01 - movss xmm0,[ecx]
"RelicCoH2.exe"+F756DA: F3 0F 58 00 - addss xmm0,[eax]
"RelicCoH2.exe"+F756DE: F3 0F 11 00 - movss [eax],xmm0
// ---------- INJECTING HERE ----------
"RelicCoH2.exe"+F756E2: F3 0F 10 41 04 - movss xmm0,[ecx+04]
// ---------- DONE INJECTING ----------
"RelicCoH2.exe"+F756E7: F3 0F 58 40 04 - addss xmm0,[eax+04]
"RelicCoH2.exe"+F756EC: F3 0F 11 40 04 - movss [eax+04],xmm0
"RelicCoH2.exe"+F756F1: F3 0F 10 41 08 - movss xmm0,[ecx+08]
"RelicCoH2.exe"+F756F6: F3 0F 58 40 08 - addss xmm0,[eax+08]
"RelicCoH2.exe"+F756FB: F3 0F 11 40 08 - movss [eax+08],xmm0
"RelicCoH2.exe"+F75700: F3 0F 10 41 0C - movss xmm0,[ecx+0C]
"RelicCoH2.exe"+F75705: F3 0F 58 40 0C - addss xmm0,[eax+0C]
"RelicCoH2.exe"+F7570A: F3 0F 11 40 0C - movss [eax+0C],xmm0
"RelicCoH2.exe"+F7570F: F3 0F 10 41 10 - movss xmm0,[ecx+10]
"RelicCoH2.exe"+F75714: F3 0F 58 40 10 - addss xmm0,[eax+10]
}Вот скрипт который нужен, первый я брал как альтернативный вариант потому что ни какие инструкции не работают., перед этим я перепробовал все варианты прежде обращаться за помощью и уверяю что первый скрипт написан правильно потому как скрипты по другим значениям написаны по такому принципу и работают без ошибок. Тут в этом скрипте Регистр Есх это стек, поэтому я пишу сразу напрямую в стек. Бывает что игра какое то время работает затем вылетает. Инструкция работает с множество адресами.
-
Не совсем понимаю что значит с логами? Полностью скрипт ? Esi потому что это тот же самый регистр eax только полный не с нулевым смещением как eax. Инструкции 2 потому как происходит разветвление инструкции на 2 части отдельно, она обрабатывается первой. Суть в том как записать инструкцию с сохранением флагов и регистров в стек, чтоб игра не выдавала ошибку.?
-
Помогите разобраться со скриптом, создавая фильтр свой чужой игра ломается, фильтр не работает ни с одной с инструкцией игры, по структуре значение всегда неизменна.
Скрытый текстcmp [esi+1b8],0
jne @f
mov [esi+7c],(float)ххх
fstp dword ptr [eax]
jmp return
@@:
fstp dword ptr [eax]
cmp ebp,08
jmp returnвот одна из инструкций, может тут необходимо добавить сохранения флагов и регистров ? у меня ничего не вышло(
-
Всем привет. Никак не могу присвоить Свое значение или умножение такой инструкции как: fld dword ptr [esp+04]
Можно ли присвоить ей свою инструкцию? что бы помножить на свое число, например на 2
fld dword ptr [esp+04] // вот инструкция, отсюда происходит загрузка значений затем сохраняется в память.
fstp dword ptr [ecx+24]Я использовал такой вариант
fld dword ptr [esp+04]
fadd [esp+04]fstp dword ptr [ecx+24] .// При таком варианте сложение получается большое, зависит от возрастания затем складывается Вдвойне. Такой вариант мне не очень подходит. Если присвоить ESP Свое значение например 50 то 50 постоянно висит в памяти.
Можно ли сделать этой инструкции умножение на 2 и без флагов ?
-
-
Мм, не совсем понимаю про свободный регистр, на примере напиши Пожалуйста. Я понимаю так Mov [eax+200],ecx < тут нет свободного регистра?
-
Спасибо за помощь. Теперь я стал сильнее. Кстати Великий Keng почему то не смог это решить. Сказал что это возможно на другом языке програмирования
-
Да ты Прав, работает. По такому принципу можно любой уровень развертывания Ук вписывать ?
-
41 минуты назад, Foxhound сказал:
Поясни пожалуйста, в этом месте
mov ecx, dword ptr [edx+40]
mov ecx, dword ptr [edx+b4]
мне не совсем понятно, во второй строке почему [edx+b4], а не [ecx+b4]?Потому что с есх не срабатывало, потому пробовал разные варианты
-
Ого, да Garik66 твоя версия сработала, только с присваиванием термина Главных указателей ( Dword Ptr) Но Почему именно так, не мог бы объяснить ?
-
Фильтр стоит такой как показывает структура, погляди скрин, на b4 она работает далее при развертывании уже уже ничего не считывается
-
Сразу вылет Происходит при Активации. Что ж такое придумать еще. GlobalAlloc на это влияет?
[Divinity - Original Sin 2] Как сделать фильтр для игрока?
in Вопросы по созданию читов в одиночных играх
Опубликовано · Изменено пользователем Жажда Знаний
mov rcx,rbx
"EoCApp.exe"+161DBC6: 89 43 28 - mov [rbx+28],eax
"EoCApp.exe"+161DBC9: F3 41 0F 10 4D 2C - movss xmm1,[r13+2C]
"EoCApp.exe"+161DBCF: E8 3C 75 FC FF - call EoCApp.exe+15E5110
"EoCApp.exe"+161DBD4: 48 8B D3 - mov rdx,rbx
"EoCApp.exe"+161DBD7: 48 8B CF - mov rcx,rdi
"EoCApp.exe"+161DBDA: E8 A1 B7 E5 FF - call EoCApp.exe+1479380
"EoCApp.exe"+161DBDF: E9 94 FD FF FF - jmp EoCApp.exe+161D978
"EoCApp.exe"+161DBE4: 49 8B 76 08 - mov rsi,[r14+08]
"EoCApp.exe"+161DBE8: 41 8B 4E 14 - mov ecx,[r14+14]
// ---------- INJECTING HERE ----------
"EoCApp.exe"+161DBEC: F3 45 0F 10 4D 28 - movss xmm9,[r13+28]
// ---------- DONE INJECTING ----------
"EoCApp.exe"+161DBF2: F3 45 0F 59 CC - mulss xmm9,xmm12
"EoCApp.exe"+161DBF7: 4C 8D 34 CE - lea r14,[rsi+rcx*8]
"EoCApp.exe"+161DBFB: 4C 3B F6 - cmp r14,rsi
"EoCApp.exe"+161DBFE: 0F 84 80 FD FF FF - je EoCApp.exe+161D984
"EoCApp.exe"+161DC04: 48 8B 7C 24 60 - mov rdi,[rsp+60]
"EoCApp.exe"+161DC09: 0F 1F 80 00 00 00 00 - nop [rax+00000000]
"EoCApp.exe"+161DC10: 48 8B 1E - mov rbx,[rsi]
"EoCApp.exe"+161DC13: 48 85 FF - test rdi,rdi
"EoCApp.exe"+161DC16: 74 35 - je EoCApp.exe+161DC4D
"EoCApp.exe"+161DC18: 4D 85 E4 - test r12,r12
}
Вот логи. Фильтра правильный, но ваш вариант неправильный, выдает ошибку. В скрипте смещение на ходы не 28 а 2c. Регистр r12 выходит на структуру игрока по указателям, r13 только по параметрам оружия и эффектов.