Source Fix Skill Dark Side

Source Fix Skill Dark Side

stdafx.h

#define FixSkill_DarkSide                1

 

FixSkillDarkSide.cpp

#include "stdafx.h"
#if(FixSkill_DarkSide)
#include "FixSkillDarkSide.h"
#include "Util.h"

cFixDarkSide FixDarkSide;

cFixDarkSide::cFixDarkSide()
{
Hook();
}

cFixDarkSide::~cFixDarkSide()
{
}

_declspec(naked) void FakeReceiveStraightAttack()
{
static DWORD jumpBACK = 0x00663567;
_asm {
mov        dword ptr[ebp - 0x18], eax;
cmp        dword ptr[ebp - 0x18], 0x190;
je        falseCase;
jmp        jumpBACK;
falseCase:
mov        eax, dword ptr[ebp - 0x10];
mov        dword ptr[ebp - 0x18], eax;
jmp        jumpBACK;
}
}

void cFixDarkSide::Hook()
{
MemorySet(0x0066355B, 0x90, 0x0C);
SetCompleteHook(0xE9, 0x0066355B, FakeReceiveStraightAttack);
//0066367F
}
#endif

 

FixSkillDarkSide.h

#pragma once
#if(FixSkill_DarkSide)
class cFixDarkSide
{
public:
cFixDarkSide();
~cFixDarkSide();
void Init();
void Hook();
private:

};

extern cFixDarkSide FixDarkSide;

#endif

 

 

 

1. Inclusiones y Directivas

  • #include "stdafx.h": Esto es común en proyectos de Visual Studio y permite la precompilación de encabezados.
  • #if(FixSkill_DarkSide): Esta es una directiva de preprocesador que incluye el código solo si FixSkill_DarkSide está definido como verdadero.
  • #include "FixSkillDarkSide.h" y #include "Util.h": Se incluyen otros archivos de encabezado que probablemente contienen definiciones y funciones utilizadas en el código.

 

 

2. Clase cFixDarkSide

  • cFixDarkSide FixDarkSide;: Se crea una instancia global de la clase cFixDarkSide.
  • Constructor y Destructor: El constructor llama a la función Hook(), que probablemente establece los hooks necesarios para modificar el comportamiento del programa. El destructor está vacío, lo que sugiere que no se necesita limpiar nada.

 

 

3. Función FakeReceiveStraightAttack

 

  • _declspec(naked): Indica que la función no tiene un marco de pila estándar, lo que permite un control más directo sobre el ensamblador.
  • static DWORD jumpBACK = 0x00663567;: Se define una dirección a la que volver después de ejecutar el código modificado.
  • Bloque _asm: Aquí se utiliza ensamblador para manipular registros y la pila:
    • Se mueve el valor de eax a una dirección de memoria específica.
    • Se compara este valor con 0x190. Si es igual, salta a falseCase, donde se realizan más manipulaciones antes de regresar a la dirección original.

 

 

4. Método Hook

  • MemorySet(0x0066355B, 0x90, 0x0C);: Este parece ser un método que establece la memoria en una dirección específica, posiblemente reemplazando instrucciones para desactivar ciertas funcionalidades (el valor 0x90 es el código de operación para NOP, que no hace nada).
  • SetCompleteHook(0xE9, 0x0066355B, FakeReceiveStraightAttack);: Establece un hook en la dirección 0x0066355B, redirigiendo la ejecución a FakeReceiveStraightAttack.

 

Resumen

Este código modifica el comportamiento de un programa mediante técnicas de hooking, permitiendo que FakeReceiveStraightAttack se ejecute en lugar de la lógica original en una dirección de memoria específica. Esto es común en modificaciones de juegos o aplicaciones para alterar su funcionamiento.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *