Jump to content

Synea

Miembro
  • Contador contenido

    9
  • Ingreso

  • Última visita

Actividad de reputación

  1. Me Gusta
    Synea reacted to Metser in [ Verkuafe / Sell server files ] All languages Server File   
    [Sell server files]
    with systems - ServerFiles + Client + ServerSource + Client Source
    special offer 80 euro everything
    The client is fully translated into all languages
    missions: English, German
    locale_string: English
    If you have any questions or interests:
    Skype: metser.norbi

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
       
  2. Me Gusta
    Synea reacted to Desmint in [SERVERFILES]Phebia2   
    Hola amigos de Metin2Zone
    El día de hoy les traigo unos files que aunque no he probado, se ve que son bastante buenos, les dejo todo, como siempre.....
    Nota hecha por el creador de los files: Funciona siempre y cuando se omitan algunos errores del src de python
    Caracteristicas: 
    Nivel 1 Inicio Nivel 120 Fin. (Cambiable)  Sistema de cinturón oficial Sistema oficial de mascotas (con nivel) Sistema de cinturón oficial Evento Okey oficial Sistema de tienda sin conexión 2 CH Dragon Room (escritura electiva) Sistema de bendición de grupo de chamanes  Capa de coraje ilimitado Sistema de equipo rápido Sistema de registro de cuenta rápida Sistema de categoría de tareas  Ventana de amigos avanzada  Ventana avanzada de PM  Sistema de buzones  Templo oficial del zodiaco  Batalla oficial de Hydra Ship  Sistema de expansión de inventario  Sistema de dados grupales  Pasajero Sistema de pasajeros  Sistema de aumento de HP calificado Sistema de interrupción de hechizos de piedra Sistema de invisibilidad del mapa de bueyes  Sistema de bloqueo de caracteres  Sistema de agente de guerra de gremios Comercio e historia del mercado Monitoreo de la sala del dragón y sistema de control vacío Cambio rápido de canal sin error Sistema de evolución de armas 4 Sistema de piedra activo! Sistema de información del jefe Sistema de seguimiento de mazmorras! Nuevos trajes activos! Sistema de paquete de cachemir Sistema de configuración del teclado Sistema de inventario K Renderizar sistema de destino Sistema Rün Power Stone Sistema de espejo de pecho Sistema de alquimia Mitsi Sistema Youtuber Sistema NPC remoto Sistema de combinación de artículos  7-8 Sistema Skiller Sistema auxiliar de Afrodita de Chamán Sala oficial Nemere-Razador Sistema de vestuario de armas Generación de aniversario, etc. Activo! Nuevos mapas activos! Sistema de prisión activo! Sistema de 4 piedras Sistema de mercado Gaya King Player - King Guild Active! ¡Armas de jóvenes héroes! Sistema de escala de la mafia Sistema oficial de emociones Sistema de caza automático Cristal comercial oficial Sistema de zona de guerra Sistema de menú rápido Sistema de caza de jefes Sistema de espejo oficial Sistema de control de bot Sistema de puntos de éxito Sistema de llamarada de vestuario Sistema de bolsa de flecha Talismán y sistema de elementos   Capturas
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación. Debes iniciar sesión para ver el contenido del enlace en esta publicación.   Descarga: Mysql -> Debes iniciar sesión para ver el contenido del enlace en esta publicación. Source Cliente -> Debes iniciar sesión para ver el contenido del enlace en esta publicación. Source Game-> Debes iniciar sesión para ver el contenido del enlace en esta publicación. Cliente-> Debes iniciar sesión para ver el contenido del enlace en esta publicación.   Fuente: Turkmmo
  3. Me Gusta
    Synea reacted to Robert in [Cliente] Egoria.pl   
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  4. Me Gusta
    Synea reacted to Robert in [Cliente] Angel2.es   
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
  5. Me Gusta
    Synea got a reaction from LIBERTY CITY in SELECT INTERFACE LIKE WOM2   
    Hola, hoy les daré esta interfaz de inicio de sesión, que es muy similar a la de WoM2.
    Está codificado por mí, buena suerte.
     
    Interfaz original (WoM2):

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Mi interfaz;

    Foto 1:

     
    Foto 2:

     
     
    Google Drive:
     
    ZippyShare:
     
  6. Me Gusta
    Synea got a reaction from Frezi Op in SELECT INTERFACE LIKE WOM2   
    Hola, hoy les daré esta interfaz de inicio de sesión, que es muy similar a la de WoM2.
    Está codificado por mí, buena suerte.
     
    Interfaz original (WoM2):

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Mi interfaz;

    Foto 1:

     
    Foto 2:

     
     
    Google Drive:
     
    ZippyShare:
     
  7. Me Gusta
    Synea reacted to Zaymax in EterNexus Compilador / Descompilador - ( EIX/EPK NO XML)   
    Bueno chicos os traigo este compilador / descompilador, tiene una sensilla interfaz y ala vez no hace falta hacer xml ( ya que el programa mismo no los hace) basta con poner vuestros archivos en las carpetas de los eix/epk.
    Descarga por MEGA(Link actualizado por @Dilong): Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Recomiendo actualizar las librerias c++ por si os da el error de mscore100.dll.
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Creditos:
    Luscha, Inforge.
  8. Me Gusta
    Synea got a reaction from KuZmA in SELECT INTERFACE LIKE WOM2   
    Hola, hoy les daré esta interfaz de inicio de sesión, que es muy similar a la de WoM2.
    Está codificado por mí, buena suerte.
     
    Interfaz original (WoM2):

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Mi interfaz;

    Foto 1:

     
    Foto 2:

     
     
    Google Drive:
     
    ZippyShare:
     
  9. Confuso
    Synea got a reaction from Byron Solis in SELECT INTERFACE LIKE WOM2   
    Hola, hoy les daré esta interfaz de inicio de sesión, que es muy similar a la de WoM2.
    Está codificado por mí, buena suerte.
     
    Interfaz original (WoM2):

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Mi interfaz;

    Foto 1:

     
    Foto 2:

     
     
    Google Drive:
     
    ZippyShare:
     
  10. Me Gusta
    Synea got a reaction from Drogon in SELECT INTERFACE LIKE WOM2   
    Hola, hoy les daré esta interfaz de inicio de sesión, que es muy similar a la de WoM2.
    Está codificado por mí, buena suerte.
     
    Interfaz original (WoM2):

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Mi interfaz;

    Foto 1:

     
    Foto 2:

     
     
    Google Drive:
     
    ZippyShare:
     
  11. Me Gusta
    Synea got a reaction from CHELO in SELECT INTERFACE LIKE WOM2   
    Hola, hoy les daré esta interfaz de inicio de sesión, que es muy similar a la de WoM2.
    Está codificado por mí, buena suerte.
     
    Interfaz original (WoM2):

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Mi interfaz;

    Foto 1:

     
    Foto 2:

     
     
    Google Drive:
     
    ZippyShare:
     
  12. Me Gusta
    Synea got a reaction from Maxuel Gomes in SELECT INTERFACE LIKE WOM2   
    Hola, hoy les daré esta interfaz de inicio de sesión, que es muy similar a la de WoM2.
    Está codificado por mí, buena suerte.
     
    Interfaz original (WoM2):

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Mi interfaz;

    Foto 1:

     
    Foto 2:

     
     
    Google Drive:
     
    ZippyShare:
     
  13. Me Gusta
    Synea got a reaction from ISSAM in SELECT INTERFACE LIKE WOM2   
    Hola, hoy les daré esta interfaz de inicio de sesión, que es muy similar a la de WoM2.
    Está codificado por mí, buena suerte.
     
    Interfaz original (WoM2):

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Mi interfaz;

    Foto 1:

     
    Foto 2:

     
     
    Google Drive:
     
    ZippyShare:
     
  14. Sorprendido
    Synea got a reaction from Ppm in SELECT INTERFACE LIKE WOM2   
    Hola, hoy les daré esta interfaz de inicio de sesión, que es muy similar a la de WoM2.
    Está codificado por mí, buena suerte.
     
    Interfaz original (WoM2):

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Mi interfaz;

    Foto 1:

     
    Foto 2:

     
     
    Google Drive:
     
    ZippyShare:
     
  15. Me Gusta
    Synea got a reaction from matietk2015 in SELECT INTERFACE LIKE WOM2   
    Hola, hoy les daré esta interfaz de inicio de sesión, que es muy similar a la de WoM2.
    Está codificado por mí, buena suerte.
     
    Interfaz original (WoM2):

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Mi interfaz;

    Foto 1:

     
    Foto 2:

     
     
    Google Drive:
     
    ZippyShare:
     
  16. Me Gusta
    Synea got a reaction from serloard in SELECT INTERFACE LIKE WOM2   
    Hola, hoy les daré esta interfaz de inicio de sesión, que es muy similar a la de WoM2.
    Está codificado por mí, buena suerte.
     
    Interfaz original (WoM2):

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Mi interfaz;

    Foto 1:

     
    Foto 2:

     
     
    Google Drive:
     
    ZippyShare:
     
  17. Me Gusta
    Synea got a reaction from ChuchoGamer in SELECT INTERFACE LIKE WOM2   
    Hola, hoy les daré esta interfaz de inicio de sesión, que es muy similar a la de WoM2.
    Está codificado por mí, buena suerte.
     
    Interfaz original (WoM2):

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Mi interfaz;

    Foto 1:

     
    Foto 2:

     
     
    Google Drive:
     
    ZippyShare:
     
  18. Me Gusta
    Synea got a reaction from Nightcore HD in SELECT INTERFACE LIKE WOM2   
    Hola, hoy les daré esta interfaz de inicio de sesión, que es muy similar a la de WoM2.
    Está codificado por mí, buena suerte.
     
    Interfaz original (WoM2):

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Mi interfaz;

    Foto 1:

     
    Foto 2:

     
     
    Google Drive:
     
    ZippyShare:
     
  19. Me Gusta
    Synea got a reaction from DeaddVader in SELECT INTERFACE LIKE WOM2   
    Hola, hoy les daré esta interfaz de inicio de sesión, que es muy similar a la de WoM2.
    Está codificado por mí, buena suerte.
     
    Interfaz original (WoM2):

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Mi interfaz;

    Foto 1:

     
    Foto 2:

     
     
    Google Drive:
     
    ZippyShare:
     
  20. Me Gusta
    Synea got a reaction from Im in SELECT INTERFACE LIKE WOM2   
    Hola, hoy les daré esta interfaz de inicio de sesión, que es muy similar a la de WoM2.
    Está codificado por mí, buena suerte.
     
    Interfaz original (WoM2):

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Mi interfaz;

    Foto 1:

     
    Foto 2:

     
     
    Google Drive:
     
    ZippyShare:
     
  21. Me Gusta
    Synea reacted to PACI in [Guia] Crear diffs   
    Hola.
    Como sabéis, ahora que el source es publico, ya nadie, o casi nadie, hará, ni posteará, más diffs para editar vuestros cores.
    Este es uno de los motivos por los cuales hago escribo esta guia, el otro es para dar a la comunidad hispana un poco más de conocimiento, aunque no sea mucho.
     
    Que se necesita para hacer diffs?
    Hay quién diga que necesitas saber ASM (assembly), C, y esas cosas. Aunque, yo no sé ninguno de los 2, y creaba diffs.
    Lo que más necesitamos es un brain.exe, como se suele decir, paciencia, y el
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. y un Debes iniciar sesión para ver el contenido del enlace en esta publicación..  
    Antes de ponernos a toquetear en el IDA, debemos, antes de nada, saber una cosa.
     
    Qué es un diff?
    Un diff (difference file) es un archivo que contiene, de una manera simplificada, una (o varias) linea(s) que altera(n) un (o más) bytes de un archivo.
    La sintaxis es: offset: byte antiguo byte nuevo.
    La creación de un diff no es propriamente un problema, ya que el IDA, dependiendo de lo que hayamos modificado, lo crea solo.
    Y a través de un diff no puedes saber lo que cambia.
     
    Después de saber que és un diff, y para que sirve, tenemos que saber qué es lo que queremos cambiar, y donde se localiza, yo, para eso, usaba el Pseudocode de un game core o db core para buscar lo que queria cambiar, obviamente para esto necesitamos el brain.exe, porque tenemos que entender la sintaxis del codigo que hay por ahí. Os dejaré en adjuntos, todos los pseudocodes de todos los game core y db core que tengo
     
    Vale, ahora qué hago?
    Yo, para empezar, cogeré el pseudocode del game r40250 y cambiaré... por ejemplo, el nível de diferencia que se necesita para invitar a alguién en un grupo.
     
    Como empezamos?
    Hay que saber un poquito de inglés, porque las variables no están escritas en español. Lo que sabemos es que grupo se puede decir party en inglés. Una vez sepamos eso, empezaremos buscando party en nuestro editor de texto (yo uso Notepad++ para esto, vosotros podéis usar algun otro), lo segundo es saber, cuando sucede la acción, o sea, cuando sale el mensajito ese en el chat diciendo que la diferencia de nível es X. Sabemos también que eso pasa cuando invitamos a alguién, invitar en inglés es invite. Entonces ya sabemos que tenemos que buscar algo como PartyInvite.
     
    Cuando encontremos algo de este tipo:
    extern char CHARACTER__PartyInvite_CHARACTER______FUNCTION__[12]; // weak Entonces lo que hacemos es buscar esa función. Ojo, apenas buscamos por CHARACTER__PartyInvite.
     
    Y por fin, encontraremos la función CHARACTER__PartyInvite:
    int __fastcall CHARACTER__PartyInvite(int a1, int a2, int a3, int a4){  int v4; // eax@4  int v5; // edx@4  int v6; // ecx@4  int v7; // ebx@6  int v8; // eax@6  int v9; // eax@7  int result; // eax@8  int v11; // eax@10  int v12; // eax@15  int v13; // eax@22  int v14; // eax@23  int v15; // edx@23  int v16; // ecx@23  int v17; // edi@23  int v18; // eax@23  int v19; // edx@25  int v20; // ecx@25  int v21; // [sp+0h] [bp-48h]@3  int v22; // [sp+0h] [bp-48h]@6  int v23; // [sp+20h] [bp-28h]@23  int v24; // [sp+24h] [bp-24h]@23  _BYTE v25[5]; // [sp+2Bh] [bp-1Dh]@29  int v26; // [sp+30h] [bp-18h]@23  int v27; // [sp+34h] [bp-14h]@22  int v28; // [sp+38h] [bp-10h]@1  v28 = *(_DWORD *)_stack_chk_guard__FBSD_1_0;  if ( *(_DWORD *)(a3 + 9328) && CParty__GetLeaderPID(a1, a2, *(_DWORD *)(a3 + 9328)) != *(_DWORD *)(a3 + 256) )  {   v21 = (int)&unk_848D8B8;LABEL_4:   v4 = locale_find(v21);   CHARACTER__ChatPacket(a3, 1, (const char *)v4);  }  else  {   if ( *(_BYTE *)(a4 + 9104) & 2 )   {   v8 = CHARACTER__GetName(a4);   v22 = (int)&unk_848D8E8;   v7 = v8;LABEL_7:   v9 = locale_find(v22);   CHARACTER__ChatPacket(a3, 1, (const char *)v9, v7);   }   else   {   v11 = CHARACTER__IsPartyJoinableCondition(a3, a4);   if ( (unsigned int)v11 <= 0xA )   {   switch ( v11 )   {   default:   goto LABEL_11;   case 10:   v21 = (int)&unk_848D868;   goto LABEL_4;   case 8:   v21 = (int)&unk_848D4C0;   goto LABEL_4;   case 7:   v12 = CHARACTER__GetName(a4);   v22 = (int)"<ÆÄƼ> ÀÌ¹Ì %s´ÔÀº ÆÄƼ¿¡ ¼ÓÇØ ÀÖ½À´Ï´Ù.";   v7 = v12;   goto LABEL_7;   case 6:   v21 = (int)&unk_848D480;   goto LABEL_4;   case 5:   v21 = (int)&unk_848D440;   goto LABEL_4;   case 4:   v21 = (int)&unk_848D404;   goto LABEL_4;   case 3:   v21 = (int)&unk_848D3D0;   goto LABEL_4;   case 2:   v21 = (int)&unk_848D39C;   goto LABEL_4;   case 1:   v21 = (int)&unk_848D368;   goto LABEL_4;   case 0:   v27 = *(_DWORD *)(a4 + 256);   v13 = std___Rb_tree_unsigned_int_std__pair_unsigned_int__const_boost__intrusive_ptr_event___std___Select1st_std__pair_unsigned_int__const_boost__intrusive_ptr_event____std__less_unsigned_int__std__allocator_std__pair_unsigned_int__const_boost__intrusive_ptr_event______find(   a3 + 9340,   (int)&v27);   v5 = a3 + 9344;   if ( a3 + 9344 == v13 )   {   v14 = AllocEventInfo_TPartyJoinEventInfo_();   *(_DWORD *)(v14 + 4) = *(_DWORD *)(a4 + 256);   *(_DWORD *)(v14 + 8) = *(_DWORD *)(a3 + 256);   event_create_ex(&v26, (int)party_invite_event, v14, 10 * passes_per_sec);   v17 = v26;   v18 = *(_DWORD *)(a4 + 256);   v24 = v26;   v23 = v18;   if ( v26 )   intrusive_ptr_add_ref(v16, v15, v26);   std___Rb_tree_unsigned_int_std__pair_unsigned_int__const_boost__intrusive_ptr_event___std___Select1st_std__pair_unsigned_int__const_boost__intrusive_ptr_event____std__less_unsigned_int__std__allocator_std__pair_unsigned_int__const_boost__intrusive_ptr_event_______M_insert_unique(   a3 + 9340,   (int)&v23);   if ( v24 )   intrusive_ptr_release(v20, v19, v24);   if ( v17 )   intrusive_ptr_release(v20, v19, v17);   v25[0] = 77;   *(_DWORD *)&v25[1] = *(_DWORD *)(a3 + 260);   DESC__Packet(*(_DWORD *)(a4 + 44), (int)v25, 5);   }   break;   }   }   else   {LABEL_11:   sys_err((int)"PartyInvite", 4558, "Do not process party join error(%d)", v11);   }   }  }  result = *(_DWORD *)_stack_chk_guard__FBSD_1_0 ^ v28;  if ( *(_DWORD *)_stack_chk_guard__FBSD_1_0 != v28 )   __stack_chk_fail(v6, v5);  return result;} Ahora a partir de aquí, hay que saber leer. Vayamos por partes:
    LABEL_4:   v4 = locale_find(v21);   CHARACTER__ChatPacket(a3, 1, (const char *)v4); LABEL_7:   v9 = locale_find(v22);   CHARACTER__ChatPacket(a3, 1, (const char *)v9, v7); LABEL_4 y LABEL_7 tienen un locale_find y un ChatPacket, lo que significa que buscará en el locale_string.txt un texto que estará dentro del locale_find y luego lo mostrará en el Chat.
     
    Pasemos directamente al switch:
      v11 = CHARACTER__IsPartyJoinableCondition(a3, a4);   if ( (unsigned int)v11 <= 0xA )   {   switch ( v11 )   {   default:   goto LABEL_11;   case 10:   v21 = (int)&unk_848D868;   goto LABEL_4;   case 8:   v21 = (int)&unk_848D4C0;   goto LABEL_4;   case 7:   v12 = CHARACTER__GetName(a4);   v22 = (int)"<ÆÄƼ> ÀÌ¹Ì %s´ÔÀº ÆÄƼ¿¡ ¼ÓÇØ ÀÖ½À´Ï´Ù.";   v7 = v12;   goto LABEL_7;   case 6:   v21 = (int)&unk_848D480;   goto LABEL_4;   case 5:   v21 = (int)&unk_848D440;   goto LABEL_4;   case 4:   v21 = (int)&unk_848D404;   goto LABEL_4;   case 3:   v21 = (int)&unk_848D3D0;   goto LABEL_4;   case 2:   v21 = (int)&unk_848D39C;   goto LABEL_4;   case 1:   v21 = (int)&unk_848D368;   goto LABEL_4;   case 0:   v27 = *(_DWORD *)(a4 + 256);   v13 = std___Rb_tree_unsigned_int_std__pair_unsigned_int__const_boost__intrusive_ptr_event___std___Select1st_std__pair_unsigned_int__const_boost__intrusive_ptr_event____std__less_unsigned_int__std__allocator_std__pair_unsigned_int__const_boost__intrusive_ptr_event______find(   a3 + 9340,   (int)&v27);   v5 = a3 + 9344;   if ( a3 + 9344 == v13 )   {   v14 = AllocEventInfo_TPartyJoinEventInfo_();   *(_DWORD *)(v14 + 4) = *(_DWORD *)(a4 + 256);   *(_DWORD *)(v14 + 8) = *(_DWORD *)(a3 + 256);   event_create_ex(&v26, (int)party_invite_event, v14, 10 * passes_per_sec);   v17 = v26;   v18 = *(_DWORD *)(a4 + 256);   v24 = v26;   v23 = v18;   if ( v26 )   intrusive_ptr_add_ref(v16, v15, v26);   std___Rb_tree_unsigned_int_std__pair_unsigned_int__const_boost__intrusive_ptr_event___std___Select1st_std__pair_unsigned_int__const_boost__intrusive_ptr_event____std__less_unsigned_int__std__allocator_std__pair_unsigned_int__const_boost__intrusive_ptr_event_______M_insert_unique(   a3 + 9340,   (int)&v23);   if ( v24 )   intrusive_ptr_release(v20, v19, v24);   if ( v17 )   intrusive_ptr_release(v20, v19, v17);   v25[0] = 77;   *(_DWORD *)&v25[1] = *(_DWORD *)(a3 + 260);   DESC__Packet(*(_DWORD *)(a4 + 44), (int)v25, 5);   }   break;   }   }   else   {LABEL_11:   sys_err((int)"PartyInvite", 4558, "Do not process party join error(%d)", v11);   } Como veremos, la variable v11 está obteniendo el valor de una otra función, llamada CHARACTER__IsPartyJoinableCondition.
    Entonces, lo que el servidor hará es testear ese valor desde la función switch.
      switch ( v11 )   {   default:   goto LABEL_11; Si esa variable es false dependiendo de los valores encontrados en los case, entonces irá hasta el LABEL_11, que es un error en syserr:
    LABEL_11:   sys_err((int)"PartyInvite", 4558, "Do not process party join error(%d)", v11); Si esa condición es verdadera, hará una serie de cosas.
     
    Entonces ya sabemos que, lo que sale en el chat dependerá:
    - Del valor de la variable v11, o sea, el valor que la función CHARACTER__IsPartyJoinableCondition obtiene. Ahora que sabemos esto, vayamos directos a esa función.
    int __cdecl CHARACTER__IsPartyJoinableCondition(int a1, int a2){  int v2; // edx@1  int result; // eax@2  v2 = a2;  if ( *(_BYTE *)(a1 + 9797) == *(_BYTE *)(a2 + 9797) )  {   if ( *(_DWORD *)_stack_chk_guard__FBSD_1_0 == *(_DWORD *)_stack_chk_guard__FBSD_1_0 )   return CHARACTER__IsPartyJoinableMutableCondition(a1, a2, a1, a2);LABEL_6:   __stack_chk_fail(a1, v2);  }  v2 = *(_DWORD *)_stack_chk_guard__FBSD_1_0 ^ *(_DWORD *)_stack_chk_guard__FBSD_1_0;  result = 10;  if ( *(_DWORD *)_stack_chk_guard__FBSD_1_0 != *(_DWORD *)_stack_chk_guard__FBSD_1_0 )   goto LABEL_6;  return result;} De aqui no podemos sacar grandes conclusiones, pero, sabemos una cosa:
      if ( *(_DWORD *)_stack_chk_guard__FBSD_1_0 == *(_DWORD *)_stack_chk_guard__FBSD_1_0 )   return CHARACTER__IsPartyJoinableMutableCondition(a1, a2, a1, a2); Esta funcion hará return al valor de una otra función. Debemos entonces, movermos hasta esa función, CHARACTER__IsPartyJoinableMutableCondition.
    int __fastcall CHARACTER__IsPartyJoinableMutableCondition(int a1, int a2, int a3, int a4){  int v4; // edx@1  char v5; // al@4  __int64 v6; // qax@5  int result; // eax@7  int v8; // eax@10  int v9; // [sp+1Ch] [bp-Ch]@1  v4 = 1;  v9 = *(_DWORD *)_stack_chk_guard__FBSD_1_0;  if ( *(_BYTE *)(singleton_CPartyManager___ms_singleton + 76) )  {   LOBYTE(v4) = 2;   if ( !*(_DWORD *)(a3 + 9364) )   {   LOBYTE(v4) = 3;   if ( !*(_BYTE *)(a4 + 4) )   {   v5 = LC_IsCanada(a1);   a1 = 15;   if ( !v5 )   a1 = (unsigned __int8)LC_IsBrazil(15) < 1u ? 30 : 10;   v6 = *(_BYTE *)(a3 + 1298) - *(_BYTE *)(a4 + 1298);   LODWORD(v6) = (HIDWORD(v6) ^ v6) - HIDWORD(v6);   v4 = 4;   if ( a1 >= (_DWORD)v6 )   {   LOBYTE(v4) = 7;   if ( !*(_DWORD *)(a4 + 9328) )   {   if ( !*(_DWORD *)(a3 + 9328)   || (v8 = CParty__GetMemberCount(a1, v4, *(_DWORD *)(a3 + 9328)), v4 = 8, v8 != 8) )   v4 = 0;   }   }   }   }  }  result = v4;  if ( *(_DWORD *)_stack_chk_guard__FBSD_1_0 != v9 )   __stack_chk_fail(a1, *(_DWORD *)_stack_chk_guard__FBSD_1_0 ^ v9);  return result;} La primera cosa en lo que nos fijaremos es en esto:
      v5 = LC_IsCanada(a1);   a1 = 15;   if ( !v5 )   a1 = (unsigned __int8)LC_IsBrazil(15) < 1u ? 30 : 10; La variable v5 será igual a un boolean (true o false), a1 es un integer (un valor entre 0 a 2 millones). Lo que la función hace, es verificar si la variable v5 es false, si así es, el valor de la variable a1 cambia, dependiendo del locale, ya que si este es un locale/brazil el a1 será 10.
    a1 = (unsigned __int8)LC_IsBrazil(15) < 1u ? 30 : 10; Esto es lo que se llama, un short if-statement:
    a1 = boolean ? valor si es true : valor si es false;
     
    Como el nivel de diferencia en los servidores de europa es 15, podemos concluir que la variable a1 define el nivel de diferencia y es el valor que queremos cambiar.
     
     
    Toqueteando en el IDA
     
    Después de saber que valor tenemos que cambiar, y donde está, abrimos el IDA:

     
    Y le damos al primer botón (New - Disassemble a new file), seleccionamos nuestro archivo, en mi caso el game r40250, y nos aparecerá algo de este tipo:

     
    Nosotros, sin tocar en nada, le damos al OK. Y esperamos hasta que cargue las funciones.
     
    Cuando nos salga algo así:

     
    Significa que las funciones ya están cargadas.
    Ahora le hacemos click en la ventana Function name y escribimos: CHARACTER::IsPartyJoinableMutableCondition y le damos un doble click.
     

     
     
    Nosotros simplemente bajamos hasta aqui:

     
    Si le damos al botón de tabulación, nos llevará al pseudocode de esa función y, además, nos dejará en la localización actual, por ejemplo:
    call   _Z11LC_IsCanadav ; LC_IsCanada(void)mov ecx, 0Fhtest   al, aljz   short loc_806E8B0 Si hacemos click en el mov y hacemos un jump to pseudocode nos llevará hasta:
    a1 = 15; Yo, como no sé cambiar los valores de los short if-statements, haré NOP (No Operation, que simplemente hace que en esa parte no haga nada).
     
    Entonces, nos moveremos al Hex View y podremos ver que la parte que está seleccionada, es la parte que hemos seleccionado en el IDA View.
    Nos vamos a la ventana donde está el LC_IsCanada:
    .text:0806E83A jnz short loc_806E878.text:0806E83C call   _Z11LC_IsCanadav ; LC_IsCanada(void).text:0806E841 mov ecx, 0Fh.text:0806E846 test   al, al.text:0806E848 jz   short loc_806E8B0 El short jump if not zero (jnz) si le damos click y vamos al pseudo, veremos que está demasiado arriba del if-statement.
    El call al LC sabemos que es una variable
    El mov es la variable que queremos cambiar.
    El test es el if-statement.
    El jump if zero (jz) basicamente es lo que va después de la condición.
     
    Entonces lo que tenemos que hacer, es NOP al jz y al test.
     
    Como?
    Facil, seleccionamos lo que queremos cambiar:

     
    Nos vamos al Hex View le damos al F2, y cambiamos los 2 valores que salen seleccionados por 90. Ya que el No Operation (NOP) equivale a 90. Volvemos a darle al F2 para guardar los cambios.
    Y luego, hacemos lo mismo con el jz.
     
    Que hemos echo entonces?
    Basicamente, lo que hicimos hasta ahora, es dejar el nivel de diferencia entre jugadores para que se inviten sea de 15, ya que el if define todo lo demás, dependiendo del locale.
    Si queremos cambiar el 15 por otro, facil. Vamos hasta:
    mov ecx, 0Fh
     
    Luego al Hex View, entonces abrimos el
    Debes iniciar sesión para ver el contenido del enlace en esta publicación., ponemos 15 donde el 1, y le damos click a to hexadecimal, que nos saldra un f, o sea 15 en hexadecimal equivale a 0F. Buscaremos eso en el Hex View, le damos al F2. Volvemos al conversor, y convertimos el valor que queremos poner a cambio de 15. Yo por ejemplo, pondré 5 que es 05. Le daré al F2 otra vez para guardar los cambios.
     
    Entonces si vuelvo al pseudo me saldrá:
      v5 = LC_IsCanada(a1, v4);   a1 = 5; En vez de:
      v5 = LC_IsCanada(a1, v4);   a1 = 15; Eso es porque hemos cambiado el 15 por 5 en el Hex View.
     
     
    Por fin, como creamos la diff después de cambiar lo que queramos?

     
     
    Y mi diff me saldrá así:
    This difference file has been created by IDA Progame_r4025000026842: 0F 05 // Esto es el cambio de la variable a1, de 15 a 5// Estos NOP es de la condición que hemos "eliminado"00026846: 84 9000026847: C0 9000026848: 74 9000026849: 66 90 Y por último os dejo aqui los pseudocode que tengo:
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  22. Me Gusta
    Synea got a reaction from Zalo in SELECT INTERFACE LIKE WOM2   
    Hola, hoy les daré esta interfaz de inicio de sesión, que es muy similar a la de WoM2.
    Está codificado por mí, buena suerte.
     
    Interfaz original (WoM2):

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Mi interfaz;

    Foto 1:

     
    Foto 2:

     
     
    Google Drive:
     
    ZippyShare:
     
  23. Me Gusta
    Synea got a reaction from Frogii in SELECT INTERFACE LIKE WOM2   
    Hola, hoy les daré esta interfaz de inicio de sesión, que es muy similar a la de WoM2.
    Está codificado por mí, buena suerte.
     
    Interfaz original (WoM2):

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Mi interfaz;

    Foto 1:

     
    Foto 2:

     
     
    Google Drive:
     
    ZippyShare:
     
  24. Me Gusta
    Synea got a reaction from RDTm2 in SELECT INTERFACE LIKE WOM2   
    Hola, hoy les daré esta interfaz de inicio de sesión, que es muy similar a la de WoM2.
    Está codificado por mí, buena suerte.
     
    Interfaz original (WoM2):

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Mi interfaz;

    Foto 1:

     
    Foto 2:

     
     
    Google Drive:
     
    ZippyShare:
     
  25. Me Gusta
    Synea got a reaction from valdirk2 in SELECT INTERFACE LIKE WOM2   
    Hola, hoy les daré esta interfaz de inicio de sesión, que es muy similar a la de WoM2.
    Está codificado por mí, buena suerte.
     
    Interfaz original (WoM2):

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Mi interfaz;

    Foto 1:

     
    Foto 2:

     
     
    Google Drive:
     
    ZippyShare:
     
×
×
  • Crear nuevo...