Red de conocimiento informático - Computadora portátil - ¿Dónde está el ranking de tarjetas gráficas de 2019?

¿Dónde está el ranking de tarjetas gráficas de 2019?

No hay productos brillantes en el mercado de nivel básico y nadie parece haber mencionado el GT1030 en línea. AMD también está promocionando activamente sus modelos de gama media a baja, como RX550/RX560D. Se recomienda a los usuarios con un presupuesto bajo que utilicen directamente la tarjeta gráfica central (APU o procesador Intel) que viene con la CPU o compren directamente una tarjeta gráfica de segunda mano. Para tarjetas gráficas de segunda mano, puede considerar la GTX750Ti/660. /950/960.

El RX580 (2048SP) es definitivamente la primera opción para el mercado de mil yuanes de gama media. No hace falta decir que los juegos de Tencent son generalmente negros, especialmente los de CF. Todavía se recomienda considerar GTX1050Ti /1060. La tarjeta gráfica RX590 de AMD es esencialmente la versión oficial overclockeada de la RX580, que no es muy rentable. La versión pura del RX580 (2304SP) ahora tiene poco más de 1300 y la memoria de video es de 8 GB.

Los competidores directos de la tarjeta gráfica RTX2060 recientemente lanzada son GTX1070 y GTX1070Ti. En términos de rendimiento, según múltiples revisiones, generalmente se acepta que el rendimiento de RTX2060 está entre GTX1070 y GTX1070Ti, más cerca de GTX1070Ti. . En términos de precio, entre las "Ediciones Mendigos" de Tmall, la más asequible es el RTX2060 de ASL, que sólo cuesta 2.399 yuanes. Otros modelos como el Yingzhong Black Gold Supreme Edition cuestan generalmente alrededor de 2.699 yuanes.

上篇: ¿Qué tal los efectos de sonido panorámicos en 3D? 下篇: ¿Qué son la inyección de DLL, la inyección de método de entrada, la inyección de controlador y Harari? La inyección del método de entrada utiliza archivos de biblioteca de enlace de datos DLL. Puede entenderlo simplemente así: desea modificar algo, luego escribir un programa, guardar el contenido y las funciones a modificar en una DLL y luego inyectarlo en el módulo de proceso del método de entrada. Mientras se ejecuta el método de entrada, su función siempre permanecerá ejecutándose para lograr su propósito de modificar algo. En cuanto a la inyección del controlador del sistema, debería ser un programa que asocie sus propios complementos con el archivo sys del controlador. Los controladores tienen permisos relativamente altos. Muchos controladores funcionan en el nivel ring0 y los controladores se cargan antes que el software de seguridad en el sistema operativo porque funcionan en el nivel ring3. La llamada inyección de DLL consiste en colocar una DLL en el espacio de direcciones de un proceso para que se convierta en parte del proceso. Para implementar la inyección de DLL, primero debe abrir el proceso de destino. Edite este ejemplo hRemoteProcess = OpenProcess( PROCESS_CREATE_THREAD | // Permitir la creación remota de subprocesos PROCESS_VM_OPERATION | // Permitir operaciones de máquina virtual remota PROCESS_VM_WRITE, // Permitir que la máquina virtual remota escriba FALSE, dwRemoteProcessItem = OpenProcess( PROCESS_CREATE_THREAD | // Permitir que la máquina virtual remota write FALSE, dwRemoteProcessItem) dwRemoteProcessId ) Debido a que necesitamos escribir en el espacio de direcciones de memoria del proceso remoto y crear el subproceso remoto más tarde, debemos aplicar permisos suficientes (PROCESS_CREATE_THREAD, VM_OPERATION, VM_WRITE). Si no se puede abrir el proceso, futuras operaciones serán imposibles. Una vez abierto el proceso, puede crear un hilo remoto, pero no se preocupe, primero piense en la función del hilo de este hilo remoto. Nuestro objetivo es inyectar una DLL, que sabemos que se puede cargar en el espacio de direcciones del proceso usando LoadLibrary. Por lo tanto, naturalmente pensamos que si podemos llamar a LoadLibrary en el proceso de destino, ¿no podemos cargar la DLL en el espacio de direcciones del proceso de destino? ¡Así es! Eso es todo. Aquí se utiliza un subproceso remoto. La función del subproceso remoto creado es LoadLibrary y el parámetro es el nombre del archivo de la DLL que se va a inyectar. (Debe pensarlo usted mismo aquí. Tenga en cuenta que la función de subproceso ThreadProc y la función LoadLibrary son muy similares, con el mismo valor de retorno y la misma cantidad de parámetros). Hay otra pregunta: ¿dónde está la dirección de la función LoadLibrary? Tal vez usted diga, esto es simple, se puede derivar GetProcAddress. Entonces salió el código. char *pszLibFileRemote="my.dll"; PTHREAD_START_ROUTINE pfnStartAddr = (PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("Kernel32"), "LoadLibraryA"); No olvide que este es un hilo remoto, no en su proceso, y los datos señalados por pszLibFileRemote están en su proceso. Cuando llega al proceso de destino, no sabe a dónde apunta este puntero. la dirección pfnStartAddr también llega al proceso de destino. No estoy seguro de qué es, no estoy seguro de si desea LoadLibraryA.