Püüan luua jämedakoeline kõnegraafiku, mis põhineb mõnel x86 32-bitise platvormi binaarselt demonteeritud koostekoodil.
Täpset on väga raske genereerida Kõnegraafik põhineb asm-koodil, mõeldes erinevatele kaudse juhtimise voo ülekannetele, nii et praegu kaalun ainult otsese juhtimise voo ülekandmist .
Nii et kõigepealt proovin tuvastada function
(alguse ja lõpu aadressid) demonteeritud koostekoodis eemaldatud binaarsest versioonist x86, 32bit.
Praegu on minu plaan kuidagi selline:
Mis puutub algusaadressidesse, siis võiksin konservatiivselt arvata, et mõni koostekood näeb välja selline:
push% ebp
tähistab algusaadressi funktsiooni.
ja võib-olla skannin kogu probleemi, tuvastades kogu käsu call
sihtkohaga, võtke arvesse nende funktsioonikõne sihtkohti, kuna kogu funktsioon algab aadressiga
Probleemid on järgmised:
-
s mõnda binaarselt määratletud funktsiooni ei pruugita kunagi kutsuda.
-
osa
kõne
on optimeeritud kuijump
kompilaatori poolt (mõeldes saba rekursiivsele kõnele)
Lõpp-aadressi osas muutuvad asjad keerulisemaks, kuna ühes funktsioonis võib olla mitu ret
...