Guia de aprendizaje-introduccion al hacking para newbies

Moyses Seguir

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
23 Jul 2003
Mensajes
113
Guia de aprendizaje-introduccion al hacking para newbies
Escribo este pequeño artículo con la idea de que ayude a comprender las bases para la creación de hacks en el sistema de foros de vbulletin, si alguien desea colaborar puede contactar con migo para ver como creamos un artículo más completo

Última actualización: 12/08/2008

Quiero hacer notar el hecho de que yo soy un aficionado y me he apoyado de algunos artículos en vbulletin.org y/o cosas que he visto por mi cuenta

Debug Mode:
Esto es algo que los interesados en el tema agradecerán mucho, ¿pero qué es o que utilidad obtendré con esto?
Gracias a esta modalidad tendrás acceso a opciones ocultas en el ACP e información valiosa que te será de utilidad para la construcción de tu hack, a parte de que si tomas nota de cuantas querys hay sin tu modificación y cuantas hay activas con tu hack instalado podrás saber cuantas consultas añade tu modificación, así que no lo olvides: es obligatorio tener activo el debug mode para la creación de nuestros hacks (asuntos que vbulletin ha establecido como normas) ya que como mencione al inicio, unicamente de esta manera tendras acceso a opciones que son exclusivas a desarrolladores (las veremos en cada paso de la creación de nuestro hack de ejemplo)

Ahora, como activar el debug mode:
http://www.vbulletin.org/forum/showthread.php?t=82835&highlight=debug+mode

Advertencia: es altamente recomendado que solo actives el debug mode en un foro de prueba, jamás en un foro público y menos a todos los usuarios

#######################################

¿Hooks?
Simple: debes entender por hook a porciones o bloques de código que se ejecutan en los archivos .php, así que tu puedes crear un plugin que se ejecutara en determinada porción de un archivo php según tu necesidad, ¿entiendes el potencial de este método? Dependiendo de la complejidad de tu hack, ¡no necesitaras modificar el archivo .php en cuestión! Ahora los archivos .php se quedan intactos, algo que será muy útil en un upgrade y las personas con las que compartas tus hacks estarán muy agradecidas de la comodidad de solo dar click para instalar o desinstalar tus hacks. Ahora, no siempre habrá un hook justo a donde necesitas hacer una acción, en este caso, estarás obligado a editar el archivo .php o si te sientes con más confianza puedes añadir hooks personalizados a los archivos .php:
http://www.vbulletin.org/forum/showpost.php?p=663701&postcount=1

Well, let’s get crackin’!
La siguiente modificación es algo que se me ocurrió para ejemplo en este artículo, quiero decir que cada persona tiene su método o lógica de hacer las cosas, por ahora para ser mi primer hack desde la ver. 2.x lo hice así, con la practica cada uno refina sus métodos:

definiendo el objetivo:
vamos a suponer que por alguna razón necesitamos que cuando nuestros usuarios se registren sean agregados a un grupo especifico dependiendo de la opción a una pregunta que les hagamos, para ser más especificos, vamos a plantearlo asi:
-> cuando estén llenando los campos de registro, tendrán a su elección un campo en donde definan si son miembros de una banda
-> nuestro hack debe, dependiendo de la elección de nuestros usuarios al momento de registrarse, añadir nuestros usuarios en un grupo que crearemos en donde estarán los miembros de bandas, y si no pertenece a una banda quedará registrado en el grupo por defecto
-
> deberá permitir que seleccionemos nuestro grupo de usuario desde la comodidad del panel de control
-
> deberá de permitirnos si deseamos que el hack este activo


Paso 1:
Nos dirigimos a donde nuestro hack debe trabajar (en este caso es la pagina de registro, ojo: es una pagina diferente cuando hemos enviado los datos de registro y por lo mismo los hooks son diferentes) justo ahí buscamos al pie de nuestra pagina de registro la sección ‘Debug Information’ y ahí vemos el apartado ‘Hooks Called:
paso1.jpg

(figura 1.1)

Ok, primero este es un mini tutorial/guia de hacks, no de Photoshop, asi que no me salgan con comentarios acerca de las imágenes, que no sé usar el photoshop ya de por si es doble sacrificio el que hago por ustedes ;). Usando nuestra intuición nos centramos a primera vista por el nombre de los hooks en 2 posibles localizaciones en donde nuestro hack podría funcionar, pero si hay dudas lo ideal es consultar la información del apartado ‘una valiosa herramienta’ en mi caso ya tenia idea de a donde dirigirme, (de estos 2 hooks señalados, el hook que utilicé y en donde me funciono es el que marque con amarillo)

