Este proyecto nace con el objetivo de desarrollar una herramienta ligera, pero útil. La razón es que los editores hexadecimales existentes tienen algunas limitaciones diferentes (por ejemplo, demasiadas dependencias, falta de características de coloración hexadecimales, etc.).
Este proyecto está basado en los motores qhexedit2, capstone y keystone. Nuevas características podrían ser añadidas en el futuro, PRs son bienvenidos.
Características
- Cargador de Chunks – Se utiliza para cargar sólo una parte de los archivos grandes sin agotar la memoria (utiliza alt + flechas izquierda/derecha para moverte entre los Chunks). Ten en cuenta que en el modo Chunks, todas las operaciones (por ejemplo, la búsqueda) se aplican sólo al chunk actual, excepto la de guardar el archivo (se guarda todo el archivo). Sin embargo, cada vez que edites un chunk, guárdalo antes de pasar a otro chunk, de lo contrario perderás los cambios.
- Buscar y reemplazar (UTF-8, HEX, regex, búsqueda inversa soportada) [CTRL + F]
- Salida coloreada (espacios en blanco, caracteres ASCII, 0xFF, UTF-8 y bytes NULL tienen colores diferentes)
- Interpretar los bytes seleccionados como enteros, long, unsigned long [CTRL + B]
- Copiar y pegar [CTRL + C y CTRL + V]
- Copiar los caracteres unicode seleccionados [CTRL + Espacio]
- Poner a cero todos los bytes seleccionados [Suprimir o CTRL + D]
- Deshacer y rehacer [CTRL + Z y CTRL + Y]
- Arrastrar y soltar (Sugerencia: arrastrar y soltar dos archivos para diferenciarlos)
- Sobrescribir el mismo archivo o crear uno nuevo [CTRL + S]
- Ir al desplazamiento [CTRL + G]
- Modo de inserción soportado para insertar nuevos bytes en lugar de sobrescribir el existente [INS]
- Crear nuevas instancias [CTRL + N]
- Visor de texto básico para el texto seleccionado [CTRL + T]
- Recargar el archivo actual [F5]
- Comparar dos archivos diferentes a nivel de bytes
- Tabla binaria navegable (ver más adelante para más detalles) [F1]
- Convertidor de números Hex – Dec [F2]
- Escape de String hexadecimales (por ejemplo, de 010203 a \x01\x02\x03) [F3]
- Motor de concordancia de patrones (ver más adelante para más detalles)
- Desensamblador basado en el motor Capstone [F4]
- Ensamblador basado en el motor Keystone [F4]
- Vista de bytes con zoom (CTRL + Arriba/Abajo o CTRL + -/+)
- Atajos para todas estas funciones
Motor de Coincidencia de Patrones
Fhex puede cargar al inicio un archivo de configuración (desde ~/fhex/config.jso
n) en formato JSON con una lista de cadenas o bytes para resaltar y un comentario/etiqueta para añadir cerca de las coincidencias.
Ejemplos:
{
"PatternMatching":
[
{
"string" : "://www.",
"color" : "rgba(250,200,200,50)",
"message" : "Found url"
},
{
"bytes" : "414243",
"color" : "rgba(250,200,200,50)",
"message" : "Found ABC"
}
]
}
Para activar la coincidencia de patrones pulsa CTRL + P Al final, Fhex mostrará también una lista de desplazamientos con todas las referencias de los resultados. Nota: Las etiquetas con comentarios se añaden sólo si la ventana está maximizada, si las etiquetas no se muestran correctamente, por favor, intenta ejecutar la coincidencia de patrones de nuevo.
Gráfico Binario
Fhex tiene la característica de graficar el archivo binario cargado (Nota: Para compilar el proyecto, ahora se necesita también qt5-charts
instalado en el sistema). El rango del eje y está entre 0 y 255 (en hexadecimal 0x0 y 0xff, es decir, los valores de los bytes). El rango del eje x está entre 0 y el tamaño del archivo.
El gráfico traza los valores de los bytes del archivo binario y te permite centrarte sólo en las secciones relevantes. Por ejemplo, si en un archivo binario hay un área llena de bytes nulos, puedes detectarlo fácilmente en el gráfico.
https://github.com/echo-devim/fhex