RevokeMsgPatcher es una herramienta de código abierto diseñada para plataformas Windows que utiliza técnicas de edición hexadecimal y parcheo binario. Su objetivo principal es interceptar y anular la instrucción de "retirada de mensaje" en clientes de mensajería populares como WeChat, QQ y TIM, permitiendo que el contenido permanezca visible para el receptor a pesar de que el emisor intente eliminarlo.
1. Fundamentos Técnicos del Parcheo Binario
La aplicación no funciona como un plugin convencional, sino que modifica directamente los archivos de biblioteca de enlace dinámico (DLL) de las aplicaciones objetivo. El proceso se basa en la identificación de firmas de bytes específicas que controlan el flujo lógico de la interfaz cuando se recibe un paquete de datos de tipo revokemsg.
Modificación de Instrucciones de Control
En el nivel de ensamblador, la decisión de ocultar un mensaje suele depender de una instrucción de salto condicional. RevokeMsgPatcher localiza estas instrucciones y las reemplaza para alterar el comportamiento del software:
- Original: Una instrucción
JE(Jump if Equal) oJZ(Jump if Zero) que salta a la rutina de borrado si se recibe la señal de revocación. - Parcheada: Se sustituye por un
JMP(Salto incondicional) hacia la rutina de visualización normal o se rellena con instruccionesNOP(No Operation) para ignorar la orden de eliminación.
// Representación conceptual del cambio en el flujo de ejecución
Instrucción Original: 74 15 (JE 0x15) -> Evalúa y borra el mensaje.
Instrucción Modificada: EB 15 (JMP 0x15) -> Salta la lógica de borrado.
2. Funcionalidades Principales
- Prevención de Revocación: Intercepta comandos de borrado para texto, imágenes y archivos.
- Soporte Multi-instancia: Modifica los objetos
Mutexdel sistema para permitir la ejecución simultánea de múltiples cuentas de un mismo cliente de mensajería. - Compatibilidad de Versiones: Utiliza una base de datos de "offsets" (desplazamientos) que se actualiza para coincidir con las diferentes versiones de los archivos
WeChatWin.dllo similares.
3. Arquitectura de la Configuración
La herramienta utiliza archivos de configuración en formato JSON para definir los puntos de entrada y los cambios necesarios en cada versión del software. Un esquema típico de parche sigue esta estructura:
{
"target_file": "WeChatWin.dll",
"app_version": "3.9.x.xx",
"checksum_original": "5f4dcc3b5aa765d61d8327deb882cf99",
"patches": [
{
"address_offset": 3452910,
"patch_data": [235]
}
]
}
4. Procedimiento de Implementación
Para aplicar los cambios de manera efectiva en un entorno Windows, se deben seguir estos pasos técnicos:
- Elevación de Privilegios: Ejecutar la herramienta con permisos de Administrador, ya que la modificación de archivos en
C:\Program Filesrequiere acceso de escritura a nivel de sistema. - Cierre de Procesos: Asegurarse de que el cliente de mensajería no esté en ejecución para evitar errores de "archivo en uso" (File Lock).
- Identificación de Ruta: El software localiza automáticamente la ruta de instalación mediante la lectura de claves en el Registro de Windows (
HKEY_CURRENT_USER\Software\Tencent\WeChat). - Copia de Seguridad: Antes de modificar el binario, se genera un archivo con extensión
.bakpara permitir la reversión en caso de inestabilidad. - Aplicación del Parche: Se sobrescriben los bytes específicos en el desplazamiento calculado.
5. Automatización mediante Scripts
Para administradores de sistemas o usuarios avanzados, es posible automatizar el proceso de parcheo tras una actualización del cliente mediante scripts de PowerShell:
# Script básico de despliegue silencioso
$patcher_exec = "C:\Bin\RevokeMsgPatcher.exe"
$app_target = "wechat"
if (Test-Path $patcher_exec) {
Start-Process $patcher_exec -ArgumentList "--action patch", "--target $app_target", "--silent" -Verb RunAs
Write-Host "Proceso de parcheo iniciado para $app_target"
}
6. Resolución de Problemas Comunes
- Falsos Positivos de Seguridad: Debido a que la herramienta realiza edición de binarios de terceros, las soluciones heurísticas de antivirus pueden marcar el ejecutable. Se recomienda verificar el hash SHA256 del código fuente.
- Desajuste de Versión: Si el cliente de mensajería se actualiza, los offsets cambian. Es necesario esperar a que la base de datos de firmas de RevokeMsgPatcher se actualice para el nuevo
Builddel software. - Requisitos del Entorno: Requiere .NET Framework 4.5.2 o superior para gestionar la interfaz y las operaciones de E/S de archivos.
7. Consideraciones sobre el Almacenamiento
A diferencia de los métodos de "hooking" en memoria, el parcheo binario es persistente. Esto significa que los mensajes recibidos se guardarán en la base de datos local (SQLite) del cliente de mensajería sin la marca de "mensaje eliminado", garantizando la integridad de los registros históricos para auditorías o consultas personales.