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> 
  • 相关阅读:
    能帮你找到网页设计灵感的16个网站
    Alpha和索引色透明
    CSS2.0中最常用的18条技巧
    汇编指令CPUID
    ewebeditor漏洞解決方法
    关于SQL SERVER建立索引需要注意的问题
    Apple QuickTime
    免杀修改特征码需要掌握的汇编知识
    【我翻译的文章】理解和应用F#中的“use”语法
    【我翻译的文章】Promesh.NET:一个.NET的MVC Web框架
  • 原文地址:https://www.cnblogs.com/kuangke/p/12397124.html
Copyright © 2011-2022 走看看