Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Stuxnet

#281
ASM / Assembler
Mayo 02, 2012, 12:04:46 AM
HLA (High Level Assembly)

Por ahí revisando archivos me encontré con esta bella de información.

HLA es un lenguaje ensamblador de alto nivel que sirve para ir aprendiendo de a poco el lenguaje ensamblador puro, es decir que te permite usar construcciones de alto nivel como "for", "while", "if" y etcétera e ir aprendiendo las instrucciones de ensamblador poco a poco hasta saber usar construcciones puras de ensamblador. El lenguaje HLA es desarrollado por Randall Hyde y también escribió un libro importante de Assembler sobre HLA.


HLA
Las herramientas de HLA son multiplataforma y de dominio público.
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Technical Documentation
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login


HIDE (HLA IDE)
HIDE es para la plataforma Windows y la licencia es libre para uso personal o comercial.
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login


Otras herramientas útiles

ResEdit
Es un editor de recursos para los programas.
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Resource Hacker
Es una herramienta para ver, modificar, renombrar, agregar, borrar y extraer recursos en ejecutables de Windows de 32bit & 64bit y archivos de recursos.
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login






Sitios web de Assembler (no son sitios sobre HLA, sino de Assembler puro)

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login


Agner's CPU blog
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Hutch's Assembly pages
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Paul Hsieh's x86 Assembly page
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Iczelion's Win32 Assembly Homepage
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login


Tutoriales de Assembler

PC Assembly Tutorial - Roby Joehanes
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Lenguaje Ensamblador Para Microprocesadores Intel 80xx/80x86 - M. en C. Eduardo René Rodríguez Ávila
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login





Bibliografía

The Art of Assembly - Randall Hyde
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Assembly Language, The True Language Of Programmers
http://You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Programming Ground Up - Jonathan Bartlett
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Assemblers And Loaders - David Salomon
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Lenguaje Ensamblador para PC - Paul A. Carter
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Programación avanzada en lenguaje ensamblador - Medina, Ramon
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Introduction to 80x86 Assembly Language and Computer Architecture - Richard C. Detmer
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Manuales de Optimización de Agner Fog (Nota: los manuales no son para principiantes)
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
#282
Dudas y pedidos generales / [SOLUCIONADO] Plugins
Abril 21, 2012, 09:14:55 PM
Hola alguien de casualidad tiene los plugins de Bandook v 1.35 ya los busque en google pero la mayoría de links eran del Megaupload
#283


Parte Teórica:

Un poco de historia.
Conceptos básicos: Registros, memoria, ASM, etc.
Tipos de exploits.
Modo de actuación de cada tipo de exploit.
Sistemas de protección"anti-exploits".
Métodos de evasión antiprotectores de pila/heap.



Programación de shellcodes para exploits.
Métodos de evasión en shellcodes anti IDS.

Parte Practica:

Funcionamiento básico de exploits:
Stack.
Heap (pointer/function pointer/VPTR overwrite).
Format String.
Casos de reales:
Remote root con un b0f.
Remote root con un exploit de formato(Posadis DNS, Washington University (wu-ftp) FTP).

Nota:

Esto son libros para que sus conocimientos aumente no es ninguna clase programas.

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
#284
Seguridad / Vpn
Abril 17, 2012, 07:02:42 PM

¿Qué es VPN?:

Es una tecnología de red que permite una extensión de la red local sobre una red pública o no controlada, como por ejemplo Internet.

Ejemplos comunes son la posibilidad de conectar dos o más sucursales de una empresa utilizando como vínculo Internet, permitir a los miembros del equipo de soporte técnico la conexión desde su casa al centro de cómputo, o que un usuario pueda acceder a su equipo doméstico desde un sitio remoto, como por ejemplo un hotel. Todo ello utilizando la infraestructura de Internet.

VPN recomendadas:

Todas las que usan el servicio OpenVPN. Estas incluyen políticas específicas acerca de los datos (la mejor opción: sin registro de datos, sin registro de facturación y con métodos seguros de pago como por ejemplo Ukash y servicios similares).

Servicios Comerciales VPN [Recomendadas]:

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

VPN gratuitas (No recomendables):

Atención las VPN gratuitas no son seguradas.

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
#285
Hacking / Process Hacker
Abril 11, 2012, 11:53:51 PM

Process Hacker es una analizador de procesos que proporciona gran cantidad de información a cerca de cada programa o servicio en ejecución.

El programa muestra una lista de procesos en la que cada uno aparece coloreado indicando si se trata de un proceso del sistema, del usuario, si es nuevo, el tiempo que lleva en ejecución, etc.

Además, Process Hacker informa sobre todos los tipos de memoria que está utilizando cada programa, los archivos que usa el programa en ejecución, etc.

La versión es Process Hacker 1.3.7.1

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login { link subido a mi cuenta haber si no me lo borran }

Otras versiones

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
#286
el autor original de este aporte es JEP




Esta es una pequeña introducción de como funcionan los archivos PE

Que es?
El archivo PE (Portable Executable) es el formato que utiliza windows para los ejecutables. En fin, en pocas palabras es un .exe o un .dll

Para que sirve conocerlo?
En Ing inversa muchas veces no es necesario conocer con mucho detalle la estructura que tiene este archivo, sin embargo, para problemas más complicados si resultará util conocerlo.
Nos permite separar las secciones del exe, analizarlas por separado, crear nuevas secciones, o modificar las existentes.
Las aplicaciones son bastantes, pero lo mas importante es que con esto se entenderá mejor porque pasan algunas cosas y como podemos resolverlas

