BinDiff GUI does not show merged ranges in the correct order
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 38/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- java
- Área
- desktop, reverse-engineering
Línea de trabajo
Reproduce el problema de ordenación con el report.zip adjunto y la vista del grafo de flujo de la GUI de BinDiff, utilizando la configuración de IDA Pro descrita. Rastrea cómo la GUI ordena las instrucciones después de que el backend las proporciona; la tarea estará terminada cuando las dos instrucciones mov aparezcan antes de la instrucción ldp en la función mostrada.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Describe the bug
BinExport will merge basic blocks on unconditional branches, however if these blocks are not in increasing order of address, the UI will simply show the instructions in completely the wrong order. This can cause problems in lots of programs, but specifically causes major issues when combined with plugins like FunctionInliner that add unconditional branches to new segments.
To Reproduce
I have attached (report.zip) two programs to diff against to demonstrate the issue. The programs are compiled with: cc -o a -O0 a.S. If you diff them with BinDiff in IDA and compare the flow graphs in the BinDiff GUI, you will see that the following instructions appear at the end of the function, instead of their correct place before the ret:
mov x3, #0x43
mov x4, #0x44
Expected behavior
These two mov instructions should appear before the ldp x29, x30, [sp], 16 instruction. When the BinDiff backend iterates over the instructions in this function from BinExport, it does indeed iterate over it in the correct order, it is just the GUI that incorrectly sorts the instructions rather than leaving them in the same order from the backend.
Screenshots
Environment (please complete the following information):
- OS and version: Windows 11
- Locale: British English
- Disassembler and version: IDA Pro 8.4
Additional context
N/A
- Lenguaje dominante
- Java
- Estrellas
- 3.2k
- Forks
- 240
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de google/bindiff
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
question
Dificultad 3/5 1-2 días Aptitud para principiantes 42/100
-
ida pro 9.1 i64 db diff failsAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
-
[Bug] Error when buildAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 55/100
-
[Bug] Protobuf message size limit of 2GB exceeded during final stage of diffing large binariesAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 15/100
Todos los issues de google/bindiff
Issues similares
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 1 día
-
ci-failure-cause test-failure
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
nextcloud/notes-android#3367 ·
Los mantenedores suelen responder en 1 día
-
Feature
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
MuntashirAkon/AppManager#2058 ·
-
SarifLogger: artifactLocation.uri is not properly encoded for file names containing '#', '?', or '%'Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
checkstyle/checkstyle#21721 ·
Los mantenedores suelen responder en 1 día