Megpróbálom megszerezni az összes könyvtár függvényhívást, amelyet egy bináris végrehajt a CFG előrendelés-DFT bejárása során. Ilyen módon tudom megszerezni a CFG-t:
import sys, angrimport networkx as nxproj = angr.Project (sys.argv [1], auto_load_libs = False) cfg = proj.analyses.CFG () .graph
Meg tudtam szerezni a CFG-t, és még így is át tudom haladni (Tegyük fel, hogy a megfelelő fő funkció csomópontját kapom):
s = nx.dfs_preorder_nodes (cfg, mainFuncNode) csomópontok = [] try: míg True: nodes.append (ns.next ()), kivéve: pass
Azonban nem teszem nem tudom, hogyan kell lekérni a függvényhívásokat a csomópontokról (ha ténylegesen csinálják). Elolvastam néhány dokumentációt, és csak annyit tudtam előállítani:
n-hez a csomópontokban: ha n .is_simprocedure: print n.to_codenode (). function
A kimenet minden Nincs, és biztos vagyok benne, hogy ez helytelen, mert a bináris néhány I / O műveletet hajt végre. Tehát olyan dolgokra számítok, mint:
-
libc_puts
-
libc_gets
- .. .
Nagyra értékelném, ha tudnál jobb tanácsokat adni nekem.