Estructura basica:
vamos por parte, primero con una división a grandes razgos de las partes del archivo, y despues vamos ir entrando en detalle en las mas importantes

El archivo PE simplemente un archivo binario, que tiene una estructura, que es basicamente esta:
Código: text
--------------------
|  ENCABEZADO DOS  |
--------------------
|  STUB DOS        |
--------------------
|  ENCABEZADO NT   |
--------------------
|  ENCABEZADO SEC  |
--------------------
|  STUB NT         |
--------------------

Como se ve el archivo tiene 5 partes, asi de simple XD, los encabezados tienen un tamaño constante y en ellos están definidas todas las propiedades del archivo. Los stub contienen al programa en sí, los analizaremos por parte.




Sobre el Encabezado DOS y el Stub DOS
Tanto el encabezado DOS como el stub DOS no nos interesará tanto, están ahi por una especie de compatibilidad, si estamos ejecutando el programa en windows se ignorará toda esta parte.
generalmente eso contiene un pequeño programa en DOS que solamente imprime en pantalla algo como esto:
"This program cannot be run in DOS mode."
para indicar que estamos tratando de ejecutar un archivo que no corre en DOS.

Encabezado DOS
El encabezado DOS, asi como ya dije, es una estructura de datos que contiene variables que definen el programa, las variables que contiene este encabezado las podemos sacar de la ayuda de windows (msdn.microsoft.com)
Código: c

typedef struct _IMAGE_DOS_HEADER
{
     WORD e_magic;
     WORD e_cblp;
     WORD e_cp;
     WORD e_crlc;
     WORD e_cparhdr;
     WORD e_minalloc;
     WORD e_maxalloc;
     WORD e_ss;
     WORD e_sp;
     WORD e_csum;
     WORD e_ip;
     WORD e_cs;
     WORD e_lfarlc;
     WORD e_ovno;
     WORD e_res[4];
     WORD e_oemid;
     WORD e_oeminfo;
     WORD e_res2[10];
     DWORD e_lfanew;
} IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;

esto es el encabezado, no nos interesa tanto, lo importante aqui es que, para leer todo el archivo debemos por lo menos saber el tamaño que ocupa este encabezado, y lo mas importante es que en este encabezado está la variable que indica donde comienza el encabezado del NT (que es realmente el encabezado que nos interesa)
dentro de esta variable e_lfanew se indica donde comienza el encabezado NT, vamos a ver con un ejemplo, esto es lo que se ve con un editor hexa
Código: text

"000000000  4D 5A 90 00 03 00 00 00-04 00 00 00 FF FF 00 00   |MZ##############|"
"000000010  B8 00 00 00 00 00 00 00-40 00 00 00 00 00 00 00   |########@#######|"
"000000020  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   |################|"
"000000030  00 00 00 00 00 00 00 00-00 00 00 00 80 00 00 00   |################|"

"000000040  0E 1F BA 0E 00 B4 09 CD-21 B8 01 4C CD 21 54 68   |######.#!##L#!Th|"
"000000050  69 73 20 70 72 6F 67 72-61 6D 20 63 61 6E 6E 6F   |is program canno|"
"000000060  74 20 62 65 20 72 75 6E-20 69 6E 20 44 4F 53 20   |t be run in DOS |"
"000000070  6D 6F 64 65 2E 0D 0D 0A-24 00 00 00 00 00 00 00   |mode....$#######|"
"000000080  50 45 00 00 4C 01 05 00-24 A9 8A 4C 00 6C 00 00   |PE##L###$##L#l##|"

ahora hay que fijarse en la estructura del DOS_HEADER y lo que se ve en el archivo.
el tamaño del encabezado podemos calcular 30*WORD+1*DWORD = 64 bytes el encabezado tiene 64 bytes = 0x40 bytes (resulta mas comodo leer todo en hexa)
en el archivo separé con una linea, donde termina este encabezado, es exactamente en el offset 0x40.
Ahora vamos a leer la variable que nos interesa (DWORD e_lfanew), que son los ultimos 4 bytes del encabezado. en el archivo vemos que en esos 4 bytes tenemos "80 00 00 00" no hay que perder de vista que, dentro del archivo las variables se guardan con el byte menos significativo a la izquierda, asi que, si queremos leer esto como un numero hexa, debemos invertir este valor, tomando de 2 en 2, este valor en hexa será 0x00000080 (si no se entendió coloco aqui un ejemplo, si vemos en el archivo una variable asi "01 02 03 04" el valor en hexa de esa variable es 0x04030201, se debe invertir los numero  de 2 en 2)

bueno, con esto ya podemos leer donde empieza el encabezado del NT, está en el offset 0x00000080
Código: text

"000000070  6D 6F 64 65 2E 0D 0D 0A-24 00 00 00 00 00 00 00   |mode....$#######|"

"000000080  50 45 00 00 4C 01 05 00-24 A9 8A 4C 00 6C 00 00   |PE##L###$##L#l##|"
"000000090  31 03 00 00 E0 00 07 03-0B 01 02 38 00 5A 00 00   |1##########8#Z##|"
"0000000A0  00 68 00 00 00 0C 00 00-30 11 00 00 00 10 00 00   |#h######0#######|"

aqui vemos, separando con una linea donde comienza.

Stub DOS
El codigo en DOS realmente no nos interesa, pero solo para marcarlo, donde comienza y donde termina, está a continuación del Encabezado DOS y termina antes del encabezado del NT, asi que, en este caso, lo que tenemos en el stub del DOS es esto:
Código: text

