Red de conocimiento informático - Problemas con los teléfonos móviles - Programación de juegos de guerra

Programación de juegos de guerra

Síntoma: cuando abre cualquier programa desde el escritorio o el menú de inicio, aparecerá un mensaje de error: "0x..." hace referencia a la memoria "0x00000000" y la instrucción no se puede "leer". Los puntos suspensivos representan un valor variable. Simplemente abra el programa desde "Ejecutar".

Método de procesamiento: ejecute regedit para ingresar al registro. En el gancho de ejecución HKEY_local_machine\software\Microsoft\Windows\Current version\Explorer\shellee, debe haber solo un valor de clave normal "{ aeb 6717e -7e. 19-11d 0-97ee-00 c 04 FD 91972 }", los demás deben eliminarse (por supuesto, el valor de clave predeterminado no debe eliminarse).

Explicación y análisis:

Al ejecutar algunos programas, a veces aparecerá un mensaje de error de memoria y luego el programa se cerrará.

La instrucción "0x" hace referencia a la memoria "0x". La memoria no se puede "leer".

La instrucción 0x 'se refiere a la memoria 0x' y no se puede 'escribir'

Creo que todos han visto la situación en el mundo, y algunos internautas incluso dijeron que debido a esta frecuente error Si no está satisfecho con el mensaje, debe reinstalar el sistema repetidamente. Creo que los usuarios normales no deberían poder entender esos complicados códigos hexadecimales.

Hay muchas razones para este fenómeno. Una es que hay un problema con el hardware, es decir, la memoria, y la otra es que hay muchos problemas con el software.

Primero: hablemos primero del hardware:

En términos generales, el hardware de la computadora no es fácil de romper. Los problemas de memoria son poco probables (a menos que su memoria sea realmente un montón de sin nombres), los aspectos principales son: 1. La memoria está rota (principalmente memoria de segunda mano), 2. Usar memoria con problemas de calidad, 3. Hay demasiado polvo en la parte dorada de la memoria conectada a la placa base. 4. Utilizar memorias de diferentes marcas y capacidades, dando lugar a incompatibilidad. 5. Problemas de disipación de calor causados ​​por el overclocking. Puede utilizar el software MemTest para verificar la memoria, lo que puede verificar minuciosamente la estabilidad de la memoria.

En segundo lugar, si no es así, solucione el problema del software.

Hablemos primero del principio: hay un lugar en la memoria que se utiliza para almacenar datos llamado búfer. Cuando un programa coloca datos en un búfer, necesita una "función" proporcionada por el sistema operativo para su aplicación. Si la asignación de memoria es exitosa, la función devolverá la dirección del área de memoria recién abierta a la aplicación, y la aplicación puede usar esta memoria a través de esta dirección. Esto es "asignación de memoria dinámica", y la dirección de memoria también es el "cursor" en la programación. La memoria no siempre está disponible y es inagotable y, a veces, la asignación de memoria falla. Cuando la asignación falla, la función del sistema devuelve el valor 0. En este punto, el valor de retorno "0" ya no representa un cursor recién habilitado, sino una notificación enviada por el sistema a la aplicación que indica que se ha producido un error. Como aplicación, debes verificar si el valor de retorno es 0 después de cada aplicación de memoria. Si es así, significa que hay un fallo y es necesario tomar algunas medidas para salvarlo, lo que mejora la "robustez" del programa. Si la aplicación no verifica este error, asumirá que este valor es un cursor libre asignado a ella en función de la "inercia mental" y continuará usando esta memoria en ejecuciones posteriores. El área de almacenamiento de direcciones 0 reales almacena la "tabla de descriptores de interrupción" más importante en el sistema informático, que las aplicaciones no pueden utilizar en absoluto. En un sistema operativo sin un mecanismo de protección (como DOS), escribir datos en esta dirección provocará un bloqueo inmediato. En un sistema operativo robusto, como Windows, esta operación será capturada inmediatamente por el mecanismo de protección del sistema. , el sistema operativo Las aplicaciones incorrectas se cerrarán a la fuerza para evitar que sus errores se expandan. En este momento, aparecerá un error de que la memoria no se puede "leer", lo que indica que la dirección de memoria a la que se hace referencia es "0x00000000". Hay muchas razones por las que falla la asignación de memoria, como memoria insuficiente, discrepancia en la versión de la función del sistema, etc. Por lo tanto, este tipo de falla en la asignación es más común después de que el sistema operativo se ha utilizado durante mucho tiempo, se han instalado una variedad de aplicaciones (incluidos programas de virus que se "instalaron" inadvertidamente) y una gran cantidad de parámetros y sistemas del sistema. Los archivos han sido modificados.

