美文网首页
汇编基础-函数返回值超过8个字节

汇编基础-函数返回值超过8个字节

作者: spyn_n | 来源:发表于2021-03-26 18:03 被阅读0次

struct str {     int a;     int b;     int c;     int d;     int f;     int g; };  // 结构体声明

struct str getStr(int a, int b, int c, int d, int f, int g){    // 函数实现

//    //24字节开辟堆空间!

//  struct str * str1 = malloc(24);

    struct str str1;

    str1.a= a;

    str1.b= b;

    str1.c= c;

    str1.d= d;

    str1.f= f;

    str1.g= g;

    returnstr1;

}

调用函数struct str str2 = getStr(1, 2, 3, 4, 5, 6);

x8寄存器指向sp+#0x8的地址,为了给getStr函数操作这个寄存器(夸栈操作)

然后我们可以验证一下我们分析的对不对,我们查看一下X8寄存器的地址x8 = 0x000000016f258ee8,po一下这个地址是6159699688,对应到数据如图,正好跟我们分析的一样,将1,2,3,4,5,6以X8寄存器为基准,每1个字节放数据。

所以我们可以断定X8的地址应该是str2变量指向的地址空间,在getStr函数调用时,完成入栈操作。

以上是个人看法,不对的地方,欢迎大佬指正。

相关文章

  • 汇编基础-函数返回值超过8个字节

    struct str { int a; int b; int c; int d; int f; int...

  • 汇编基础(四)函数&返回值

    bl和ret指令 bl标号 将下一条指令的地址放入lr(x30)寄存器 转到标号处执行指令 注意:当我们遇到bl指...

  • iOS逆向:函数本质(下)

    本文主要是讲解函数的参数、返回值、局部变量在汇编中是如何存储,以及CPSR标志寄存器 函数的参数和返回值 arm6...

  • 学习 之 TypeScript -- 基础知识 【2】

    学习 之 TypeScript -- 基础知识 1、函数: 函数定义 1.1、无返回值 1.2、返回值类型 1....

  • Python函数笔记

    定义函数 基础语法 如果没有写return语句,函数执行之后会返回None 函数的返回值 可以有多个返回值,但是多...

  • 标准库函数

    函数原型 函数描述 返回值 memchr 函数原型 函数描述 此函数用于在str的前n个字节内 寻找c第一次出现的...

  • c语言逆向分析之函数1

    从汇编的角度去理解函数会让你更加的深刻。。。。。。 看这篇文章需要一定的c语言基础和汇编基础(能基本看懂简单的汇编...

  • C语言2-参数的传递与返回值

    C语言2-参数的传递与返回值 plus函数对应反汇编代码和意义 调用函数调用: 下面是call内部 堆栈没有变化 ...

  • 详解Python装饰器

    基础 注意:函数名、函数加括号(函数的返回值)可以被当做参数传递,也可以被当做返回值return 内部原理 把wr...

  • JavaScript回调函数基础

    javascript回调函数 5.函数的返回值 6.回调函数的基础

网友评论

      本文标题:汇编基础-函数返回值超过8个字节

      本文链接:https://www.haomeiwen.com/subject/fctshltx.html