"000000040  0E 1F BA 0E 00 B4 09 CD-21 B8 01 4C CD 21 54 68   |######.#!##L#!Th|"
"000000050  69 73 20 70 72 6F 67 72-61 6D 20 63 61 6E 6E 6F   |is program canno|"
"000000060  74 20 62 65 20 72 75 6E-20 69 6E 20 44 4F 53 20   |t be run in DOS |"
"000000070  6D 6F 64 65 2E 0D 0D 0A-24 00 00 00 00 00 00 00   |mode....$#######|"

como se puede ver, ahi esta el texto que dice que la aplicación no corre en DOS



Encabezado NT
El encabezado NT es un poco mas complicado que el de DOS, veamos su estructura
Código: c

typedef struct _IMAGE_NT_HEADERS {
  DWORD                 Signature;
  IMAGE_FILE_HEADER     FileHeader;
  IMAGE_OPTIONAL_HEADER OptionalHeader;
} IMAGE_NT_HEADERS, *PIMAGE_NT_HEADERS;

esta es su definición, la podemos encontrar en esta pagina You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Esta estructura todavia no nos dice mucho, solo que tiene un DWORD, que es un valor de referencia, siempre vale 0x00004550, realmente conviene leer esta variable como un char* "50 45 00 00", en ascii significa 'PE\0\0', esto se puede ver facilmente y permite identificar donde comienza el encabezado NT sin tener que hacer el cálculo que hicimos hace un rato.
Esto lo vemos aqui, (ver los primeros 4 bytes)
Código: text

"000000080  50 45 00 00 4C 01 05 00-24 A9 8A 4C 00 6C 00 00   |PE##L###$##L#l##|"



Veamos las estructuras contenidas en esta estructura: IMAGE_FILE_HEADER, IMAGE_OPTIONAL_HEADER

IMAGE_FILE_HEADER
Código: c

typedef struct _IMAGE_FILE_HEADER {
  WORD  Machine;
  WORD  NumberOfSections;
  DWORD TimeDateStamp;
  DWORD PointerToSymbolTable;
  DWORD NumberOfSymbols;
  WORD  SizeOfOptionalHeader;
  WORD  Characteristics;
} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;

No vamos a ver con detalle todas las variables de este encabezado, solo las que nos interesan
WORD  Machine: nos dice el tipo de maquina para la que fue compilado: 386,486,586,...
DWORD NumberOfSections: numero de secciones del archivo, esto es importante, si es que queremos agregar secciones.
DWORD TimeDateStamp: la fecha en la que fue compilado
DWORD PointerToSymbolTable: puntero a la tabla de simbolos
DWORD NumberOfSymbols: numero de simbolos (despues veremos esto en detalle)
WORD  SizeOfOptionalHeader: tamaño del IMAGE_OPTIONAL_HEADER, esto es interesante ya que, haciendo unas operaciones podemos llegar al stub del NT (donde comienza realmente el codigo) del encabezado DOS tenemos el offset del inicio de esta estructura, si a eso le sumamos el tamaño del IMAGE_FILE_HEADER y del IMAGE_OPTIONAL_HEADER, llegaremos al inicio del Stub NT (despues veremos en detalle como hacer este calculo)

sigamos con el IMAGE_OPTIONAL_HEADER
Código: c

typedef struct _IMAGE_OPTIONAL_HEADER {
  WORD                 Magic;
  BYTE                 MajorLinkerVersion;
  BYTE                 MinorLinkerVersion;
  DWORD                SizeOfCode;
  DWORD                SizeOfInitializedData;
  DWORD                SizeOfUninitializedData;
  DWORD                AddressOfEntryPoint;
  DWORD                BaseOfCode;
  DWORD                BaseOfData;
  DWORD                ImageBase;
  DWORD                SectionAlignment;
  DWORD                FileAlignment;
  WORD                 MajorOperatingSystemVersion;
  WORD                 MinorOperatingSystemVersion;
  WORD                 MajorImageVersion;
  WORD                 MinorImageVersion;
  WORD                 MajorSubsystemVersion;
  WORD                 MinorSubsystemVersion;
  DWORD                Win32VersionValue;
  DWORD                SizeOfImage;
  DWORD                SizeOfHeaders;
  DWORD                CheckSum;
  WORD                 Subsystem;
  WORD                 DllCharacteristics;
  DWORD                SizeOfStackReserve;
  DWORD                SizeOfStackCommit;
  DWORD                SizeOfHeapReserve;
  DWORD                SizeOfHeapCommit;
  DWORD                LoaderFlags;
  DWORD                NumberOfRvaAndSizes;
  IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
} IMAGE_OPTIONAL_HEADER, *PIMAGE_OPTIONAL_HEADER;

  DWORD SizeOfCode; indica el tamaño total del code, osea, es la suma de los tamaños de las secciones que contienen codigo.
  DWORD AddressOfEntryPoint; direccion del EntryPoint
  DWORD BaseOfCode esto indica donde empieza la seccion que contiene el codigo (generalmente la seccion .text)
  DWORD BaseOfData; indica donde empieza la seccion que contiene las constantes del programa (generalmente .data)
  DWORD ImageBase; todas las direcciones virtuales están colocadas relativas a esta direccion, asi que a todas hay que sumarle este valor para sacar la direccion
  DWORD SectionAlignment; Alineacion de las secciones, en memoria
  DWORD FileAlignment; alineacion de las secciones, en el archivo
  DWORD SizeOfImage; suma de los tamaños de las secciones
  DWORD SizeOfHeaders; suma de los tamaños de los encabezados de las secciones
  DWORD NumberOfRvaAndSizes; esto da el numero de secciones y tamaños de cada seccion, esto es necesario para leer la info de IMAGE_DATA_DIRECTORY DataDirector, esta estructura que contiene la direccion de las secciones en el archivo, y los tamaños de estas secciones.
  estas secciones son secciones especiales, que siempre deben estar en los programas, ya vamos a ver que tienen una relacion con las secciones reales del programa, pero en nuestro programa podemos tener otras secciones que no estén en esta tabla.
las secciones de esta tabla son:
{"Export Table","Import Table","Resource Table","Exception Table","Certificate Table","Base Relocation Table","Debug","Architecture","Global Ptr","TLS Table","Load Config Table","Bound Import","IAT","Delay Import Descriptor","COM+ Runtime Header","Reserved"}
si alguna de estas secciones no existe en el programa se coloca su direccion 0x0 y tamaño 0x0, como podremos ver en los programas reales
 
aqui se puede ver la definicion de esa estructura 
Código: c

typedef struct _IMAGE_DATA_DIRECTORY {
  DWORD VirtualAddress;
  DWORD Size;
} IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY; 


El IMAGE_OPTIONAL_HEADER en el ejecutable de ejemplo se puede ver aqui: (comienza en el offset 0x000000098 y termina en el 000000177)
Código: text

"000000090  31 03 00 00 E0 00 07 03-0B 01 02 38 00 5A 00 00   |1##########8#Z##|"
"0000000A0  00 68 00 00 00 0C 00 00-30 11 00 00 00 10 00 00   |#h######0#######|"
"0000000B0  00 70 00 00 00 00 40 00-00 10 00 00 00 02 00 00   |#p####@#########|"
"0000000C0  04 00 00 00 01 00 00 00-04 00 00 00 00 00 00 00   |################|"
"0000000D0  00 B0 00 00 00 04 00 00-A9 4C 01 00 03 00 00 00   |#########L######|"
"0000000E0  00 00 20 00 00 10 00 00-00 00 10 00 00 10 00 00   |## #############|"
"0000000F0  00 00 00 00 10 00 00 00-00 00 00 00 00 00 00 00   |################|"
"000000100  00 A0 00 00 B8 04 00 00-00 00 00 00 00 00 00 00   |################|"
"000000110  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   |################|"
"000000120  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   |################|"
"000000130  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   |################|"
"000000140  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   |################|"
"000000150  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   |################|"
"000000160  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   |################|"
"000000170  00 00 00 00 00 00 00 00-2E 74 65 78 74 00 00 00   |########.text###|"


aqui vemos eso mismo, pero ordenando cada variable (visto con el ollydebg):
hice un salto de linea donde comienza la tabla de secciones (esto no es el encabezado de las secciones, que está a continuación)
Código: text

00400098        0B01         DW 010B              ; MagicNumber = PE32
0040009A        02           DB 02                ;  MajorLinkerVersion = 2
0040009B        38           DB 38                ;  MinorLinkerVersion = 38 (56.)
0040009C        005A0000     DD 00005A00          ;  SizeOfCode = 5A00 (23040.)
004000A0        00680000     DD 00006800          ;  SizeOfInitializedData = 6800 (26624.)
004000A4        000C0000     DD 00000C00          ;  SizeOfUninitializedData = C00 (3072.)
004000A8        30110000     DD 00001130          ;  AddressOfEntryPoint = 1130
004000AC        00100000     DD 00001000          ;  BaseOfCode = 1000
004000B0        00700000     DD 00007000          ;  BaseOfData = 7000
004000B4        00004000     DD 00400000          ; ImageBase = 400000
004000B8        00100000     DD 00001000          ;  SectionAlignment = 1000
004000BC        00020000     DD 00000200          ;  FileAlignment = 200
004000C0        0400         DW 0004              ;  MajorOSVersion = 4
004000C2        0000         DW 0000              ;  MinorOSVersion = 0
004000C4        0100         DW 0001              ;  MajorImageVersion = 1
004000C6        0000         DW 0000              ;  MinorImageVersion = 0
004000C8        0400         DW 0004              ;  MajorSubsystemVersion = 4
004000CA        0000         DW 0000              ;  MinorSubsystemVersion = 0
004000CC        00000000     DD 00000000          ;  Reserved
004000D0        00B00000     DD 0000B000          ;  SizeOfImage = B000 (45056.)
004000D4        00040000     DD 00000400          ;  SizeOfHeaders = 400 (1024.)
004000D8        A94C0100     DD 00014CA9          ;  CheckSum = 14CA9
004000DC        0300         DW 0003              ;  Subsystem = IMAGE_SUBSYSTEM_WINDOWS_CUI
004000DE        0000         DW 0000              ;  DLLCharacteristics = 0
004000E0        00002000     DD 00200000          ;  SizeOfStackReserve = 200000 (2097152.)
004000E4        00100000     DD 00001000          ;  SizeOfStackCommit = 1000 (4096.)
004000E8        00001000     DD 00100000          ;  SizeOfHeapReserve = 100000 (1048576.)
004000EC        00100000     DD 00001000          ;  SizeOfHeapCommit = 1000 (4096.)
004000F0        00000000     DD 00000000          ;  LoaderFlags = 0
004000F4        10000000     DD 00000010          ;  NumberOfRvaAndSizes = 10 (16.)

