HAL és un entorn integrat per a l'anàlisi de la llista de circuits electrònics digitals, Aquest és un marc integral d'enginyeria inversa i manipulació per netlists a nivell de porta que se centra en l'eficiència, la capacitat d'ampliació i la portabilitat. HAL ve amb un sistema de complements complet que permet introduir funcionalitats arbitràries en el nucli.
L'interessant d'HAL és que permet veure i analitzar el circuit en la GUI i manipular utilitzant scripts de Python. En els scripts, es pot usar la «biblioteca estàndard» adjunta de funcions que implementen operacions de teoria de grafs, útils per a l'enginyeria inversa de circuits electrònics digitals (usant aquestes funcions, es pot detectar heurísticament diversos patrons de disseny i eliminar ofuscacions simples amb un script en diverses línies).
la biblioteca també inclou classes per a la gestió de projectes en l'IDE, que es poden usar a l'desenvolupar complements per a l'anàlisi i la inspecció de connexions. Es proporcionen analitzadors per als llenguatges de descripció de hardware VHDL i Verilog.
Aquest entorn està desenvolupat per diverses universitats alemanyes, Escrit en C ++, Qt i Python i alliberat sota la llicència MIT.
De les seves principals característiques es destaquen les següents:
- Representació gràfica natural dirigida d'elements de netlist i les seves connexions.
- Suport per a biblioteques de portes personalitzades.
- Alt rendiment gràcies a l'nucli C ++ optimitzat
- Modularitat: escrigui els seus propis complements de C ++ per a una anàlisi i manipulació eficient de la llista de xarxes (per exemple, mitjançant algoritmes de gràfics)
- Una GUI rica en funcions que permet la inspecció visual de la llista de xarxes i l'anàlisi interactiu
- Un shell de Python integrat per interactuar explorativamente amb elements de netlist i per interactuar amb complements des de la GUI
Sobre la versió de HAL 2.0.0
Actualment aquest entorn es troba en la seva versió 2.0.0 en la qual els analitzadors VHDL i Verilog van ser millorats, juntament amb el sistema de compilació CMake que actualitzo per utilitzar configuracions basades en objectius.
També es destaca que es va afegir suport per jerarquització i modularització, així com també una vista d'aïllament addicional i un nou sistema de disseny.
Dels altres canvis que s'esmenten d'aquesta nova versió:
- Canvis en el sistema de biblioteca de porta
- BDD reemplaçats amb funcions booleanes
- Canvis importants en la representació interna dels tipus de comporta
- Permet la diferenciació entre LUT, flip-flops, pestells i tipus de comporta combinacional
- En latches i Flip-flops ara es poden especificar entrades seqüencials especials com habilitar, rellotge, configurar i restablir.
- Es van reemplaçar les biblioteques de portes JSON amb arxius de llibertat
- Sistema de complements simplificat
- Biblioteca de igraph inclosa
- Revisió principal de la GUI
Com instal·lar HAL en Ubuntu i derivats?
Per als que estiguin interessats a instal·lar aquest marc d'enginyeria inversa per circuits electrònics, poden fer-ho seguint les instruccions que compartim a continuació.
HAL es pot instal·lar de dues formes en Ubuntu i derivats, la primera d'elles és recolzant-nos de l'repositori de l'aplicació (Vàlid només per a Ubuntu 18.04).
Aquest el podem afegir a el sistema amb ajuda d'una terminal (Podeu obrir amb la drecera de tecles Ctrl + Alt + T) i en ella anem a teclejar les ordres.
Primer anem a afegir de l'repositori amb:
sudo add-apt-repository ppa:sebastian-wallat/hal
Actualitzem els paquets i llista de repositoris amb:
sudo apt-get update
I procedim a realitzar la instal·lació de l'aplicació en el nostre sistema teclejant la següent comanda:
sudo apt install hal-reverse
L'altre mètode d'instal·lació és mitjançant la compilació de l'aplicació en el sistema. Per a això hem de descarregar el codi d'HAL amb ajuda d'una terminal.
Primer anem a teclejar:
git clone https://github.com/emsec/hal.git && cd hal
Ara instal·larem les dependències necessàries:
./install_dependencies.sh
I procedim a realitzar la compilació de el codi amb:
mkdir build && cd build cmake .. make
Ja acabada la compilació, procedim a realitzar la instal·lació amb:
make install
Finalment poden consultar la documentació i la resta d'informació a l'respecte de HAL en el següent enllaç.