This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
secure-low-level-programming:capitole:09-utilitare-de-analiza-cod [2018/12/21 10:08] razvan [Symbolic Execution] |
secure-low-level-programming:capitole:09-utilitare-de-analiza-cod [2018/12/21 14:14] (current) razvan [Symbolic Execution] |
||
---|---|---|---|
Line 33: | Line 33: | ||
sudo apt install clang cppcheck splint valgrind | sudo apt install clang cppcheck splint valgrind | ||
</code> | </code> | ||
+ | |||
==== Auditare cod ==== | ==== Auditare cod ==== | ||
Line 47: | Line 48: | ||
scan-build make | scan-build make | ||
</code> | </code> | ||
+ | |||
+ | <note tip> | ||
+ | Ignorați erori legate de fișiere incluse în rezultatul rulării comenzii ''cppcheck''. | ||
+ | </note> | ||
Foarte probabil veți vedea că utilitarele nu depistează multe erori. Multe erori nu pot fi depistate cu utilitare de analiză, ci mai degrabă de un observator uman. | Foarte probabil veți vedea că utilitarele nu depistează multe erori. Multe erori nu pot fi depistate cu utilitare de analiză, ci mai degrabă de un observator uman. | ||
Line 59: | Line 64: | ||
Verificați codul sursă din cadrul directorului folosind utilitarele ''cppcheck'', ''splint'' și ''scan-build''. | Verificați codul sursă din cadrul directorului folosind utilitarele ''cppcheck'', ''splint'' și ''scan-build''. | ||
- | |||
- | <note tip> | ||
- | Pentru a rula ''cppcheck'' și să țină cont de bibliotecile de sistem, folosiți comanda | ||
- | <code> | ||
- | cppcheck --enable=all -I /usr/include/ -I /usr/include/linux/ -I /usr/lib/gcc/x86_64-linux-gnu/5/include/ --check-config main.c | ||
- | </code> | ||
- | Înlocuiți ''main.c'' cu numele fișierului pe care doriți să-l investigați. | ||
- | </note> | ||
==== Valgrind ==== | ==== Valgrind ==== | ||
Line 115: | Line 112: | ||
git clone https://github.com/angr/angr-doc | git clone https://github.com/angr/angr-doc | ||
</code> | </code> | ||
+ | În urma comenzii de mai sus se creează directorul ''angr-doc/''. | ||
- | Testați exemplul din ''examples/strcpy_find'' din repository-ul clonat, exemplu descris și [[https://docs.angr.io/examples#beginner-vulnerability-discovery-example-strcpy_find|aici]]. | + | Testați exemplul din ''angr-doc/examples/strcpy_find'' din exemplu descris și [[https://docs.angr.io/examples#beginner-vulnerability-discovery-example-strcpy_find|aici]] prin rularea comenzii: |
+ | <code> | ||
+ | python solve.py | ||
+ | </code> | ||
+ | Scriptul Python va "exploata" executabilul ''strcpy_find'' folosind execuție simbolică și va obține parola cerută. Parcurgeți scriptul ''solve.py'' pentru o primă perspectivă asupra Angr. Nu e nevoie să înțelegeți, doar să știți că există. | ||