En aplicaciones que utilizan asignación dinámica, a veces sucede que el programa intenta leer o escribir una memoria que "debería estar disponible", pero por alguna razón, el cursor disponible esperado falla.

Puede ser que "se haya olvidado" de solicitar la asignación al sistema operativo, o puede ser que el propio programa haya cancelado en algún momento esta memoria, "no haya prestado atención", etc. El sistema recupera la memoria no registrada y sus derechos de acceso ya no pertenecen a la aplicación. Por lo tanto, las operaciones de lectura y escritura también activarán el mecanismo de protección del sistema. El único resultado final de un programa que intenta "violar la ley" es. será cancelado por la operación y todos los recursos serán recuperados. ¡Las leyes del mundo de la informática siguen siendo mucho más efectivas y estrictas que las de los humanos! Situaciones como ésta son errores en el propio programa y, a menudo, puedes reproducir el error en una secuencia específica de operaciones. El cursor no válido no es necesariamente 0, por lo que la dirección de memoria en el mensaje de error no es necesariamente "0x00000000", pero también pueden ser otros números aleatorios.

Antes que nada, sugerencias:

1. Compruebe si hay troyanos o virus en el sistema. Para controlar el sistema, estos programas a menudo modifican el sistema de forma irresponsable, provocando anomalías en el sistema operativo. Siempre debe fortalecer su conciencia sobre la seguridad de la información y nunca sentir curiosidad por los programas ejecutables de origen desconocido.

2. Actualice el sistema operativo, permita que el instalador del sistema operativo copie la versión correcta de los archivos del sistema y corrija los parámetros del sistema. A veces, el propio sistema operativo también tiene errores, así que tenga cuidado al instalar el programa de actualización oficial.

3. Intente utilizar la última versión oficial de la aplicación. Las versiones Beta y las versiones de prueba tendrán errores.

4. Elimine y vuelva a crear los archivos en la carpeta Winnt\System32\Wbem\Repository: haga clic derecho en "Mi PC" en el escritorio y haga clic en "Administrar". En Servicios y aplicaciones, haga clic en Servicios y luego cierre y detenga el servicio Instrumental de administración de Windows. Elimine todos los archivos en la carpeta Winnt\System32\Wbem\Repository. (Haga una copia de seguridad de estos archivos antes de eliminarlos). Abra Servicios y aplicaciones, haga clic en Servicios, luego abra e inicie el servicio Instrumental de administración de Windows. Cuando se reinicia el servicio, estos archivos se volverán a crear según la información proporcionada en la siguiente clave de registro: HKEY_Local_Machine\Software\Microsoft\WBEM\CIMOM\autorecovermofs.

-

Este tipo de memoria no puede ser una solución de "lectura".

Al ejecutar algunos programas, a veces aparecerá un mensaje de error de memoria y luego el programa cerrará.

La instrucción "0x" hace referencia a la memoria "0x". La memoria no se puede "leer".

La memoria 0x a la que hace referencia la instrucción 0x no se puede "escribir".

Me pregunto si alguna vez has experimentado una ruptura así. (El contenido después de 0x puede ser diferente).

En general, este fenómeno tiene muchos aspectos. Una es que hay un problema con el hardware, es decir, la memoria, y la otra es que hay muchos problemas con el software.

1. Provocado por una vulnerabilidad de desbordamiento del búfer de Microsoft IE

