【Android 逆向】x86 CPU 架构体系 ( 堆内存 | 栈内存 | 函数调用 )

简介: 【Android 逆向】x86 CPU 架构体系 ( 堆内存 | 栈内存 | 函数调用 )

文章目录

一、x86 架构下的堆内存

二、x86 架构下的栈内存 与 函数调用





一、x86 架构下的堆内存


在可用内存中 , 申请内存块 , 这部分内存块就是堆内存 ;


C 语言中使用 malloc 等函数申请堆内存 ; 调用 free 函数释放内存 ;

Java 语言中使用 new 关键字创建的对象 , 一般都是放在堆内存中 ; GC 垃圾回收期自动释放内存 ;

应用程序 , 通过 " 系统调用 " 向系统申请内存块 , 系统分配内存块 , 将分配的地址返回给申请内存的应用程序 ; 这里的 " 系统调用 " 就是调用 malloc 等函数 , 申请内存 ;



堆内存是由系统分配的 , malloc 是 stdlib 标准库中的函数 , 其真正的实现是调用了系统中断 ( int3 软中断 ) , 将申请内存的字节大小 size 放到寄存器中 , 中断发生后 , 切换到系统层面 , 在系统管理的内存块中 , 分配 size 大小的内存 , 将这块内存的首地址返回 ;



对于 Java 语言的 new 关键字在堆内存中创建对象 , Java 运行环境氛围两层 , 上层是 Java 虚拟机 ( JVM ) , 下层是 Windows / Linux / Mac 操作系统 ;


Java 虚拟机启动时 , 首先要根据启动时的 内存设置参数 , 维护一个指定大小的内存空间 ; JVM 申请的内存 , 可以一次性分配完毕 , 也可以选择使用多少分配多少的策略 ;


new 创建对象 , 由 JVM 向 操作系统 申请一块内存 , 然后返回内存的首地址给客户端 ;

image.png







二、x86 架构下的栈内存 与 函数调用


" 栈 " 是内存中的一块连续的地址 , 栈内存是一块连续的有顺序的内存 ;


栈底处于内存低地址 , 栈顶处于内存高地址 ;

栈底处于内存高地址 , 栈顶处于内存低地址 ;

上述两种情况 , 都有可能出现 ;


image.png



调用函数时 , 首先将参数入栈 , 每传入一个参数 , 栈指针都要向上移动 ;


执行 func(arg0, arg1, arg2) 函数 , 将函数参数放入栈时 , 从右到左依次入栈 ;

image.png


目录
相关文章
|
安全 Android开发 iOS开发
深入探索Android与iOS的差异:从系统架构到用户体验
在当今的智能手机市场中,Android和iOS无疑是最受欢迎的两大操作系统。本文旨在探讨这两个平台之间的主要差异,包括它们的系统架构、开发环境、安全性、以及用户体验等方面。通过对比分析,我们可以更好地理解为何不同的用户群体可能会偏好其中一个平台,以及这些偏好背后的技术原因。
|
Android开发 Swift iOS开发
深入探索iOS与Android操作系统的架构差异及其对应用开发的影响
在当今数字化时代,移动设备已经成为我们日常生活和工作不可或缺的一部分。其中,iOS和Android作为全球最流行的两大移动操作系统,各自拥有独特的系统架构和设计理念。本文将深入探讨iOS与Android的系统架构差异,并分析这些差异如何影响应用开发者的开发策略和用户体验设计。通过对两者的比较,我们可以更好地理解它们各自的优势和局限性,从而为开发者提供有价值的见解,帮助他们在这两个平台上开发出更高效、更符合用户需求的应用。
|
9月前
|
Android开发 开发者 Kotlin
Android实战经验之Kotlin中快速实现MVI架构
MVI架构通过单向数据流和不可变状态,提供了一种清晰、可预测的状态管理方式。在Kotlin中实现MVI架构,不仅提高了代码的可维护性和可测试性,还能更好地应对复杂的UI交互和状态管理。通过本文的介绍,希望开发者能够掌握MVI架构的核心思想,并在实际项目中灵活应用。
443 8
|
11月前
|
网络协议 Linux Android开发
深入探索Android系统架构与性能优化
本文旨在为读者提供一个全面的视角,以理解Android系统的架构及其关键组件。我们将探讨Android的发展历程、核心特性以及如何通过有效的策略来提升应用的性能和用户体验。本文不包含常规的技术细节,而是聚焦于系统架构层面的深入分析,以及针对开发者的实际优化建议。
333 21
|
11月前
|
存储 Linux API
深入探索Android系统架构:从内核到应用层的全面解析
本文旨在为读者提供一份详尽的Android系统架构分析,从底层的Linux内核到顶层的应用程序框架。我们将探讨Android系统的模块化设计、各层之间的交互机制以及它们如何共同协作以支持丰富多样的应用生态。通过本篇文章,开发者和爱好者可以更深入理解Android平台的工作原理,从而优化开发流程和提升应用性能。
|
11月前
|
安全 Android开发 iOS开发
深入探索iOS与Android系统架构差异及其对开发者的影响
本文旨在通过对比分析iOS和Android两大移动操作系统的系统架构,探讨它们在设计理念、技术实现及开发者生态方面的差异。不同于常规摘要仅概述内容要点,本摘要将简要触及核心议题,为读者提供对两大平台架构特点的宏观理解,铺垫
|
12月前
|
存储 人工智能 编译器
【AI系统】CPU 指令集架构
本文介绍了指令集架构(ISA)的基本概念,探讨了CISC与RISC两种主要的指令集架构设计思路,分析了它们的优缺点及应用场景。文章还简述了ISA的历史发展,包括x86、ARM、MIPS、Alpha和RISC-V等常见架构的特点。最后,文章讨论了CPU的并行处理架构,如SISD、SIMD、MISD、MIMD和SIMT,并概述了这些架构在服务器、PC及嵌入式领域的应用情况。
965 5
|
12月前
|
IDE 安全 Android开发
深入探索Android与iOS操作系统的架构差异
本文旨在对比分析Android和iOS两大主流移动操作系统在架构设计上的根本差异。通过详细解读两者的系统架构、开发环境、以及安全性等方面,揭示它们各自的特点及优势,为开发者选择合适的平台提供参考。
|
11月前
|
开发工具 Android开发 iOS开发
Android与iOS生态差异深度剖析:技术架构、开发体验与市场影响####
本文旨在深入探讨Android与iOS两大移动操作系统在技术架构、开发环境及市场表现上的核心差异,为开发者和技术爱好者提供全面的视角。通过对比分析,揭示两者如何塑造了当今多样化的移动应用生态,并对未来发展趋势进行了展望。 ####
|
12月前
|
安全 Linux Android开发
深入探索Android与iOS的系统架构:一场技术较量
在当今数字化时代,智能手机操作系统的选择成为了用户和开发者关注的焦点。本文将深入探讨Android与iOS两大主流操作系统的系统架构,分析它们各自的优势与局限性,并对比两者在用户体验、开发生态和安全性方面的差异。通过本文的技术剖析,读者将对这两个平台的核心技术有更深入的理解。

热门文章

最新文章

下一篇
oss云网关配置