反汇编分析——全局、局部、静态、堆变量

news2025/4/21 15:28:29

在可执行文件编译的时候就已经存储在固定的位置了,甚至还可以跨文件共享,因为他本身就是静态的,固定在文件当中的嘛

反汇编窗口就是直接拿指针解引用,也就是拿这个地址来访问的,直接寻址

自动变量,不用我们手动释放,当函数执行结束之后就会自动释放空间 

局部变量就是保存在栈空间当中的,每个线程都有它自己的函数调用栈,保存了函数调用关系,以及函数内部的局部变量。函数返回,局部变量就消失了。

begbug版对局部变量的访问都是通过ebp-XX来实现的,而release版则是直接通过esp来寻址局部变量的,这里的寄存器相对寻址,就是通过esp/ebp加减一个数来实现对内存地址的访问的。

 局部静态变量是在一个函数的内部,在别的函数是不能够访问的

test eax,eax; jne 0x1234 》jne里面的e就是等于0的意思

0x427e4c是存放标志位的地址,如果静态变量<=8个,就使用一个字节来存储标志位,否则就再加N个字节,0x427e48紧挨着它存放的就是i的数值。

最后输出的全是0:因为static只有最开始的时候会被初始化,然后把标志位置1,后面就不会执行这个初始化的语句,而直接执行printf,如果想让它的值改变的话也很简单:

static int i=n;
i=n;
printf("%d\n",i);

说白了,就是除了初始化之后你再修改一下这个i的值就可以了。

使用一个常量来初始化静态变量

总结一下静态变量的一个重要特征就是它有一个标志位,一旦被初始化过了,就不会再被初始化了

 

 

其中前后4个FD是用来检查对空间是否越界的,中间的CD是默认的数据,可以在申请之后memset一下申请的堆空间,返回的首地址就如图所示。

堆空间是使用双向链表_CrtMemBlockHeader这种数据结构连接起来的 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/639797.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C# .NET ADO.NET介绍和如何使用

文章目录 环境配置ADO.NET简介ADO.NET是什么面向过程和面向对象什么是ORM ADO.NET用于解决什么问题优化开发效率对已存在的数据库&#xff0c;设计多个程序对开发中的程序&#xff0c;动态设计数据库&#xff0c;同步更新 ADO.NET如何使用&#xff0c;以sql server为例ADO.NET如…

多元回归预测 | Matlab哈里斯鹰算法(HHO)优化随机森林的数据回归预测,HHO-RF回归预测,多变量输入模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元回归预测 | Matlab哈里斯鹰算法(HHO)优化随机森林的数据回归预测,HHO-RF回归预测,多变量输入模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码 %% 清…

IPV6综合实验

拓扑结构&#xff1a; 要求&#xff1a; 1、两个局域网基于6 to 4 tunnel可达&#xff0c;公网使用IPV4地址 2、R1可以访问R3的环回 3、保障网络更新安全&#xff0c;全网可达 使用的设备&#xff1a;8台路由器 解决网络拓扑&#xff1a; 1、确定广播域的个数 2、分配网段 …

react---pubsub-js消息订阅与发布

pubsub是一个用Javascript编写的基于主题的发布/订阅库&#xff0c;适用于任意组件间的通信&#xff0c;需要先订阅再发布 &#xff0c;在组件即将卸载时钩子函数中进行取消订阅。 1. 在线文档: https://github.com/mroderick/PubSubJS 2. 下载: 【npm install pubsub-js --sav…

MySQL数据库备份和还原

备份对于数据库而言是至关重要的。当数据文件发生损坏、MySQL服务出现错误、系统内核崩溃、计算机硬件损坏或者数据被误删等事件时&#xff0c;使用一种有效的数据备份方案&#xff0c;就可以快速解决以上所有的问题。MySQL提供了多种备份方案&#xff0c;包括&#xff1a;逻辑…

机器学习—逻辑回归

练习2&#xff1a;逻辑回归 介绍 在本练习中&#xff0c;您将实现逻辑回归并将其应用于两个不同的数据集。还将通过将正则化加入训练算法&#xff0c;来提高算法的鲁棒性&#xff0c;并用更复杂的情形来测试模型算法。 在开始练习前&#xff0c;需要下载如下的文件进行数据上…

自学黑客【网络安全】,一般人我还是劝你算了吧

十多年前还是高中生的时候开始搞安全的&#xff0c;刚开始是看大佬们在群里发黑页觉得很牛逼。然后慢慢开始学&#xff0c;当时还在网上问过IP和ID有什么区别&#xff0c;&#xff0c;&#xff0c; 后来慢慢开始学注入&#xff0c;日到了第一个站&#xff0c;是家卖钢琴的。放…

Linux 一“文”搞定Shell编程

又到了毕业季&#xff0c;又得去找实习工作。。。 最近在某直聘软件上找实习工作&#xff0c;看到有许多工作都需要会Shell编程的&#xff0c;然后自己对Shell编程也是一知半解&#xff0c;所以趁着最后还有半个月在校时间&#xff0c;索性学习一下&#xff01; Shell是一个命…

