Código de C/Visual C - Volcado de memoria.

Imágen de perfil

Volcado de memoria.gráfica de visualizaciones


C/Visual C

Publicado el 20 de Junio del 2022 por Hilario (122 códigos)
508 visualizaciones desde el 20 de Junio del 2022
/*
----LENGUAJE C----
****************************
Volcado de memoria.
*********************
volcadoTime.c
******************************************
HILARIO IGLESIAS MARTÍNEZ
+++++++++++++++++++++++++++
Programa educativo
-----------------------
Realizado en plataforma LINUX Ubuntu 20.04.4 LTS.
Bajo el standard ANSI C.-C-11
Usado el IDE Sublime Text.
Compilación: gcc volcadoTime.c -o volcadoTime.c
EJECUCIÓN.
**********
$ ./volcadoTime
Al compilar, pueden surgir errores sin importancia de
compilación por disparidad con identificadores de impresión.
+++++++++++++++++++++++++++++++++++++++++++++
Esta estructura incluida en <time.h>, se toma
como ejemplo para realizar un volcado de memoria
llamando a alguna de sus características,
y comprobar su comportamiento en memoria.
Se debe tener en cuenta, que el alojamiento en memoria
es volcado en exadecimal, para localizar los valores
direccionados se deberá teber en cuenta su valor
decimal a exadecimal. Lo que podemos hacer con los
muchos conversores que podemos encontrar on line.
Para comprobar su alojamiento en memoria hemos
realizado una petición de la hora actual.
También se debe de tener en cuenta como se alojan
los valores en el ordenador, según sean
Big Endian o Little Endian. Ya explicado en
otro de mis programas.
Hemos volcado para comprobar 8 valores en memoria.
Tipo_int_puntero = (int *) tiempo_puntero;
for(i=0; i < 8; i++)
También hemos pedido un volcado de -int DimensionVolcado=176- Bytes
for(i=0; i < DimensionVolcado; i++) --int tamañovolcado=176
Cada uno puede modificar los parámetros como quiera.
**********************************************
La funciones ctime(), gmtime() y localtime() toman
todas un argumento de tipo time_t que
representa el tiempo de calendario.
Al ser interpretado como un valor de tiempo absoluto,
representa el número de segundos transcurridos desde
las 00:00:00 del 1 de Enero de 1970,
en Tiempo Universal Coordinado,
Coordinated Universal Time (UTC).
**********************************************

struct tm {
int tm_sec; segunados, rango 0 to 59
int tm_min; minutos, rango 0 to 59
int tm_hour; horas, rango 0 to 23
int tm_mday; dias del mes, rangeo 1 to 31
int tm_mon; meses, rango 0 to 11
int tm_year; El número de años hasta 1900
int tm_wday; dias de la semana rango 0 to 6
int tm_yday; dias del año rango 0 a 365
int tm_isdst; horario verano
};
**********************************************
*/

Requerimientos

Realizado en plataforma LINUX Ubuntu 20.04.4 LTS.
Bajo el standard ANSI C.-C-11
Usado el IDE Sublime Text.
Compilación: gcc volcadoTime.c -o volcadoTime.c
EJECUCIÓN.
**********
$ ./volcadoTime

1.0

Publicado el 20 de Junio del 2022gráfica de visualizaciones de la versión: 1.0
509 visualizaciones desde el 20 de Junio del 2022
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
/*
     ----LENGUAJE C----
   ****************************
      Volcado de memoria.
      *********************
         volcadoTime.c
******************************************
      HILARIO IGLESIAS MARTÍNEZ
      +++++++++++++++++++++++++++
         Programa educativo
      -----------------------
Realizado en plataforma LINUX Ubuntu 20.04.4 LTS.
Bajo el standard ANSI C.-C-11
Usado el IDE Sublime Text.
Compilación:  gcc  volcadoTime.c  -o  volcadoTime.c
EJECUCIÓN.
**********
$ ./volcadoTime
Al compilar, pueden surgir errores sin importancia de
compilación por disparidad con identificadores de impresión.
+++++++++++++++++++++++++++++++++++++++++++++
Esta estructura incluida en <time.h>, se toma
como ejemplo para realizar un volcado de memoria
llamando a alguna de sus características,
y comprobar su comportamiento en memoria.
Se debe tener en cuenta, que el alojamiento en memoria
es volcado en exadecimal, para localizar los valores
direccionados se deberá teber en cuenta su valor
decimal a exadecimal. Lo que podemos hacer con los
muchos conversores que podemos encontrar on line.
Para comprobar su alojamiento en memoria hemos
realizado una petición de la hora actual.
También se debe de tener en cuenta como se alojan
los valores en el ordenador, según sean
Big Endian o Little Endian. Ya explicado en
otro de mis programas.
Hemos volcado para comprobar 8 valores en memoria.
Tipo_int_puntero = (int *) tiempo_puntero;
 for(i=0; i < 8; i++)
También hemos pedido un volcado de  -int DimensionVolcado=176- Bytes
for(i=0; i < DimensionVolcado; i++) --int tamañovolcado=176
Cada uno puede modificar los parámetros como quiera.
**********************************************
La  funciones  ctime(), gmtime() y localtime() toman
todas un argumento de tipo time_t que
representa el tiempo de calendario.
Al ser interpretado como un valor de tiempo absoluto,
representa  el número de segundos transcurridos desde
las 00:00:00 del 1 de Enero de 1970,
en Tiempo Universal Coordinado,
Coordinated Universal Time (UTC).
**********************************************
struct tm {
   int tm_sec;          segunados,  rango 0 to 59
   int tm_min;          minutos, rango 0 to 59
   int tm_hour;         horas, rango 0 to 23
   int tm_mday;         dias del mes, rangeo 1 to 31
   int tm_mon;          meses, rango 0 to 11
   int tm_year;         El número de años hasta  1900
   int tm_wday;         dias de la semana rango 0 to 6
   int tm_yday;         dias del año rango 0 a 365
   int tm_isdst;        horario verano
};
**********************************************
*/
 