004000F8        00000000     DD 00000000          ;  Export Table address = 0
004000FC        00000000     DD 00000000          ;  Export Table size = 0
00400100        00A00000     DD 0000A000          ;  Import Table address = A000
00400104        B8040000     DD 000004B8          ;  Import Table size = 4B8 (1208.)
00400108        00000000     DD 00000000          ;  Resource Table address = 0
0040010C        00000000     DD 00000000          ;  Resource Table size = 0
00400110        00000000     DD 00000000          ;  Exception Table address = 0
00400114        00000000     DD 00000000          ;  Exception Table size = 0
00400118        00000000     DD 00000000          ;  Certificate File pointer = 0
0040011C        00000000     DD 00000000          ;  Certificate Table size = 0
00400120        00000000     DD 00000000          ;  Relocation Table address = 0
00400124        00000000     DD 00000000          ;  Relocation Table size = 0
00400128        00000000     DD 00000000          ;  Debug Data address = 0
0040012C        00000000     DD 00000000          ;  Debug Data size = 0
00400130        00000000     DD 00000000          ;  Architecture Data address = 0
00400134        00000000     DD 00000000          ;  Architecture Data size = 0
00400138        00000000     DD 00000000          ;  Global Ptr address = 0
0040013C        00000000     DD 00000000          ;  Must be 0
00400140        00000000     DD 00000000          ;  TLS Table address = 0
00400144        00000000     DD 00000000          ;  TLS Table size = 0
00400148        00000000     DD 00000000          ;  Load Config Table address = 0
0040014C        00000000     DD 00000000          ;  Load Config Table size = 0
00400150        00000000     DD 00000000          ;  Bound Import Table address = 0
00400154        00000000     DD 00000000          ;  Bound Import Table size = 0
00400158        00000000     DD 00000000          ;  Import Address Table address = 0
0040015C        00000000     DD 00000000          ;  Import Address Table size = 0
00400160        00000000     DD 00000000          ;  Delay Import Descriptor address = 0
00400164        00000000     DD 00000000          ;  Delay Import Descriptor size = 0
00400168        00000000     DD 00000000          ;  COM+ Runtime Header address = 0
0040016C        00000000     DD 00000000          ;  Import Address Table size = 0
00400170        00000000     DD 00000000          ;  Reserved
00400174        00000000     DD 00000000          ;  Reserved




Diferencia entre Dirección RAW y Virtual
Para poder entender el significado de algunas de estas variables, hace falta una pequeña introduccion de como las secciones se colocan en memoria.
Cuando se coloca un programa en memoria, para ejecutarlo, no se coloca exactamente como está en el archivo, en el archivo se tiene todo en forma mas compactada.
en memoria se alinean las secciones, generalmente de a 0x1000 bytes (esto depende de la variable que se encuentra en este encabezado, SectionAlignment es la variable que dice el valor de la alineacion, solo que generalmente vale 0x1000), esto hace mas rapida la lectura, sin embargo las secciones en el archivo, no hace falta que se separen unas de otras, aunque tambien son alineadas (la variable FileAlignment tiene el valor al cual se alinea en el archivo)

ademas de esta diferencia, el codigo del programa no comienza de la direccion 0x0 como pasa en el archivo, asi que una direccion en el archivo es totalmente distinta a una direccion en memoria. en el encabezado, cuando se refiere a memoria Rva se refiere a la memoria en el archivo, y cuando habla de memoria virtual se refiere al programa ya colocado en memoria para la ejecución
eso es necesario diferenciar para entender el encabezado.
Si queremos encontrar, donde empieza una seccion en el archivo, debemos buscar su direccion RVA, si queremos ver donde empieza esa misma seccion en memoria, debemos buscar su direccion Virtual (mas adelante veremos como identificar eso, con unos ejemplos)




seguido de esto viene el encabezado de las secciones
esta es la estructura de cada encabezado de seccion
Código: c

typedef struct _IMAGE_SECTION_HEADER {
  BYTE  Name[IMAGE_SIZEOF_SHORT_NAME]; /* IMAGE_SIZEOF_SHORT_NAME = 8 bytes */
  union {
    DWORD PhysicalAddress;
    DWORD VirtualSize;
  } Misc;
  DWORD VirtualAddress;
  DWORD SizeOfRawData;
  DWORD PointerToRawData;
  DWORD PointerToRelocations;
  DWORD PointerToLinenumbers;
  WORD  NumberOfRelocations;
  WORD  NumberOfLinenumbers;
  DWORD Characteristics;
} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;

por la union no hay que preocuparse, considerese solo una variable, que indica el tamaño (VirtualSize)

la cantidad de secciones tenemos ya, del encabezado NT, al ir leyendo todos los encabezados de las secciones, tendremos su posicion en el archivo (PointerToRawData), y en memoria (VirtualAddress), el tamaño es el mismo, la diferencia es que, estando en memoria, se llena de 0x0 hasta ajustarse a la alineación

en fin, despues de esto solo se tiene que ir leyendo las secciones.

.text es generalmente la seccion que contiene el codigo
.data y .rdata  contiene constantes, son secciones de solo lectura.
.bss es una seccion de lectura y escritura, se usa para las variables globales generalmente, las variables locales se colocan en el stack (eso lo veremos en otro tuto)
.idata es la tabla de importacion de funciones
.edata es la tabla de exportacion de funciones (es mas comun en los DLL, aunque un exe tambien lo puede tener)