2. Los conflictos en el uso de la memoria o de las direcciones de memoria virtual llevan a la necesidad de asignar una determinada dirección de memoria para el funcionamiento del sistema. programa. Cuando finaliza un programa, se libera espacio para que lo utilicen nuevos programas. win es un sistema multitarea. A veces, antes de que finalice el programa y comience una nueva tarea, ¿cuánta memoria o memoria virtual necesitamos para asegurarnos de que las tareas se ejecuten al mismo tiempo? Puede ser que win no haga un buen trabajo con este problema, por lo que este error ocurre con frecuencia. Este error generalmente ocurre después de ejecutar software o multimedia de gran tamaño.

3. Los módulos de memoria inferiores también tendrán este problema.

En general, los problemas de memoria son poco probables. Los aspectos principales son: el módulo de memoria está roto, la calidad de la memoria es problemática y hay dos marcas diferentes de memoria con diferentes capacidades, que también son propensas a la incompatibilidad. Al mismo tiempo, asegúrese de prestar atención a los problemas de disipación de calor, especialmente después del overclocking. Puede utilizar el software MemTest para verificar la memoria, lo que puede verificar minuciosamente la estabilidad de la memoria.

Este problema puede ocurrir si tienes memoria dual y se mezclan chips de memoria de diferentes marcas o si compras memoria de segunda mano. En este momento, debe verificar si hay algún problema con la memoria o si es incompatible con otro hardware.

4. Vulnerabilidad en el sistema Microsoft Windows.

Windows especifica la dirección de memoria 0X00000000 a 0X0000ffff como rango de direcciones para asignar punteros nulos.

Si un programa intenta acceder a esta dirección, se considera un error. Los programas escritos en C/C++ generalmente no realizan una verificación estricta de errores. Cuando se usa malloc para asignar memoria y no hay suficiente espacio de direcciones para la asignación, se devolverá un puntero nulo. Sin embargo, el código no verifica este error y cree que la asignación de dirección se realizó correctamente, por lo que se accede a la dirección 0X00000000, por lo que se produce una infracción de acceso a la memoria y se finaliza el proceso.

Cuando se utilizan caracteres ASCII para rellenar archivos pif, se producen las siguientes situaciones:

Los archivos pif ilegales (rellenados con caracteres ascii 'x') deben tener al menos 369 bytes. De esta manera, el sistema lo considerará un archivo pif legal, lo mostrará como un ícono pif y tendrá programas, fuentes, memoria, pantalla y otros contenidos en sus propiedades. Además, al mirar la página "Programa" de las propiedades, el error del programa no aparece, incluso si el tamaño del archivo que no es pif es de 369 bytes, incluso si es de 370 bytes. Al visualizar la página de propiedades "Programa" de un archivo PIF ilegal de más de 369 bytes, Explorer dará un error y le preguntará: "* * *" las instrucciones hacen referencia a la memoria "* * *". No se puede "leer" la memoria. El problema radica en las 16 direcciones binarias del archivo pif:

0x 00000181[0x 87] 0x 0000182[0x 005438+0] y

0x 00000231[0x C3] 0x 00000232 [0x 02]

Incluso si es un archivo pif legal, cambiar cualquiera de estos cuatro lugares provocará un error en el programa. Sólo

cambie los valores de 0x00000181 y 0x00000182 a [0xff], otras direcciones se cambiarán a voluntad.

No se producirán errores.

5. Es posible que el servicio Apache no se instale e inicie completamente correctamente. Cambie OracleOraHomeXXHTTPServer en el servicio para detenerlo.

6. La aplicación no puede verificar la asignación de memoria.

Cuando un programa necesita una porción de memoria para almacenar datos, necesita llamar a la "función" proporcionada por el sistema operativo para aplicarla. Si la asignación de memoria es exitosa, la función devolverá la dirección del área de memoria recién abierta a la aplicación, y la aplicación puede usar esta memoria a través de esta dirección. Esto es "asignación de memoria dinámica" y la dirección de memoria también es un "puntero" en la programación.