Apache Hadoop概述

Hadoop是一个开源的分布式计算框架&#xff0c;它可以处理大规模的数据集。Hadoop的核心是HDFS(Hadoop Distributed File System)和MapReduce编程模型。HDFS是一个高度容错性的系统&#xff0c;可以在数百台服务器上存储PB级别的数据。MapReduce是一种编程模型&#xff0c;它可…

css基础知识二:CSS选择器有哪些?优先级?哪些属性可以继承?

一、选择器 CSS选择器是CSS规则的第一部分 它是元素和其他部分组合起来告诉浏览器哪个HTML元素应当是被选为应用规则中的CSS属性值的方式 选择器所选择的元素&#xff0c;叫做“选择器的对象” 我们从一个Html结构开始 <div id"box"><div class"o…

k8s 探针

1.前言 Kubernetes探针(Probe)是用于检查容器运行状况的一种机制。探针可以检查容器是否正在运行&#xff0c;容器是否能够正常响应请求&#xff0c;以及容器内部的应用程序是否正常运行等。在Kubernetes中&#xff0c;探针可以用于确定容器的健康状态&#xff0c;如果容器的健…

Prometheus+Grafana安装极简教程

目录 初始化监控主机 安装go环境 安装Prometheus 安装Grafana 初始化被监控主机 监控主机配置监控被监控主机 课后 初始化监控主机 安装go环境 下载对应的go版本&#xff0c;解压&#xff0c;设置环境变量 export GOROOT/usr/local/go export PATH$PATH:$GOROOT/bin 执…

alist与Raidrive配置开机自动启动,开机就可以拥有网盘硬盘!

目录 1. alist配置为开机自动启动服务1.1 制作一个alist启动命令行1.2 将VBS添加到开机启动项 2. Raidrive设置开机启动2.1 进入设置2.2 添加到启动项 总结 欢迎关注 『发现你走远了』 博客&#xff0c;持续更新中 欢迎关注 『发现你走远了』 博客&#xff0c;持续更新中 1. al…

大数据治理入门系列:数据质量

无论您是数据领域的专业人员&#xff0c;还是其他领域的非专业人士&#xff0c;也许都曾遇到过数据不完整、数据过时、数据不一致、数据不准确等问题。这些低质量的数据不仅没能解决最初的疑问&#xff0c;甚至还可能衍生出了其他问题。质量低劣的数据会影响数据分析结果&#…

代码随想录刷题第52天|LeetCode300最长递增子序列、 LeetCode674最长连续递增序列、LeetCode718最长重复子数组

1、LeetCode300最长递增子序列 题目链接&#xff1a;300最长递增子序列 1、dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度。 2、递推公式&#xff1a; if (nums[i] > nums[j]) dp[i] max(dp[i], dp[j] 1); 注意这里不是要dp[i] 与 dp[j] 1进行比较&…

Rust X DatenLord l Rust China Conf 2023 倒计时!

Rust语言作为一种强调性能、安全和并发性的新的编程语言&#xff0c;吸引了越来越多的程序员想要尝试学习和使用Rust。达坦科技&#xff08;DatenLord&#xff09;旗下的开源项目Xline &#xff08;用于元数据管理的分布式KV存储&#xff09;就是用Rust写就的&#xff0c;我们也…

android remount 工作原理简介

android remount 在调试android 系统的时候是个非常有用的调试手段&#xff0c; 有remount 的帮助&#xff0c; 可以轻松的修改系统分区的某些文件&#xff0c;或者在系统分区添加删除文件。但有时候remount 也会因为一些verity&#xff0c; checkpoint &#xff0c;和remount …

【python数据可视化】Matplotlib绘图练习(一)

目录 Matplotlib &#x1f947;Summary 获取源码&#xff1f;私信&#xff1f;关注&#xff1f;点赞&#xff1f;收藏&#xff1f; Python数据可视化的由来主要是因为数据可视化在数据分析领域扮演了至关重要的角色。这是因为&#xff0c;数据可视化能够更好地向人们展示大量…

电脑老是自动更新怎么办?教你一招彻底解决

前言 这两天有粉丝留言问我&#xff1a;电脑老是提示自动更新&#xff0c;而且关也关不掉&#xff0c;这该怎么办&#xff1f; 今天就教大家如何彻底关掉电脑的系统自动更新功能&#xff0c;以后永远不再自动更新。 一、关闭更新服务 1. 同时按下键盘winR键&#xff0c;打开运…

SQL 知识你知道吗:公共表表达式(CTE)

一、概念 公共表表达式&#xff08;CTE&#xff09;是一种临时命名查询结果集的方式&#xff0c;可以在一个查询语句中多次引用。CTE在查询语句中定义&#xff0c;可以在查询语句中的任何位置使用&#xff0c;并且只在查询语句执行期间存在。CTE通常用于简化复杂的查询&#x…