/*
volcadoTime.c
*/
 
#include <stdio.h>
#include <time.h>
//Definición de los diferentes colores para identificar campos.
#define RED   "\x1B[31m"
#define GRN   "\x1B[32m"
#define YEL   "\x1B[33m"
#define BLU   "\x1B[34m"
#define MAG   "\x1B[35m"
#define CYN   "\x1B[36m"
#define WHT   "\x1B[37m"
#define RESET "\x1B[0m"
int main(int argc, char const *argv[])
{
//Declaramos variables.
 
struct tm Tiempo_actual, *tiempo_puntero; //Asociamos la estructura tm
tiempo_puntero=&Tiempo_actual;
int horas, minutos, segundos;
long int seconds_since_epoch; /*Hablando literalmente,
la época es el tiempo Unix 0 (medianoche del 1/1/1970),
pero 'época' se usa a menudo como sinónimo de tiempo Unix.
*/
//Declaraciones para el volcado de memoria
 int i;
 int DimensionVolcado=176; //Definimos el tamaño de la salida
 int *Tipo_int_puntero;
 unsigned char *apuntador_ptr; //Apuntador de acceso a la memoria en crudo
 
//Llamamos a la función localtime
 localtime_r(&seconds_since_epoch, tiempo_puntero);
 horas = Tiempo_actual.tm_hour; //Este es un acceso directo
 minutos = tiempo_puntero->tm_min; // Este es un acceso via puntero
 segundos = *((int *) tiempo_puntero); // acceso por puntero.
 
//Imprimimos él valor de los parámetros llamados en localtime.
 printf(RED "LA HORA ACTUAL ES: %02d:%02d:%02d\n"RESET, horas, minutos, segundos);
 
 //******************************************************
 printf(BLU "BYTES DE LA ESTRUCTURA LOCALIZADOS EN: 0x%08x\n"RESET, tiempo_puntero);
 printf("++++++++++++++++++++++++++++++++++++\n");
 apuntador_ptr = (unsigned char *) tiempo_puntero;
 for(i=0; i < DimensionVolcado; i++)
 {
 
 printf(WHT  "%02x "RESET, apuntador_ptr[i]);
 if(i%16 == 15) /*Hemos establecido 16 bytes
                 del 0 al 15, para imprimir líneas.*/
 printf("\n");
 }
 //******************************************
  minutos = horas = 0; // Ponemos ceros
 tiempo_puntero = (int *) tiempo_puntero;
 for(i=0; i < 8; i++) { //Volcamos 8 alojamientos de valores en memoria
 printf("*************************************\n");
 tiempo_puntero++; // Adicionamos
 
 
 //********************************************
Tipo_int_puntero = (int *) tiempo_puntero;
 for(i=0; i < 8; i++) {
 printf(YEL " |En esta dirección | @ 0x%08x | el contenido decimal es | %d\n |"RESET, Tipo_int_puntero, *Tipo_int_puntero);
 Tipo_int_puntero++; /*Agregamos en avance 4 a la dirección
                     ya que un int tiene un tamaño de 4 bytes.*/
 
 }
return 0;
}}



Comentarios sobre la versión: 1.0 (0)


No hay comentarios
 

Comentar la versión: 1.0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s7247