逆向-beginners之return

#include

int f()
{
    int a = 0x55;
    return a;
}

int main()
{
    int a = 1;

    a = f();
    printf("0x%x\n", a);    // 0x55
    return 0;
}

#if 0
/*
 * intel
 */
0000000000001149 :
    1149:    f3 0f 1e fa              endbr64 
    114d:    55                       push   %rbp
    114e:    48 89 e5                 mov    %rsp,%rbp
    1151:    c7 45 fc 55 00 00 00     movl   $0x55,-0x4(%rbp)
    1158:    8b 45 fc                 mov    -0x4(%rbp),%eax
    115b:    5d                       pop    %rbp
    115c:    c3                       retq   

000000000000115d

:
    115d:    f3 0f 1e fa              endbr64 
    1161:    55                       push   %rbp
    1162:    48 89 e5                 mov    %rsp,%rbp
    1165:    48 83 ec 10              sub    $0x10,%rsp
    1169:    c7 45 fc 01 00 00 00     movl   $0x1,-0x4(%rbp)
    1170:    b8 00 00 00 00           mov    $0x0,%eax
    1175:    e8 cf ff ff ff           callq  1149
    117a:    89 45 fc                 mov    %eax,-0x4(%rbp)
    117d:    8b 45 fc                 mov    -0x4(%rbp),%eax
    1180:    89 c6                    mov    %eax,%esi
    1182:    48 8d 3d 7b 0e 00 00     lea    0xe7b(%rip),%rdi        # 2004 <_IO_stdin_used+0x4>
    1189:    b8 00 00 00 00           mov    $0x0,%eax
    118e:    e8 bd fe ff ff           callq  1050
    1193:    b8 00 00 00 00           mov    $0x0,%eax
    1198:    c9                       leaveq 
    1199:    c3                       retq   
    119a:    66 0f 1f 44 00 00        nopw   0x0(%rax,%rax,1)

/*
 * arm
 */
000000000040055c :
  40055c:    d10043ff     sub    sp, sp, #0x10
  400560:    52800aa0     mov    w0, #0x55                      // #85
  400564:    b9000fe0     str    w0, [sp, #12]
  400568:    b9400fe0     ldr    w0, [sp, #12]
  40056c:    910043ff     add    sp, sp, #0x10
  400570:    d65f03c0     ret

0000000000400574

:
  400574:    a9be7bfd     stp    x29, x30, [sp, #-32]!
  400578:    910003fd     mov    x29, sp
  40057c:    52800020     mov    w0, #0x1                       // #1
  400580:    b9001fa0     str    w0, [x29, #28]
  400584:    97fffff6     bl    40055c
  400588:    b9001fa0     str    w0, [x29, #28]
  40058c:    90000000     adrp    x0, 400000 <_init-0x3e8>
  400590:    91196000     add    x0, x0, #0x658
  400594:    b9401fa1     ldr    w1, [x29, #28]
  400598:    97ffffae     bl    400450
  40059c:    52800000     mov    w0, #0x0                       // #0
  4005a0:    a8c27bfd     ldp    x29, x30, [sp], #32
  4005a4:    d65f03c0     ret

#endif
 

你可能感兴趣的:(Assembly,汇编)