Paso 2:
me dirijo al ACP y busco la sección ‘Plugin & Products System’ doy clic en ‘administrar productos’ y luego en ‘add/import product’ y los lleno según los datos de mi nuevo producto:
paso2.jpg

(figura 2.1)
Hay algunas reglas que se deben considerar en esta sección, para dudas pueden consultarlas en la ayuda y dependiendo de las futuras actualizaciones las detallare en su momento (de lo contrario jamás avanzaré en la creación de este documento).
Le damos guardar y listo! Ya hemos empezado con lo necesario para nuestro flamante hack. Si han notado este paso es sencillamente la base que será la estructura de nuestro hack, ya que aquí no podremos más que hacer estas definiciones sencillas

Paso 3:
Nos dirigimos a Opciones del foro y damos clic en ‘Add New Setting Group’:

paso3.jpg

(figura 3.1)
Ahora vamos a crear el menú que nuestro hack ocupará como base de sus configuraciones:
paso3b.jpg

(figura 3.2)

Al guardar nos aparece la siguiente pantalla:
paso3c.jpg

(figura 3.3)

Ahora seleccionamos ‘Add Setting’ y crearemos nuestras opciones:
paso3d.jpg

(figura 3.4)

Seguramente ya han notado que las frases se están creando en conjunto con nuestra opción, ahora el resultado:
paso3e.jpg

(figura 3.5)
En este caso he elegido que por defecto sea el grupo 9, obvio, esto es un ejemplo

Ahora creamos un campo que el usuario usará para darnos a conocer si es miembro de una banda o no cuando se este registrando:
paso3f.jpg

(figura 3.6)

Esta demás mencionar que es importante anotar el numero de este campo, el cual es el numero 6

Paso 4:
Damos clic en ‘agregar plugin’ y vamos a llenar los datos según el siguiente orden:
paso4.jpg


En ‘Product’ elegimos el producto que acabamos de crear y en ‘Hook Location’ elegimos en que parte del código del archivo de registro deseamos que se ejecute nuestro código, ‘Título’ no necesita explicación, ‘Execution Order’ dejamos por defecto la opcion y ahora vamos a la parte vital de nuestro hack: ‘Plugin PHP Code’


 

Moyses

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
23 Jul 2003
Mensajes
113
Paso 5
No voy a explicar como funciona el codigo, esto no va en este artículo, solo explicare la función de manera general
En el recuadro ‘Plugin PHP Code’ escribimos entonces el código que deberá de hacer todo el trabajo:

PHP:
     // 1 
  if ($vbulletin->options['hack_activo_grupo_por_defecto']) {
        $user = $db->query_first(" 
  // 2
            SELECT field6
            FROM " . TABLE_PREFIX . "userfield 
            WHERE userid = " . $vbulletin->userinfo['userid'] . " 
        "); 
                 
// 3 
                if ($user['field6'] == "Yes") 
                { 
                $db->query_write("UPDATE " . TABLE_PREFIX . "user  
                SET usergroupid = '" . $vbulletin->options['grupo_grupo_por_defecto'] . "' 
                WHERE userid = " . $vbulletin->userinfo['userid'] . " "); 
                } 
  }


Explicación:

1)Creamos una condicional en la que según nuestra elección de tener el hack activo o no (ver figura 3.5) corremos un query en donde vamos a preguntar que valor introdujo nuestro usuario registrado

2)Recordemos que cuando creamos nuestro campo de usuario nos dimos cuenta que era el campo #6 y es ahí justo a donde vamos a buscar el valor que vamos a evaluar

3)Si el valor es “Yes” vamos entonces a correr un nuevo Quero, esta vez será un tipo UPDATE y usamos '" . $vbulletin->options['grupo_grupo_por_defecto'] . "' ¿recuerdan que cuando creamos el menú de las configuraciones de nuestro hack había un apartado con el nombre ‘Grupo por defecto’? (ver figura 3.5) pues cuando creamos opciones en la parte ‘Nombre de la Frase’ el valor en este campo se puede llamar con el código antes mencionado y usando su nombre para obtener el valor que contiene (en este caso ‘grupo_grupo_por_defecto’)

