2017-03-23 1 views
0

J'ai un fichier binaire que j'ai démonte avec objdump comme ceci:Re-assembler le code assembleur de objdump

objdump -Mintel -d mybinary 

Le résultat ressemble à ceci (je ne mettre une partie de celui-ci, l'idée est que vous voir à quoi cela ressemble):

patchme:  format de fichier elf64-x86-64 

Déassemblage de la section .init : 

00000000004003e0 <_init>: 
    4003e0: 48 83 ec 08    sub rsp,0x8 
    4003e4: 48 8b 05 0d 0c 20 00 mov rax,QWORD PTR [rip+0x200c0d]  # 600ff8 <_DYNAMIC+0x1d0> 
    4003eb: 48 85 c0    test rax,rax 
    4003ee: 74 05     je  4003f5 <_init+0x15> 
    4003f0: e8 3b 00 00 00   call 400430 <[email protected]> 
    4003f5: 48 83 c4 08    add rsp,0x8 
    4003f9: c3      ret 

J'ai modifié le code d'assemblage (et les valeurs hexadécimales associées). Je voudrais savoir s'il existe un moyen facile de réassembler ce code en binaire? Comme une commande qui le fait.

Merci!

PS: Je sais que je pouvais convertir chaque hex en binaire et les concaténer ... Mais ce genre de beaucoup de travail :-p

Répondre

1

Vous pouvez utiliser un éditeur hexadécimal ou outil de patch pour appliquer vos modifications à le binaire d'origine (vous pouvez passer l'argument --file-offset à objdump pour qu'il vous indique l'emplacement réel des offsets que vous modifiez).

Bien sûr, vous pouvez toujours supprimer l'adresse et l'hexagone, puis utiliser l'assembleur de votre choix pour réassembler le code, mais vous avez encore la question de savoir comment le corriger dans le binaire d'origine (qui contient probablement plus que la section que vous avez montrée ci-dessus).