elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 [14] 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ... 37
131  Programación / Ingeniería Inversa / Re: Pointers & Offsets en: 11 Diciembre 2011, 23:18 pm
Primero quisiera saber si los offsets son SIEMPRE estáticos, o puede que cambien, y si estos son propios de cada programa o propios de cada porción de memoria (dinamica o estatica).

Sí, siempre serán estáticos, ya que estos los establece el compilador.

El tema es el siguiente. Tengo un programa el cual cuenta con memoria totalmente dinamica, al volver a ejecutarlo cambian los adresses de memoria, como todos saben. Ahora, se que para no tener que obtener el adress de memoria de cada variable de mi programa cada vez que lo ejecuto, utilizo los pointers y offsets. Tengo claro que los adresses de memoria dinamica se almacenan en otros adresses que son estáticos (esto es lo que no puedo obtener) pero no se almacenan TALCUAL nosotros podemos verlos; si no que hay una especie de "cuenta" en los cuales intervienen los offsets y los pointers.

Tienes una base fuerte de lo que punteros significa, sin embargo se puede perfeccionar.

Cada compilador tiene su manera de asignar punteros, (entiéndase entonces que un puntero no es más que una dirección de memoria estática la cual apunta a una dirección de memoria dinámica, siendo ésta variante con un reinicio de sistema, cierre de proceso, bla bla bla...). Entonces, dependiendo del compilador, al momento de compilar, éste le asignará al programa los punteros que apuntarán (valga la redundancia) a tales direcciones dinámicas (direcciones que alojaran variables, elementos de estructuras, elementos de clases, etc...) permitiendo al programa en ejecución acceder a ellas, ya sea para lectura o escritura.

Pero, cabe destacar que un puntero hace referencia a una región/zona de memoria, no siempre directamente a una dirección dinámica la cual contiene exactamente el valor buscado, entonces... debido a esto, como el puntero hace referencia a una zona de memoria, supongase:

(Puntero) [0x00460000] -> (Hace referencia a una región de memoria dinámica) [0x07A00000]

El compilador tiene que establecer un desplazamiento desde esa zona de memoria que lleve exactamente donde se encuentra la dirección dinámica poseedora del valor que el programa necesita leer/editar. Este desplazamiento (también llamado OffSet) puede hacerse con una simple resta o suma (depende de como lo veas), suponiendo entonces que:

Mi puntero está haciendo referencia esta vez a la zona de memoria dinámica: [0x07A00000], pero el valor que el programa usará se encuentra unas quince direcciones más abajo, supongase [0x7A00015], entonces el compilador al haber establecido esto, deducirá que el desplazamiento será 0x15.

En base a esto, saca tus conclusiones, quizá sonaron algunas palabras un tanto repetitivas, pero... estoy escribiendo a vuelo de pájaro (tengo un juego de fútbol en unos minutos) me debo ir :xD.

Bueno, voy al grano, en este programa obtengo la direccion de memoria dinamica de una variable (con CE), de esta misma obtengo su offset y pointer (con MHS5). Pero no logro encontrar alguna funcion para obtener la memoria estatica en donde se almacena la memoria dinamica (por asi decirlo).

También cabe aclarar que cada vez que vuelvo a buscar los pointers y offsets que pertenecen a una direccion de memoria dinamica de una variable, estos mismos son diferentes a las busquedas anteriores, aunque la variable siempre sea la misma (pero no la direccion de memoria).

Me temo que lo debes estar haciendo mal, hace unos días hice un mini-tuto donde le enseñaba a un amigo a encontrar punteros con el CE, pero... también lo hice a vuelo de pájaro :xD, aquí te lo dejo, espero te sirva de algo... disculpa que te escriba a esta velocidad, no es por menospreciarte, es que no tengo mucho tiempo libre.

Salud ::).
132  Foros Generales / Dudas Generales / Re: DESCARGAS EN MEMORIA VIRTUAL en: 11 Diciembre 2011, 19:53 pm
Ostia, ¿no tendrás tu disco duro congelado? (Deep Freeze or something...?) :xD...
133  Programación / .NET (C#, VB.NET, ASP) / Re: Manuales de .NET en: 11 Diciembre 2011, 17:13 pm
¿Es que no existen de C++ .NET? :( :( :(

Edito: Ya he encontrado, si a alguien le interesa, le paso el libro que he cachado por allí :P...
134  Programación / Programación Visual Basic / Re: [VB6] Memoria en: 11 Diciembre 2011, 04:48 am
No me agrada ni poco VB6; por eso no perderé tiempo creando funciones que nunca usaré.

Te dejo aquí un proyecto (incompleto por desgracia) de un amigo del CE-F... el cual tiene lo que necesitas, una lectura en memoria se te haría fácil si usas la función ReadString.

Ojo, el proyecto en su totalidad (por tanto el crédito) pertenece a Wiccan.

Salud.
135  Foros Generales / Foro Libre / Re: Suerte [Clásico] en: 11 Diciembre 2011, 03:03 am
¡Que excelencia de partido!

Casi acierto el resultado... :xD.

¿Cómo te quedó la cara Mugrinho? :silbar:...

Cierren tema, parece que aquí muchos van al Madrid :laugh:.

Salud, ¡Visca el Barça!
136  Foros Generales / Foro Libre / Re: Heineken Carlsberg Mahou ... ? en: 11 Diciembre 2011, 02:50 am
Polar ICE... :silbar:
137  Foros Generales / Foro Libre / Re: Cuántas horas dedicas al autoaprendizaje? en: 11 Diciembre 2011, 02:49 am
Respondiendo a la pregunta del tema: Hora y media PARA APRENDER.
138  Foros Generales / Foro Libre / Suerte [Clásico] en: 10 Diciembre 2011, 21:22 pm
Os deseo suerte madridistas y barcelonistas.

¿Cuales son vuestros pronósticos para este clásico?

Digo que gana Barcelona 2-1 joder... ::) Aunque hay posibilidad de empate, no veo un partido perdido por parte de mi Barsa ;D.

Salud, y suerte...
139  Programación / Programación Visual Basic / Re: [VB6] Memoria en: 10 Diciembre 2011, 21:18 pm
Ambas funciones hacen uso deReadProcessMen, en realidad su nombre es ReadProcessMemory , esa es la que debes buscar  aunque lo q encuentres seguro estara en ingles , pero es mejor q la comprendas en vez de q uses esas dos q no las entiendes, usando la q te digo puedes indicar  la porcion de memoria q kieres leer y q lo ponga en una variable string.

Y... ¿de qué valdría que la alojase en una variable de tipo string si no ha hecho la previa conversión?...
140  Programación / Programación Visual Basic / Re: [VB6] Memoria en: 10 Diciembre 2011, 20:31 pm
Para ser más específicos: Debes leer la dirección en memoria que contiene por valor tal cadena de texto, obviamente si haces esto tendrás que leer byte a byte, o un gran pedazo de memoria (que te devuelva una matriz de bytes) y convertir ésta a una cadena de texto, ya sea ANSI o Unicode. Mira éste enlace.

Salud.
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 [14] 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ... 37
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines