Ayuda con fadd qword ptr [xxxxxx]

Iniciado por Mad Antrax, 1 Diciembre 2013, 18:45 PM

0 Miembros y 2 Visitantes están viendo este tema.

Mad Antrax

#10
Cita de: cpu2 en  1 Diciembre 2013, 23:47 PM
Bien, copias el valor del registro st(0) a la pila, y luego dejas st(0) a su valor anterior, pero no entiendo el mov, porque mueves el valor del registro st(0) y luego reescribes el valor de la pila con el mov?

No es mejor hacer el mov directamente.

Y sobre fnstsw, luego comparas el valor para saber como esta el estado?

Un saludo.

El código original es:

Código (asm) [Seleccionar]
Project1.exe+1CF0 - D9 46 34              - fld dword ptr [esi+34]
Project1.exe+1CF3 - DC 05 90104000        - fadd qword ptr [Project1.exe+1090]
Project1.exe+1CF9 - D9 5E 34              - fstp dword ptr [esi+34]
Project1.exe+1CFC - DFE0                  - fnstsw ax
Project1.exe+1CFE - A8 0D                 - test al,0D
Project1.exe+1D00 - 75 26                 - jne Project1.exe+1D28
Project1.exe+1D02 - C7 45 FC 00000000     - mov [ebp-04],00000000
Project1.exe+1D09 - 8B 45 08              - mov eax,[ebp+08]
Project1.exe+1D0C - 50                    - push eax
Project1.exe+1D0D - 8B 10                 - mov edx,[eax]
Project1.exe+1D0F - FF 52 08              - call dword ptr [edx+08]
Project1.exe+1D12 - 8B 45 FC              - mov eax,[ebp-04]
Project1.exe+1D15 - 8B 4D EC              - mov ecx,[ebp-14]
Project1.exe+1D18 - 5F                    - pop edi
Project1.exe+1D19 - 5E                    - pop esi
Project1.exe+1D1A - 64 89 0D 00000000     - mov fs:[00000000],ecx
Project1.exe+1D21 - 5B                    - pop ebx
Project1.exe+1D22 - 8B E5                 - mov esp,ebp
Project1.exe+1D24 - 5D                    - pop ebp
Project1.exe+1D25 - C2 0400               - ret 0004
Project1.exe+1D28 - E9 9FF3FFFF           - jmp Project1.exe+10CC


Yo lo que hago es inyectar (añadir una sola instrucción) en la cuarta línea:

Código (asm) [Seleccionar]
Project1.exe+1CF0 - D9 46 34              - fld dword ptr [esi+34]
Project1.exe+1CF3 - DC 05 90104000        - fadd qword ptr [Project1.exe+1090]
Project1.exe+1CF9 - D9 5E 34              - fstp dword ptr [esi+34]
                                                       mov [esi+34],42C80000
Project1.exe+1CFC - DFE0                  - fnstsw ax
Project1.exe+1CFE - A8 0D                 - test al,0D
Project1.exe+1D00 - 75 26                 - jne Project1.exe+1D28
Project1.exe+1D02 - C7 45 FC 00000000     - mov [ebp-04],00000000
Project1.exe+1D09 - 8B 45 08              - mov eax,[ebp+08]
Project1.exe+1D0C - 50                    - push eax
Project1.exe+1D0D - 8B 10                 - mov edx,[eax]
Project1.exe+1D0F - FF 52 08              - call dword ptr [edx+08]
Project1.exe+1D12 - 8B 45 FC              - mov eax,[ebp-04]
Project1.exe+1D15 - 8B 4D EC              - mov ecx,[ebp-14]
Project1.exe+1D18 - 5F                    - pop edi
Project1.exe+1D19 - 5E                    - pop esi
Project1.exe+1D1A - 64 89 0D 00000000     - mov fs:[00000000],ecx
Project1.exe+1D21 - 5B                    - pop ebx
Project1.exe+1D22 - 8B E5                 - mov esp,ebp
Project1.exe+1D24 - 5D                    - pop ebp
Project1.exe+1D25 - C2 0400               - ret 0004
Project1.exe+1D28 - E9 9FF3FFFF           - jmp Project1.exe+10CC


La idea es modificar lo menos posible el código original. Dicha modificación se efectua en tiempo de ejecución (con WriteProcessMemory) y cuanto menos se modifique la imagen del ejecutable en runtime, mejor xD El fin de todo ésto es conseguir que la variable valga 100 al ejecutar ese código, así con un simple mov lo soluciono, es cierto que la instrucción anterior se podría quitar, pero mejor no tocar el código original ya que si quiero volver a dejar la función original, solo tendré que nopear el mov que he inyectado yo.

Es un poco enrevesado, pero a la hora de programar trainers es mejor hacerlo así.
No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.

cpu2

Bien, no se nada sobre los trainers, pero esas instrucciones son inutiles, pero si es mejor pues bien para ti, bueno solo dire que a ver quien se atreve a jugar una partida contigo al call of duty ese xD.

Un saludo.