Listo! Ahora tenemos todo el trabajo hecho, solo falta irnos a ‘Plugins & Products’ y elegir ‘Administrar Productos’ luego a la par de nuestro hack hay una opción que sirve para exportarlo con lo que nos creara un archivo XML que contendrá todo nuestro trabajo realizado y podremos compartirlo con la comunidad y esperar criticas, agradecimientos o lo que provoque tu obra de arte ante los demás.

Existen también puntos muy importantes relacionados con la seguridad a la hora de la creación de nuestros hacks, pero prometo hacer eso luego en una actualización de este artículo

nota: hay una similitud con un hack en vbulletin.org, pero esta es una versión hecha por mi para un usuario que solicitaba una actualización de un hack, por lo tanto no necesito permiso para ponerlo



Una valiosa herramienta:
Los desarrolladores de mods/hacks de vbulletin generalmente se basan en esta herramienta para comprender las funciones del sistema y por lo mismo al comprender las generalidades del mismo basarse para el desarrollo de modificaciones que solucionen sus necesidades:
http://members.vbulletin.com/api/

Agradecimientos por compartir sus conocimientos con otros:
Gary King, MPDev y en especial a Xenon por crear el mejor hack de todos los tiempos y darme su permiso para actualizarlo (para mi uso personal, LOL)

Esta totalmente prohibida la distribución en parte o total de este artículo sin mi consentimiento, lo realice con esfuerzo, robándome tiempo a mi mismo y no es agradable que otros usen los trabajos ajenos agenciándose créditos que no corresponden, la intención de crearlo es para ayudar a las personas que desean aprender y con el deseo de que las personas se animen a colaborar en su oportunidad y por ultimo concedo permiso a vbhispano para publicarlo.
 

Das Underground

Delta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
16 Ene 2008
Mensajes
674
Compa, hago todo paso a paso, tal como lo haces, lo unico que cambio, son las variables del campo de perfil, cambio el Yes del codigo por Femenino, y me da un error de Base de Datos
 

Emisha

Curioso
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
22 Oct 2009
Mensajes
7
muy bueno el tutorial, aplica esto aun para la versión de los foros actuales? me gustaría aprender esto y aportar algo :O
 

Das Underground

Delta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
16 Ene 2008
Mensajes
674
Amigo, el codigo tiene un pequeño error

Esta parte:
Insertar CODE, HTML o PHP:
[COLOR=#000000][COLOR=#007700]
        [/COLOR][COLOR=#0000bb]$user [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]$db[/COLOR][COLOR=#007700]->[/COLOR][COLOR=#0000bb]query_first[/COLOR][COLOR=#007700]([/COLOR][COLOR=#dd0000]" 
  // 2
            SELECT field6
            FROM " [/COLOR][COLOR=#007700]. [/COLOR][COLOR=#0000bb]TABLE_PREFIX [/COLOR][COLOR=#007700]. [/COLOR][COLOR=#dd0000]"userfield 
            WHERE userid = " [/COLOR][COLOR=#007700]. [/COLOR][COLOR=#0000bb]$vbulletin[/COLOR][COLOR=#007700]->[/COLOR][COLOR=#0000bb]userinfo[/COLOR][COLOR=#007700][[/COLOR][COLOR=#dd0000]'userid'[/COLOR][COLOR=#007700]] . [/COLOR][COLOR=#dd0000]" 
    [/COLOR][/COLOR]
Deberia ser así:

Insertar CODE, HTML o PHP:
[COLOR=#000000][COLOR=#dd0000]
  // 2[/COLOR][/COLOR][COLOR=#000000][COLOR=#0000bb]
            $user [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]$db[/COLOR][COLOR=#007700]->[/COLOR][COLOR=#0000bb]query_first[/COLOR][COLOR=#007700]([/COLOR][COLOR=#dd0000]" [/COLOR][/COLOR]
[COLOR=#000000][COLOR=#dd0000]            SELECT field6
            FROM " [/COLOR][COLOR=#007700]. [/COLOR][COLOR=#0000bb]TABLE_PREFIX [/COLOR][COLOR=#007700]. [/COLOR][COLOR=#dd0000]"userfield 
            WHERE userid = " [/COLOR][COLOR=#007700]. [/COLOR][COLOR=#0000bb]$vbulletin[/COLOR][COLOR=#007700]->[/COLOR][COLOR=#0000bb]userinfo[/COLOR][COLOR=#007700][[/COLOR][COLOR=#dd0000]'userid'[/COLOR][COLOR=#007700]] . [/COLOR][COLOR=#dd0000]" 
    [/COLOR][/COLOR]

Saludos y gracias al amigo Jhonnyf
 
Arriba