Skip to the content.

Rétro-ingénierie

Désassemblage

Introduction

À l’aide de l’aide mémoire Pep/8, désassemblez manuellement le programme suivant: pin1

Aide mémoire Pep/8 (version INF600C)

Le reverse, c’est difficile

À l’aide du même aide mémoire Pep/8, désassemblez le programme suivant, puis faites-en la trace.

C0 FE FE 16 00 0D 70 65 70 38 00 41 00 06 00 0B 58

Pin 2: Des bogues

Désassemblez le programme Pep/8 suivant puis trouvez le bon PIN: pin2

Réponse (spoiler)

         STRO    pin,d       
         DECI    n,d
         LDA     1616,i      
         LDX     4,i         
         CALL    get_pin     
         CPA     n,d         
         BRNE    k           
         LDA     n,d         
         CALL    print
         STOP       
k:       STRO    err,d
         STOP                

get_pin: SUBSP   2,i         
         STA     0,s         
l:       CPX     0,i         
         BRLE    z           
         ASRA                
         ADDA    1,i         
         ADDA    0,s         
         STA     0,s         
         SUBX    1,i         
         BR      l           
z:       LDA     0,s         
         RET2                

print:   SUBSP   2,i         
         STRO    flag,d      
         DECO    0,s         
         CHARO   '}',i       
         CHARO   '\n',i
         RET2                
n:       .BLOCK  2           
pin:     .ASCII  "PIN:\x00"  
flag:    .ASCII  "INF600C{\x00" 
err:     .ASCII  "Erreur!\n\x00"
         .END

En vrai

Trouvez également les bons PINs pour les versions 32 et 64 bits suivantes:

PIN 3

Ignorez le PIN et obtenez le flag dans chacun des deux programmes suivants:

Faites l’effort de soulever les différences dans le code du main entre x86 et x86_64.

Aide gdb/peda

Exécuter

Divers

Inspecter

Modifier