Проблема с сравнением.
-
Вкратце опишу.
У меня при сравнение [next] с 0, всё нормально работает, но стоит мне написать сравнение с 1 или больше, когда в [next] лежит 0, почему-то вместо jne code у меня крашит игру, хотя должно просто перебросить в оригинальный код.
В чём я ошибся?
[ENABLE] aobscanmodule(myCord,UnityPlayer.dll,0F 28 40 10 41 0F 54 C2 0F 58 D8 0F 28 C3 F3 0F 11 5C) aobscanmodule(metka,UnityPlayer.dll,39 41 34 76 06) registersymbol(myCord) registersymbol(metka) registersymbol(next) alloc(newmem,$1000,myCord) label(newmem_metka) label(code) label(return) label(code_metka) label(return_metka) label(x_1) label(y_1) label(z_1) label(x_2) label(y_2) label(z_2) //1 newmem: cmp dword ptr [next],0 je jumps_1 jne code jumps_1: movss xmm5,[x_1] movss [rax+10],xmm5 movss xmm6,[y_1] movss [rax+14],xmm6 movss xmm7,[z_1] movss [rax+18],xmm7 cmp dword ptr [next],1 je jumps_2 jne code jumps_2: movss xmm5,[x_2] movss [rax+10],xmm5 movss xmm6,[y_2] movss [rax+14],xmm6 movss xmm7,[z_2] movss [rax+18],xmm7 jmp code code: movaps xmm0,[rax+10] andps xmm0,xmm10 jmp return //2 newmem_metka: mov rax,[rcx+34] mov [next],rax code_metka: cmp [rcx+34],eax jna UnityPlayer.dll+FC015B jmp return_metka //3 next: dd 0 x_1: dq (float)-0.4942475855 y_1: dq (float)1.800000072 z_1: dq (float)12.02723598 x_2: dq (float)12.224123 y_2: dq (float)1.800000072 z_2: dq (float)-0.09221532196 //4 metka: jmp newmem_metka return_metka: myCord: jmp newmem nop 3 return: [DISABLE] myCord: db 0F 28 40 10 41 0F 54 C2 metka: db 39 41 34 76 06 unregistersymbol(myCord) unregistersymbol(metka) unregistersymbol(next) dealloc(newmem)
-
@RotlJot Попобуй не jne code а jmp code
-
@Partizan1078 Пробывал, результат тот же. Я сейчас вручную поставил в next единицу, работает, но если там два числа что не равны друг другу - крашит. Думал из-за того что в dd передаю rax а не eax, но нет.
-
UPD.
Проблему решил взяв другую инструкцию, почему-то именно в этой у меня не работало сравнение и просто приводило к крашу.