Proceso de núcleo inverso JS

Proceso de núcleo inverso JS:

  • Desde el análisis de solicitudes de red -->
  • Localice dónde se generan los parámetros cifrados -->
  • Deduzca el "código del algoritmo de cifrado JS" del parámetro de cifrado -->
  • Complementar el entorno del navegador -->
  • a la llamada de nodo final;

Este proceso es el meridiano principal de JS inversa y el núcleo de JS inversa Cada paso tiene su propio plan de análisis sistemático, como "ubicar el punto de generación de parámetros de cifrado" , y sus planes incluyen:

  • Buscar parámetros de cifrado
  • Ir a la pila de llamadas a través del iniciador solicitado
  • ubicación de envío de solicitud de punto de interrupción xhr
  • Posición de representación de datos de respuesta de punto de interrupción DOM
  • Ubicación del evento de activación del punto de interrupción del detector de eventos
  • Asignación de objeto de enganche: acceso a atributo de objeto

etc. . . Combinando esta serie de esquemas de análisis para formar un sistema, el objetivo final es: "ubicar el lugar donde se generan los parámetros de cifrado" y luego ingresar al proceso de seguimiento: deducir el "código de algoritmo de cifrado js" de los parámetros de cifrado ;

Para la ingeniería inversa de diferentes sitios web contra el rastreo, tenemos que realizar los primeros tres pasos en persona, y es difícil tener una solución general; los primeros tres pasos requieren que dediquemos tiempo a pulir
y practicar, para que podamos utilícelos libremente para hacer frente a mayores dificultades al contrario de

Sin embargo, el paso de "reponer el entorno del navegador" es bastante especial y existe una solución de transferencia factible. El objetivo final
de este paso es hacer que el "código del algoritmo de cifrado JS" deducido se ejecute correctamente en el entorno del nodo . Hay dos opciones para lograr esto:

  1. Reemplace la lógica del entorno del navegador utilizada en el "código del algoritmo de cifrado JS" ; por ejemplo:
var flag;
if(navigator.userAgent){
    
    
flag=true
} 
替换为 var flag=true;
  • Use js para forjar varios entornos del navegador, como BOM: navigator.userAgent DOM:document.cookie;

Por supuesto, estas dos soluciones se pueden usar en combinación, pero sus defectos aún existen:

  • La dificultad de la primera solución es que es necesario ubicar qué entornos de navegador usa el código antes de realizar el reemplazo de la lógica; y cuando se actualiza la lógica js del sitio web, debe reemplazarse nuevamente. . No se pueden matar diferentes sitios web

  • La dificultad de la segunda solución es que hay demasiados entornos de navegador y demasiados objetos que deben falsificarse, pero cuando hay suficientes complementos, se puede " matar" .

Con el fin de reducir la energía gastada en este paso y mejorar en gran medida la eficiencia del trabajo, elegimos optimizar la segunda solución para lograr el propósito de pasar-matar:
pasar-matar plan : use js para simular un entorno de navegador que tiende a ser perfecto. y deje que el "código de algoritmo de cifrado JS" deducido sea como ejecutarse en un navegador real;
esta solución tiene una gran cantidad de código de ingeniería y necesita usar el "marco complementario del entorno" para organizar varios códigos de entorno del navegador para lograr el efecto final.
"Marco del entorno de finalización a través del tren": explicación detallada del entorno de complemento del navegador en ingeniería inversa JS

Supongo que te gusta

Origin blog.csdn.net/qq_36291294/article/details/127702973
Recomendado
Clasificación