zoukankan      html  css  js  c++  java
  • window 和 linux x64差别

    原创作者:狂客

    版权声明:转载 请标注来源

    差别一  window 和 linux 调用CALL 使用寄存器传参不同

      window

     1 /**
     2 注意现在使用函数库必须先调用 KuangKeInIt 这个函数
     3 
     4 r8-r15
     5 r8 保存 64位
     6 r8d 保存 32位
     7 汇编调用函数 没有默认值一说
     8 调用CALL
     9 注意:
    10 调用call rsp必须减去0x20 或者 0x20以上的数字。且是8的倍数 减去 必须调用完加上 堆栈平衡
    11 
    12 000000013F0B3385  mov         dword ptr [rsp+38h],0Bh //参数八
    13 000000013F0B338D  mov         dword ptr [rsp+30h],0Ah //参数七
    14 000000013F0B3395  mov         dword ptr [rsp+28h],9 //参数六
    15 000000013F0B339D  mov         dword ptr [rsp+20h],7 //参数五
    16 000000013F0B33A5  mov         r9d,5 //参数四
    17 000000013F0B33AB  mov         r8d,3 //参数三
    18 000000013F0B33B1  lea         rdx,[_load_config_used+70h (013F0BCCB0h)] //参数二
    19 000000013F0B33B8  lea         rcx,[_load_config_used+78h (013F0BCCB8h)] //参数一
    20 000000013F0B33BF  call        qword ptr [__imp_printf (013F0C1300h)]
    21 
    22 **/

     linux

    push   0x9  //参数八
    push   0x8  //参数七
    mov    r9d,0x7 //参数六
    mov    r8d,0x6 //参数五
    mov    ecx,0x5 //参数四
    mov    edx,0x3 //参数三
    mov    esi,0x2 //参数二
    mov    edi,0x1 //参数一 注: 代码我没复制全 这里全是64位寄存器 之所以 mov edi, 0x1 前面有 xor rdi, rdi
    call   0x555555555185 //<liu(unsigned long long, unsigned long long, unsigned long long, unsigned long long, unsigned long long, unsigned long long, unsigned long long, unsigned long long)> 
    add    rsp,0x10 
    call   0x555555555030 //<pause@plt> 
  • 相关阅读:
    安装Apache提示APR not found的解决办法
    使用jQuery和CSS3实现一个数字时钟
    nodejs iconfont处理
    ios html5 长按复制文本
    Weex 开发入门
    Nginx比SRS做得好的地方
    NodeJs mysql 开启事务
    NodeJs使用Mysql模块实现事务处理
    centos7之系统优化方案
    CentOS 7 网络优化(升级内核、开启 BBR)
  • 原文地址:https://www.cnblogs.com/kuangke/p/12397124.html
Copyright © 2011-2022 走看看