逆向-beginners之八个参数

#include <stdio.h>

int main()
{
    printf("a=%d, b=%d, c=%d, %d, %d, %d, %d, %d\n", 
            1, 2, 3, 4, 5, 6, 7, 8);
    return 0;
}


#if 0

/*
 * arm 传递8个参数
 */
    win64 使用RCX, RDX, R8, R9传递前4个参数,其余的参数使用栈来传递。

/*
 * arm
 */


#endif

#if 0
/*
 * intel
 */
0000000000001149 <main>:
    1149:    f3 0f 1e fa              endbr64 
    114d:    55                       push   %rbp
    114e:    48 89 e5                 mov    %rsp,%rbp
    1151:    48 83 ec 08              sub    $0x8,%rsp
    1155:    6a 08                    pushq  $0x8
    1157:    6a 07                    pushq  $0x7
    1159:    6a 06                    pushq  $0x6
    115b:    41 b9 05 00 00 00        mov    $0x5,%r9d
    1161:    41 b8 04 00 00 00        mov    $0x4,%r8d
    1167:    b9 03 00 00 00           mov    $0x3,%ecx
    116c:    ba 02 00 00 00           mov    $0x2,%edx
    1171:    be 01 00 00 00           mov    $0x1,%esi
    1176:    48 8d 3d 8b 0e 00 00     lea    0xe8b(%rip),%rdi        # 2008 <_IO_stdin_used+0x8>
    117d:    b8 00 00 00 00           mov    $0x0,%eax
    1182:    e8 c9 fe ff ff           callq  1050 <printf@plt>    // printf(rdi, esi, edx, ecx, r8d, r9d, rsp, rsp-0x8, rsp-0x10)
    1187:    48 83 c4 20              add    $0x20,%rsp
    118b:    b8 00 00 00 00           mov    $0x0,%eax
    1190:    c9                       leaveq 
    1191:    c3                       retq   
    1192:    66 2e 0f 1f 84 00 00     nopw   %cs:0x0(%rax,%rax,1)
    1199:    00 00 00 
    119c:    0f 1f 40 00              nopl   0x0(%rax)

/*
 * arm
 */
000000000040055c <main>:
  40055c:    d10083ff     sub    sp, sp, #0x20
  400560:    a9017bfd     stp    x29, x30, [sp, #16]
  400564:    910043fd     add    x29, sp, #0x10
  400568:    90000000     adrp    x0, 400000 <_init-0x3e8>
  40056c:    91198008     add    x8, x0, #0x660
  400570:    52800100     mov    w0, #0x8                       // #8
  400574:    b90003e0     str    w0, [sp]
  400578:    528000e7     mov    w7, #0x7                       // #7
  40057c:    528000c6     mov    w6, #0x6                       // #6
  400580:    528000a5     mov    w5, #0x5                       // #5
  400584:    52800084     mov    w4, #0x4                       // #4
  400588:    52800063     mov    w3, #0x3                       // #3
  40058c:    52800042     mov    w2, #0x2                       // #2
  400590:    52800021     mov    w1, #0x1                       // #1
  400594:    aa0803e0     mov    x0, x8
  400598:    97ffffae     bl    400450 <printf@plt>  // printf(x0, w1, w2, w3, w4, w5, w6, w7, sp)
  40059c:    52800000     mov    w0, #0x0                       // #0
  4005a0:    a9417bfd     ldp    x29, x30, [sp, #16]
  4005a4:    910083ff     add    sp, sp, #0x20
  4005a8:    d65f03c0     ret


#endif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值