en nuestro code de ejemplo aqui esta el encabezado de las secciones
Código: text

"000000170  00 00 00 00 00 00 00 00-2E 74 65 78 74 00 00 00   |########.text###|"
"000000180  E8 59 00 00 00 10 00 00-00 5A 00 00 00 04 00 00   |#Y#######Z######|"
"000000190  00 00 00 00 00 00 00 00-00 00 00 00 60 00 50 60   |############`#P`|"
"0000001A0  2E 64 61 74 61 00 00 00-44 00 00 00 00 70 00 00   |.data###D####p##|"
"0000001B0  00 02 00 00 00 5E 00 00-00 00 00 00 00 00 00 00   |#####^##########|"
"0000001C0  00 00 00 00 40 00 30 C0-2E 72 64 61 74 61 00 00   |####@#0#.rdata##|"
"0000001D0  20 05 00 00 00 80 00 00-00 06 00 00 00 60 00 00   | ############`##|"
"0000001E0  00 00 00 00 00 00 00 00-00 00 00 00 40 00 60 40   |############@#`@|"
"0000001F0  2E 62 73 73 00 00 00 00-78 0A 00 00 00 90 00 00   |.bss####x.######|"
"000000200  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   |################|"
"000000210  00 00 00 00 80 00 40 C0-2E 69 64 61 74 61 00 00   |######@#.idata##|"
"000000220  B8 04 00 00 00 A0 00 00-00 06 00 00 00 66 00 00   |#############f##|"
"000000230  00 00 00 00 00 00 00 00-00 00 00 00 40 00 30 C0   |############@#0#|"


seguido a esto (hay un espacio lleno de 0x0 donde se pueden agregar mas encabezados de secciones), y luego ya están las secciones en sí (a lo que le llamé Stub NT)

Esto es todo, se supone que con esto se debe entender como es el formato del ejectuable de windows ( iba ser mas facil si supiese explicar mejor las cosas, pero eso me cuesta XD )




a continuacion veremos un ejemplo de como encontrar una zona especifica de un programa, en memoria y en el archivo.

Para empezar buscaremos el famoso EntryPoint, esta direccion indica el lugar donde se comienza a ejecutar el code, asi que, se supone que debe caer dentro de la seccion de code, ( en el caso del ejemplo solo tiene una seccion con code .text )

Dentro del OptionalHeader tenemos una variable llamada AddressOfEntryPoint, para encontrarlo en el archivo, vamos al inicio de la estructura del OptionalHeader, y contamos los tamaños de las variables que están antes WORD+2*BYTE+3*DWORD = 0x10 bytes (16 en decimal)
sabemos que el inicio de esa estructura esta en 0x000000098 (eso ya lo vimos mas arriba), asi que la direccion del EntryPint debe estar en el Offset 0x0000000A8, tambien sabemos que ocupa 1 DWORD = 4 bytes
Código: text

"0000000A0  00 68 00 00 00 0C 00 00-30 11 00 00 00 10 00 00   |#h######0#######|"
"0000000B0  00 70 00 00 00 00 40 00-00 10 00 00 00 02 00 00   |#p####@#########|"

vemos que en el archivo es este el valor "30 11 00 00", como ya dijimos hay que voltearlo de 2 en 2 para tener el valor en Hexa  0x00001130, listo esta es la direccion del entrypoint, pero, tambien como vimos, todas estas direcciones estan referidas al ImageBase, de la misma forma que buscamos el valor del EntryPoint busquemos el ImageBase, esta variable está 3 Dword abajo del entrypoint, osea 8bytes, 0x0000000A8 + 0xC = 0x0000000B4  y ocupa 4 bytes, este es el valor "00 00 40 00" volteando = 0x00400000, bien, asi que el EntryPoint está realmente en 0x00400000 + 0x00001130 = 0x00401130 (eso lo podemos comprobar con algun otro programa como el olly)

que pasa si queremos ver ese entrypoint en el archivo, como lo vemos?
primero hay que saber a que seccion corresponde, en este caso, es evidente que corresponde a .text
veamos El VirtualAdress de .text, y el tamaño para acegurarnos de que está en esa seccion
este es el encabezado de esa seccion (comienza en 0x000000178)
Código: text

"000000170  00 00 00 00 00 00 00 00-2E 74 65 78 74 00 00 00   |########.text###|"
"000000180  E8 59 00 00 00 10 00 00-00 5A 00 00 00 04 00 00   |#Y#######Z######|"
"000000190  00 00 00 00 00 00 00 00-00 00 00 00 60 00 50 60   |############`#P`|"

su VirtualAdress esta a 8 Bytes + 1 Dword del inicio del encabezado, osea a 0xC bytes "00 10 00 00" = 0x00001000
tambien nos hara falta conocer el PointerToRawData "00 04 00 00"= 0x00000400

El virtual adress sabemos que es relativo al ImageBase, pero solo nos interesa saber la distancia a la que está el EntryPoint del inicio de esa seccion. asi que ese Offset sera EntryPint - VirtualAdress = 0x130
Ese es el offset desde el inicio de la seccion, en el archivo esa seccion inicia en el PointerToRawData, asi que, el entrypoint en el archivo está en PointerToRawData + 0x130 = 0x530

Vemos el archivo
Código: text