La memoria no siempre está disponible y es inagotable y, en ocasiones, la asignación de memoria falla. Cuando la asignación falla, la función del sistema devuelve el valor 0. En este punto, el valor de retorno "0" ya no indica un puntero recién habilitado, sino una notificación enviada por el sistema a la aplicación indicando que se ha producido un error. Como aplicación, debes verificar si el valor de retorno es 0 después de cada aplicación de memoria. Si es así, significa que hay un fallo y es necesario tomar algunas medidas para salvarlo, lo que mejora la "robustez" del programa.

Si la aplicación no comprueba este error, pensará que este valor es un puntero gratuito que se le ha asignado en función de la "inercia del pensamiento" y seguirá utilizando esta memoria en operaciones posteriores. El área de almacenamiento de direcciones 0 reales almacena la "tabla de descriptores de interrupción" más importante en el sistema informático, que las aplicaciones no pueden utilizar en absoluto. En un sistema operativo sin mecanismo de protección (como DOS), escribir datos en esta dirección provocará un bloqueo inmediato, mientras que en un sistema operativo robusto, como Windows, esta operación será capturada inmediatamente por el mecanismo de protección del sistema y el resultado. es la operación El sistema cerrará forzosamente la aplicación errónea para evitar que el error se expanda. En este momento, se producirá el error de "memoria de escritura" mencionado anteriormente, lo que indica que la dirección de memoria a la que se hace referencia es "0x00000000".

Hay muchas razones por las que falla la asignación de memoria, como memoria insuficiente, discrepancia en la versión de la función del sistema, etc. Por lo tanto, este tipo de error de asignación es más común después de que el sistema operativo se ha utilizado durante mucho tiempo, se instalan una variedad de aplicaciones (incluidos programas de virus instalados involuntariamente) y se cambia una gran cantidad de parámetros y archivos del sistema.

7. Debido a un error propio de la aplicación, hace referencia a un puntero de memoria anormal.

En aplicaciones que utilizan asignación dinámica, a veces sucede que el programa intenta leer o escribir una memoria que "debería estar disponible", pero por alguna razón, el puntero disponible esperado ha fallado.

Puede ser que "se haya olvidado" de solicitar la asignación al sistema operativo, o puede ser que el propio programa haya cancelado en algún momento esta memoria, "no haya prestado atención", etc. El sistema recupera la memoria no registrada y sus derechos de acceso ya no pertenecen a la aplicación. Por lo tanto, las operaciones de lectura y escritura también activarán el mecanismo de protección del sistema. El único resultado final de un programa que intenta ser "ilegal" es ser. La operación se detendrá y se recuperarán todos los recursos. ¡Las leyes del mundo de la informática siguen siendo mucho más efectivas y estrictas que las de los humanos!

Situaciones como ésta son errores en el propio programa y, a menudo, puedes reproducir el error en una secuencia específica de operaciones. Los punteros no válidos no siempre son 0, por lo que la dirección de memoria en el mensaje de error no es necesariamente "0x00000000", sino que también pueden ser otros números aleatorios.

-

Si el mensaje de error anterior aparece con frecuencia en el sistema, las siguientes sugerencias pueden ser útiles:

1. el sistema. Para controlar el sistema, estos programas a menudo modifican el sistema de forma irresponsable, provocando anomalías en el sistema operativo. Siempre debe fortalecer su conciencia sobre la seguridad de la información y nunca sentir curiosidad por los programas ejecutables de origen desconocido.

2. Actualice el sistema operativo para que el programa de instalación del sistema operativo pueda copiar la versión correcta de los archivos del sistema y los parámetros correctos del sistema. A veces, el propio sistema operativo también tiene errores, así que tenga cuidado al instalar el programa de actualización oficial.

3. Pruebe nuevas versiones de la aplicación.

4. Elimine y vuelva a crear los archivos en la carpeta Winnt\System32\Wbem\Repository:

Haga clic derecho en Mi PC en el escritorio y haga clic en Administrar.

En Servicios y aplicaciones, haga clic en Servicios y luego cierre y detenga el servicio Instrumental de administración de Windows.

