2017-02-13 1 views
0

J'ai des fichiers binaires, chacun d'eux contient des instructions d'une fonction (peut-être un peu plus à la fin). Le début du fichier est également le point de départ de la fonction.Dans angr, comment charger et analyser un fichier binaire qui contient uniquement des instructions de fonction, pas un fichier ELF

Ces fichiers ont été extraits d'un fichier ELF. La plate-forme est arm64. Alors, comment charger et analyser ce fichier en utilisant angr?


L'objectif:

Chaque fonction a une, la cible "instruction case commutateur" est d'obtenir tous les intergers de l'expression de cas.

Exemple (code C):

void func1(int cmd){ 
    switch (cmd) { 
    case 1: 
     xxxx 
     break; 
    case 10: 
     yyyy; 
     break; 
    } 
} 

Résultat: 1,10

Répondre

0

ma suggestion est de ne pas utiliser RGA dans ce cas parce que vous pouvez extraire tous les cas, d'une manière beaucoup plus facile par exemple en utilisant r2pipe. J'ai créé un exemple simple pour vous et j'espère que cela aide.

code C

int main(int argc, char* argv[]) { 

    switch(argc) { 
     case 1: 
      break; 
     case 2: 
      break; 
     default: 
      break; 
    } 

} 

script python

import r2pipe 

r2 = r2pipe.open("switch") 

r2.cmd("aa") 

r2.cmdj('s main') 
instructions = r2.cmdj('pdfj') 

for instruction in instructions['ops']: 
    if (instruction["type"] == "cmp"): 
     print instruction["ptr"] 

de sortie:

r2pipe.cmdj.Error: No JSON object could be decoded 
1 
2 

Je ne sais pas ce que j'avais ce message d'erreur au début de la sortie.

HTH