"000000530  55 89 E5 83 EC 18 C7 04-24 01 00 00 00 FF 15 50   |U#######$######P|"
"000000540  A1 40 00 E8 D8 FE FF FF-90 8D B4 26 00 00 00 00   |#@#########&####|"
"000000550  55 89 E5 53 83 EC 14 8B-45 08 8B 00 8B 00 3D 91   |U##S####E#####=#|"
"000000560  00 00 C0 77 3B 3D 8D 00-00 C0 72 4B BB 01 00 00   |###w;=####rK####|"
"000000570  00 C7 44 24 04 00 00 00-00 C7 04 24 08 00 00 00   |##D$#######$####|"

y lo comparamos con el dump del Entrypoint en memoria (visto con el Ollydbg)
Código: text

00401130  55 89 E5 83 EC 18 C7 04 24 01 00 00 00 FF 15 50  U.å.ì.Ç.$......P
00401140  A1 40 00 E8 D8 FE FF FF 90 8D B4 26 00 00 00 00  .@.èØþ....&....
00401150  55 89 E5 53 83 EC 14 8B 45 08 8B 00 8B 00 3D 91  U.åS.ì..E.....=.
00401160  00 00 C0 77 3B 3D 8D 00 00 C0 72 4B BB 01 00 00  ..Àw;=..ÀrK....
00401170  00 C7 44 24 04 00 00 00 00 C7 04 24 08 00 00 00  .ÇD$.....Ç.$....

podemos ver que el code coincide exactamente, ya que estamos parados en el mismo lugar XD


Espero que haya servido de algo esto,
Saludos, y gracias por leerlo




Si bien este tuto lo escribí solo, no pude haberlo hecho sin aprender este tema, estos son los materiales que utilicé para aprender
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Un gran agadecimiento a la gente de CLS que hizo estos tutos
#287
Otro excelente tutorial de las lista de CrackSLatinoS , espero les guste , saludos.




Protección:

Sistema anticopia implementado en disquetes grabados por Red Point , uno de los locales argentinos más populares de copiado de video juegos para MSX, Spectrum y otras plataformas. Este documento describe exclusivamente el funcionamiento de la protección para la norma MSX

Objectivo:

Analizar y entender los formatos especiales dados a los disquetes para evitar la copia de los mismos.

Dificultad:

De media a compleja, dependiendo del nivel de conocimientos del lector.

Herramientas

openMSX, BlueMSX, Editor Hexadecimal, experiencia en Ingeniería Inversa.

Cracker:

saccopharinx ( Creador del Tutorial)




Contenido
1.- Introducción
2.- Tipos de protección
3.- CHS
4.- LBA
4.1.- Disquete de 3.50" SS/DD - 80 pistas / 1 cabeza lectora
4.2.- Disquete de 5.25" DS/DD - 40 pistas / 2 cabezas lectoras
5.- Mapeo de sectores lógicos a sectores físicos
6.- FDC
6.1.- Direcciones de Entrada / Salida del controlador Talent DPF550
7.- Numeración y estructura interna de los sectores
8.- Rutina de formateo
8.1.- Configuración Daewoo CPC-400S con DiskROM original
8.2.- Configuración Daewoo CPC-400S con DiskROM de Talent DPF-550
8.3.- Software formateador de Red Point
9.- Verificación del sector oculto
9.1.- Verificación del sector oculto en RP-Protecion v1
9.2.- Verificación del sector oculto en RP-Protecion v2
10.- Otras protecciones
10.1.- Protección Super Laydock (Red Point)
10.2.- Protección Enano Soft
10.3.- Protección Real Time
11.- Download
12.- Preservación y Emulación total de disquetes
13.- Agradecimientos




You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
#288
Buen aporte , pero ponlo en etiquetas code para ver mas ordenado el post

saludos.
#289
Bugs y Exploits / Manual XSS
Abril 03, 2012, 12:55:26 AM
1.- Introducción

2.- Tipos de Ataques     
- Reflected Cross Site Scripting (XSS Reflejado)
- Stored Cross Site Scripting (XSS Persistente)
- DOM Cross Site Scripting (DOM XSS)
- Cross Site Flashing (XSF)
- Cross Site Request/Reference Forgery (CSRF)
- Cross Frame Scripting (XFS)
- Cross Zone Scripting (XZS)
- Cross Agent Scripting (XAS)
- Cross Referer Scripting (XRS)
- Denial of Service (XSSDoS)
- Flash! Attack
- Induced XSS
- Image Scripting
- anti-DNS Pinning
- IMAP3 XSS
- MHTML XSS
- Expect Vulnerability

3.- Evitando Filtros

4.- PoC examples - Bypassing filters
- Data Control PoC
- Frame Jacking PoC   

5.- Técnicas de ataque
+ Classic XSS - Robando "cookies"
+ XSS Proxy
+ XSS Shell
+ Ajax Exploitation
+ XSS Virus / Worms
+ Router jacking
+ WAN Browser hijacking
- DNS cache poison
- XSS Injected code on server
- Practical Browser Hijacking

6.- XSS Cheats - Fuzz Vectors
7.- Screenshots
8.- Herramientas
9.- Links
10.- Bibliografía
11.- Licencia de uso
12.- Autor

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
#290
Ingeniería Inversa / Winpdb [Herramienta]
Diciembre 05, 2011, 02:59:36 PM
Es una plataforma independiente de la GPL Python depurador con soporte para múltiples hilos , espacio de nombres modificación, incrustado depuración, y la comunicación cifrada. De acuerdo con el sitio web del proyecto , es hasta 20 veces más rápido que Python depurador integrado AP. Se trata de un front-end gráfico basado en el wxPython GUI marco y un back-end también conocido como RPDB2. Uno o ambos de estos componentes se utilizan en varios Python IDE como Python Stani es Editor (SPE), PythonWin y PIDA (RPDB2 solamente).