Elimine todos los archivos en la carpeta Winnt\System32\Wbem\Repository. (Haga una copia de seguridad de estos archivos antes de eliminarlos).

Abra Servicios y aplicaciones, haga clic en Servicios, luego abra e inicie el servicio Instrumental de administración de Windows. Cuando se reinicie el servicio, estos archivos se volverán a crear según la información proporcionada en la siguiente clave de registro:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\CIMOM\Autorecover MOFs

Lo haré Analícelo con algunos ejemplos:

Ejemplo 1: Abra el navegador IE o después de unos minutos, aparecerá la memoria "0x00000000" a la que hace referencia la instrucción "0x70dcf39f". La memoria no se puede "leer". Para finalizar el programa, haga clic en Aceptar. Después de hacer clic en "Aceptar", aparecerá el cuadro de mensaje "Se ha producido un error interno y una ventana que está utilizando está a punto de cerrarse". Después de cerrar este mensaje, el navegador IE también se cierra. Solución: repare o actualice el navegador IE y aplique parches al mismo tiempo. Vi que un método de reparación es la actualización automática de Win2000, es decir, actualizar Win2000 a Win2000. De hecho, este método consiste en restaurar el sistema a su estado inicial. Por ejemplo, si su IE se actualiza a 6.0, será reemplazado por IE5.0 después de la actualización.

Ejemplo 2: haga doble clic en el archivo "AutoRun.exe" en el CD en Windows XP para mostrar la memoria "0x00000078" a la que hace referencia la instrucción "0x77f745cc". No se puede "escribir en la memoria". Para finalizar el programa, haga clic en Aceptar, pero se ejecuta normalmente en Windows 98. Solución: Esto puede ser un problema de compatibilidad del sistema. Para sistemas winXP, haga clic derecho en el archivo "AutoRun.exe", seleccione Propiedades y compatibilidad, seleccione "Ejecutar este programa en modo de compatibilidad" y seleccione "Windows 98/Me". Win2000, si el SP está parcheado, simplemente inicie y ejecute, ingrese: regsvr 32 c:\win nt\app patch\slayer ui.dll. Con un clic derecho también aparecen propiedades y opciones de compatibilidad.

Ejemplo 3: Se produjo un error al cerrar RealOne Gold.

Solía ​​​​ser normal, pero recientemente la memoria "0xffffffff" a la que hace referencia la instrucción "0xffffffff" aparece cada vez que se apaga. Este recuerdo no puede ser una sugerencia de "lectura". Solución: Cuando el método de entrada utilizado es Microsoft Pinyin Input Method 2003 y la barra de idioma está oculta (no hay problema cuando no está oculta), este problema ocurrirá al cerrar RealOne, por lo que puede mostrar la barra de idioma antes de cerrar RealOne o usar cualquier otro. método de entrada como método de entrada actual para resolver este problema.

Ejemplo 4: My hero Super Jieba no se puede jugar después de conectarse. Indica cada vez que la memoria "0xff000011" a la que hace referencia el comando "0x060692f6" (cada cambio) no se puede "leer". Presione "Aceptar" para finalizar el proceso. Solución: intenta reinstalar el héroe Super Jieba. Si se trata de una reinstalación, puede intentar descargar la versión correspondiente del parche desde el sitio web oficial. Todavía no, así que tuve que probar con otro reproductor.

Ejemplo 5: Haz doble clic en el acceso directo del juego. La instrucción "0x77f5cd0" se refiere a la memoria "0xffffffff" y no se puede "leer", lo que genera un error en el programa Client.dat. Solución: reinstale el controlador de la tarjeta gráfica más reciente y luego descargue e instale DirectX9.0.

Ejemplo 6: Un amigo envió un mensaje y apareció un mensaje de error en mi computadora: La memoria "0x00303033" a la que hace referencia el comando "0x772b548f" no se pudo "escribir" y luego QQ cerró sesión automáticamente Luego abrí QQ y descubrí que los diez mensajes que envió fueron algunos mensajes. Solución: este es un código especial enviado por la otra parte mediante QQ BUG.

Si no es así tendremos que reinstalar el sistema.