Функции No Spread, No Recoil, Rapid Fire.
-
Здравствуйте, можете мне рассказать или показать как делать функции No Spread, No Recoil, Rapid Fire. Сам я пробовал, но ни как не получается.
-
@Mr-Xleb Универсального способа нет. В некоторых играх можно в памяти рядом с патронами увидеть значение таймера. А бывает и так что нужно при отладки полностью выходить из функции выстрела. И уже выше по коду эксперентировать.
-
Вот этот код для Мафии 2
Rapid Fire
Пришлось искать при полном выходе из функции выстрела.[ENABLE] aobscanmodule(RapidFire,Mafia II Definitive Edition.exe,F3 0F ? ? ? ? ? ? E8 ? ? ? ? 48 8B ? ? ? ? ? 48 8B ? ? ? ? ? ? 48 85) alloc(newmem,$1000,RapidFire) label(return) registersymbol(RapidFire) newmem: cmp r15,10 jne short @F xorps xmm0,xmm0 @@: movss [rbx+00000234],xmm0 jmp return RapidFire: jmp newmem nop 3 return: [DISABLE] RapidFire: db F3 0F 11 83 34 02 00 00 unregistersymbol(RapidFire) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: Mafia II Definitive Edition.exe+BF7F7 Mafia II Definitive Edition.exe+BF7C9: E8 B2 01 00 00 - call "Mafia II Definitive Edition.exe"+BF980 Mafia II Definitive Edition.exe+BF7CE: 48 8B CB - mov rcx,rbx Mafia II Definitive Edition.exe+BF7D1: E8 DA F8 FF FF - call "Mafia II Definitive Edition.exe"+BF0B0 Mafia II Definitive Edition.exe+BF7D6: 48 8B CB - mov rcx,rbx Mafia II Definitive Edition.exe+BF7D9: E8 42 F8 FF FF - call "Mafia II Definitive Edition.exe"+BF020 Mafia II Definitive Edition.exe+BF7DE: 48 8B 83 C0 02 00 00 - mov rax,[rbx+000002C0] Mafia II Definitive Edition.exe+BF7E5: 33 D2 - xor edx,edx Mafia II Definitive Edition.exe+BF7E7: 48 8B CB - mov rcx,rbx Mafia II Definitive Edition.exe+BF7EA: F3 0F 10 40 5C - movss xmm0,[rax+5C] Mafia II Definitive Edition.exe+BF7EF: F3 0F 59 05 C9 45 90 01 - mulss xmm0,["Mafia II Definitive Edition.exe"+19C3DC0] // ---------- INJECTING HERE ---------- Mafia II Definitive Edition.exe+BF7F7: F3 0F 11 83 34 02 00 00 - movss [rbx+00000234],xmm0 // ---------- DONE INJECTING ---------- Mafia II Definitive Edition.exe+BF7FF: E8 CC 4A 00 00 - call "Mafia II Definitive Edition.exe"+C42D0 Mafia II Definitive Edition.exe+BF804: 48 8B 8B 88 02 00 00 - mov rcx,[rbx+00000288] Mafia II Definitive Edition.exe+BF80B: 48 8B B4 24 18 01 00 00 - mov rsi,[rsp+00000118] Mafia II Definitive Edition.exe+BF813: 48 85 C9 - test rcx,rcx Mafia II Definitive Edition.exe+BF816: 0F 84 99 00 00 00 - je "Mafia II Definitive Edition.exe"+BF8B5 Mafia II Definitive Edition.exe+BF81C: 48 8B 83 C0 02 00 00 - mov rax,[rbx+000002C0] Mafia II Definitive Edition.exe+BF823: 8B 50 24 - mov edx,[rax+24] Mafia II Definitive Edition.exe+BF826: 8B C2 - mov eax,edx Mafia II Definitive Edition.exe+BF828: C1 E8 04 - shr eax,04 Mafia II Definitive Edition.exe+BF82B: A8 01 - test al,01 }
Тут пришлось обнулять регистр xmm0/
-
А этот no recoil нашёлся уже в структуре оружия.
[ENABLE] aobscanmodule(NoRecoil,Mafia II Definitive Edition.exe,F3 0F ? ? ? ? ? ? F3 0F ? ? ? ? ? ? F3 0F ? ? ? ? ? ? E8 ? ? ? ? F3 0F ? ? ? ? ? ? F3 0F ? ? ? ? ? ? 48 8B) aobscanmodule(NoRecoil_02,Mafia II Definitive Edition.exe,F3 0F ? ? ? ? ? ? F3 0F ? ? ? ? ? ? F3 0F ? ? ? ? ? ? E8 ? ? ? ? F3 0F ? ? ? ? ? ? F3 0F ? ? ? ? ? ? 48 8B) alloc(newmem,$1000) label(return) label(return_02) registersymbol(NoRecoil) registersymbol(NoRecoil_02) newmem: movss xmm1,[rbx+000000A8] xorps xmm1,xmm1 mulss xmm0,[rbx+000000A4] xorps xmm0,xmm0 jmp return newmem+24: mulss xmm0,[rdx+000000A4] xorps xmm0,xmm0 jmp return_02 NoRecoil+1D: jmp far newmem nop 2 return: NoRecoil_02: jmp newmem+24 nop 3 return_02: [DISABLE] NoRecoil+1D: db F3 0F 10 8B A8 00 00 00 F3 0F 59 83 A4 00 00 00 NoRecoil_02: db F3 0F 59 82 A4 00 00 00 F3 0F 59 86 3C 02 00 00 F3 0F 11 86 98 00 00 00 unregistersymbol(*) dealloc(*) { // ORIGINAL CODE - INJECTION POINT: Mafia II Definitive Edition.exe+BF06C Mafia II Definitive Edition.exe+BF037: 48 8B C8 - mov rcx,rax Mafia II Definitive Edition.exe+BF03A: 48 8B F8 - mov rdi,rax Mafia II Definitive Edition.exe+BF03D: E8 DE D9 9A 00 - call "Mafia II Definitive Edition.exe"+A6CA20 Mafia II Definitive Edition.exe+BF042: 48 8B 96 C0 02 00 00 - mov rdx,[rsi+000002C0] Mafia II Definitive Edition.exe+BF049: 48 8B CF - mov rcx,rdi Mafia II Definitive Edition.exe+BF04C: 48 8B DA - mov rbx,rdx Mafia II Definitive Edition.exe+BF04F: F3 0F 59 82 A4 00 00 00 - mulss xmm0,[rdx+000000A4] Mafia II Definitive Edition.exe+BF057: F3 0F 59 86 3C 02 00 00 - mulss xmm0,[rsi+0000023C] Mafia II Definitive Edition.exe+BF05F: F3 0F 11 86 98 00 00 00 - movss [rsi+00000098],xmm0 Mafia II Definitive Edition.exe+BF067: E8 B4 D9 9A 00 - call "Mafia II Definitive Edition.exe"+A6CA20 // ---------- INJECTING HERE ---------- Mafia II Definitive Edition.exe+BF06C: F3 0F 10 8B A8 00 00 00 - movss xmm1,[rbx+000000A8] // ---------- DONE INJECTING ---------- Mafia II Definitive Edition.exe+BF074: F3 0F 59 83 A4 00 00 00 - mulss xmm0,[rbx+000000A4] Mafia II Definitive Edition.exe+BF07C: 48 8B 5C 24 30 - mov rbx,[rsp+30] Mafia II Definitive Edition.exe+BF081: F3 0F 59 8E 3C 02 00 00 - mulss xmm1,[rsi+0000023C] Mafia II Definitive Edition.exe+BF089: C7 86 A0 00 00 00 00 00 00 00 - mov [rsi+000000A0],00000000 Mafia II Definitive Edition.exe+BF093: F3 0F 58 C8 - addss xmm1,xmm0 Mafia II Definitive Edition.exe+BF097: F3 0F 11 8E 9C 00 00 00 - movss [rsi+0000009C],xmm1 Mafia II Definitive Edition.exe+BF09F: 48 8B 74 24 38 - mov rsi,[rsp+38] Mafia II Definitive Edition.exe+BF0A4: 48 83 C4 20 - add rsp,20 Mafia II Definitive Edition.exe+BF0A8: 5F - pop rdi Mafia II Definitive Edition.exe+BF0A9: C3 - ret }
Как можно заметить из кода везде идёт обнуление xmm регистров.
-
@Partizan1078 большое спасибо. Буду пробовать.
-
@Mr-Xleb Игра какая?
-
@Partizan1078 решил попробовать на первом FarCry. Получилось убрать отдачу и разброс.
-
Пользователь @Mr-Xleb написал в Функции No Spread, No Recoil, Rapid Fire.:
Rapid Fire
Сначало ищи значение на патроны(те которые в обойме, а не общее колличество), ставишь бряк узнаёшь смещение. Дальше такие действия. Ищешь в деапазоне от начала структуры до конца структуры. При поиске ставь спидхаг замедли в десять раз. Ищи тип float редко duoble. Делаешь выстрел и сразу ищи неизвестное значение. Пережди, отсей уменьшилось (изначальное значение таймера там всегда ноль) Сново стреляешь, сразу же отсев увеличилось. И так далее выстрел - отсев увеличилось, переждал отсев уменьшилось.