<div dir="ltr">Gracias Steven<div><br></div><div>pueden también recomendar alguna bibliografía  sobre la memoria virtual en windows o en general</div><div><br></div><div>desde la época del 386 se comenzó hablar de modo virtual o modo seguro es entonces eso precisamente lo mismo de aquellos tiempos remotos?</div>
<div><br></div><div>que pasaría si intento correr eso mismo en linux tengo más, menos o igual acceso?</div><div><br></div><div>Cuando hablas de comunicarse con el sistema operativo para ver direcciones específicas de memoria, te refieres a alguna biblioteca en particular, o cómo se podría hacer?</div>
<div><br></div><div>disculpen la insistencia con el plugin, pero en ahora que lo dices, si el epsxe EMULA la plataforma psone entonces los datos definitivamente no se encuentran físicamente en la dirección que indica...</div>
<div><br></div><div>me atrevo entonces a hacer unas conjeturas, el plugin se comunica con el emulador este con el SO y este otro a su vez con el hardware, y de esa manera se garantizan unas cuantas cosas ... pero entonces me surge la otra pregunta, que es similar a una de las del primer mensaje.</div>
<div><br></div><div>Este plugin. cómo lee de la memoria del programa? Por una parte ya revisé es una dll entonces... conjeturo nuevamente aprovecharon la comunicación que queda abierta con una librería dinámica. Pero no me queda del todo claro porque...</div>
<div><br></div><div>Según yo lo veo es imposible que los datos se carguen en las mismas direcciones en cada ejecución aún siendo virtuales, no hay nada que garantice [creo yo] que los va a encontrar libre. Entonces de que se puede valer un programador para hurgar  en la memoria de otro programa. Acaso de los socket? no se disculpen si dije barbaridades</div>
<div><br></div><div>Tal vez viendo el fuente me pierda más porque no soy experto pero ni siquiera es un proyecto abierto</div><div><br></div><div>Disculpen lo largo.</div><div><br></div><div><br></div></div><div class="gmail_extra">
<br><br><div class="gmail_quote">El 17 de marzo de 2014, 12:33, Davidson, Steven <span dir="ltr"><<a href="mailto:srd4121@njit.edu" target="_blank">srd4121@njit.edu</a>></span> escribió:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">Hola Yolmer,<div class="gmail_extra"><br><div class="gmail_quote">2014-03-16 23:40 GMT-04:00 Yolmer Rosales <span dir="ltr"><<a href="mailto:yolmer.rosales@gmail.com" target="_blank">yolmer.rosales@gmail.com</a>></span>:<div class="">
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hola lista,<br>
<br>
Hace poco, utilicé un plugin del emulador de la playstation que te<br>
permite buscar y modificar valores cargados en memoria del juego en<br>
pleno funcionamiento, y pensé que tal vez se podía leer cualquier<br>
valor en memoria de la computadora usando punteros y c++.<br>
<br>
Entonces escribí algo como esto:<br>
<br>
int* pos_memoria = (int*) 0xFFFF;<br>
cout << "posición de memoria:    contenido" << endl  << pos_memoria <<<br>
" : " << *pos_memoria << endl;<br>
<br>
para mi sorpresa funcionó....<br></blockquote><div><br></div></div><div>Esto es lo interesante de C/C++. Puedes acceder a cualquier dirección de memoria que se te antoje; el lenguaje te lo permite. Sólo existen unos cuantos lenguajes de programación de alto nivel que permiten el acceso directo a memoria.</div>
<div class="">
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
 pero cuando intenté hacer otras asignaciones arbitrarias de memoria<br>
se acabó la magia y ni hablar del intento de hacer un bucle con 100<br>
posiciones diferentes.<br>
<br>
 Ahora un par de preguntas y otra más<br>
<br>
por qué no puedo leer cualquier parte de la memoria que yo quiera? , y<br>
existe alguna manera de saber las direcciones de memoria que están<br>
siendo usadas por un programa en particular o el propio programa?<br>
<br></blockquote><div><br></div></div><div>Existen varias razones:<br><br></div><div>1. Recuerda que tu programa no se ejecuta directamente, sino mediante el Sistema Operativo. Nuestras aplicaciones siempre estarán a la merced del S.O., quien gestiona los recursos, como la memoria y el tiempo de procesamiento para las aplicaciones.</div>

<div><br></div><div>Hoy día, los SS.OO. no permiten un acceso directo a la memoria, por motivos de seguridad, pero también por motivos de la gestión correcta de la memoria, que es la 2ª razón que te voy a comentar.</div>
<div>
<br></div><div>2. Los SS.OO. actuales usan memoria virtual que se basa en usar direcciones virtuales de memoria. Brevemente, el gestor de memoria virtual convierte las direcciones virtuales a direcciones físicas en memoria. Por esta razón, nuestras aplicaciones no pueden acceder directamente a una dirección de memoria (física), ya que es posible que tal dirección tomada no corresponda a la misma dirección física que indicamos.</div>

<div><br></div><div>Si queremos indicar una dirección de memoria física, tenemos que comunicarnos con el S.O. para permitirnos tal acceso y que no haga la conversión.</div><div class=""><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


El plugin que comente al principio puede escribirse en c++? o tal vez<br>
es de nivel más bajo como ASM?<br>
<br></blockquote><div><br></div></div><div>Sí; se puede hacer en C++ y por supuesto, se puede hacer en ensamblador. La cuestión importante es si C++ nos es más útil que ensamblador para solucionar nuestro problema.</div>
<div><br>
</div><div><br></div><div>Espero que esto aclare las dudas.</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>Steven</div><div><br></div></font></span></div></div></div>
<br>_______________________________________________<br>
Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br></blockquote></div><br></div>