La Decarga

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
#291
Ingeniería Inversa / Crackeando VisualSVN
Diciembre 05, 2011, 02:58:40 PM
Nuevo tutorial de CrackSLatinoS by Mancu ,  por mi parte es un excelente tutorial espero les sirva

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
#292
Ingeniería Inversa / Visual DuxDebugger
Diciembre 05, 2011, 02:57:36 PM
Visual DuxDebugger es un desensamblador depurador de 64 bits para Windows.

Principales características
Totalmente compatible con procesos de 64 bits nativa
Totalmente compatible con 64 bits. NET procesos de
análisis completo de código
completa de análisis de memoria
Código edición
edición de la Memoria
Formatos de módulo de exportación (EXE / DLL / CSV)
Depurar múltiples procesos
de depuración de múltiples procesos hijo

Requisitos mínimos de
sistema operativo: Windows 7 64-bit / Windows Server 2008 R2
Procesador: Pentium 4 3.0 GHz

Requisitos recomendados del
sistema operativo: Windows 7 64-bit / Windows Server 2008 R2
Procesador: Dual Core 2.5 GHz
Pantalla: 1920 x 1080

Descarga:

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Ejecute "setup.exe" para instalar los requisitos previos


#293
Ingeniería Inversa / Ida Pro Advanced v5.5
Noviembre 30, 2011, 11:04:01 PM
Desensamblador capaz de realizar la ingeniería inversa de casi cualquier programa hecho para casi cualquier procesador.  IDA Pro es un desamblador ,  el mejor

IDA Pro combina una forma interactiva, programable, con múltiples procesadores desensamblador acoplado a un local y remota depurador y aumentada por un completo entorno de programación de plugin.




You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login (link subido a mi cuenta)
#294
Tener conocimiento en el lenguaje ASM (ensamblador)

Que es ASM

Se denomina lenguaje máquina a la serie de datos que la parte física de la computadora o hardware, es capaz de interpretar.

Una computadora digital o, mejor dicho, su parte física, sólo distingue  datos de tipo binario, es decir, constituidos por dos únicos valores a los que se denomina valor 0 y valor 1 y que, físicamente,  se materializan con tensiones comprendidas entre 0 y 4.0 voltios y entre 4 y 5 voltios, respectivamente. Para representar datos que contengan una información se utilizan una serie de unos y ceros cuyo conjunto indica dicha información.


Algunos ASM

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login Paquete para programar aplicaciones para Windows con MASM (Microsoft Macro Assembler).

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login Ensamblador para DOS, Windows y Linux. Soporta tanto 16, 32 como 64 bits. Open Source.

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login Ensamblador alternativo pera orientado mas que nada a Linux. Soporta 16, 32 y 64 bits. Open Source.

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Debugger's

Es un programa usado para probar y depurar (eliminar los errores) de otros programas (el programa "objetivo"). El código a ser examinado puede alternativamente estar corriendo en un simulador de conjunto de instrucciones (ISS), una técnica que permite gran potencia en su capacidad de detenerse cuando son encontradas condiciones específicas pero será típicamente algo más lento que ejecutando el código directamente en el apropiado (o el mismo) procesador. Algunas depuradores ofrecen dos modos de operación - la simulación parcial o completa, para limitar este impacto.

Entre los mas comunes tenemos

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Hex editor

Un editor hexadecimal (o editor de archivos binarios o editor de bytes ) es un tipo de programa de ordenador que permite al usuario manipular la fundamental binarios (0 / 1, cero / uno) datos que componen los archivos de computadora . Tenga en cuenta que los archivos de computadora puede ser muy pequeño (sólo un nombre, sin contenido) a muy grandes (de contenido que abarcan varios discos duros). Un archivo de computadora típica ocupa varias áreas en el plato (s) de una unidad de disco, cuyo contenido se juntan para formar el archivo. Editores hexadecimales que fueron diseñados para leer ("parse") y editar sector los datos de los segmentos físicos de disco o los discos duros a veces fueron llamados editores de sector o de los editores de disco .

Entre estos tenemos

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login


Tutoriales

Bien aqui les dejo la web de maestro del cracking Ricardo Narvaja You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Los tutoriales para OllyDbg You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

y algunos manuales de Programacion

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
#295
Dudas y pedidos generales / Re:yo no se nada de malwares
Noviembre 28, 2011, 04:23:28 PM
Si  aprender VB avanzado, te recomiendo delphi es mas avanzado que VB ahi se crean buenas maravillas
#296
Hacking / Re:Introduccion al Carding
Noviembre 26, 2011, 09:36:22 PM
gracias justo la info que andaba buscando
#297
Dudas y pedidos generales / Re:Backtrack
Noviembre 26, 2011, 04:23:54 PM
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
Excelente! es justo lo que necesitaba!
muchas gracias!

de nada esto para ayudar en lo que pueda
#298
Dudas y pedidos generales / Re:Backtrack
Noviembre 26, 2011, 01:31:17 PM
hi ANTRAX googleando un poco me encontre esto espero te sirva

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
#299
Gracias Antrax  ;D ;D ;D ;D ;D te lo agradezco mucho amigo
#300
Dudas y pedidos generales / Re:[Opinion]Web propia
Noviembre 22, 2011, 01:35:22 PM
pues te recomiendo un blog , por que el mantenimiento de una web si cuesta mucho , pues te aconsejo blogger es fácil de personalizar