#include <stdio.h>
void p(char* s, int a)
{
fprintf(stderr, "%s and %d", s, a);
}
void f(char* s, int a)
{
int b[1];
printf("%x\n", b[1]);
printf("%x\n", b[2]);
printf("%x\n", b[3]);
b[4] = (int)(p);
b[5] = (int)("hi");
b[6] = 2;
p(s, a);
}
int main()
{
int a = 1;
f("hello", a);
return 0;
}
我想用hacker的手段来修改f函数的返回地址,可惜的是一直没有成功,不过倒是把参数值给改了,打印了hi和2之后就是段错误,怎样解决这个段错误,暂还没有办法。直接看main函数内生成的汇编码,并没有什么特别之处。但是在f函数里,b[1]并不是ebp的值,而是一个莫名其妙的值,不知道是干什么的,而b[2]里面是gcc的GLOBAL_OFFSET_TABLE,也不知道是干什么用的,b[3]才是ebp的值,然后顺下来b[4],b[5],b[6]的值都对得上号。
不过修改了f函数的返回地址后,的确是可以正确地跳转到p里,还可以执行两步,但是很快就段错误了,可惜gdb生手,调了一上,陷在printf里面出不来,也不知道这个段错误的具体原因。但是,对于这个例子,纠结于细节的意义也不大,关键是明白C程序运行时的栈结构,心里明白,也就可以了。
分享到:
相关推荐
在深入探讨文档《摆弄的近义词是什么》的内容之前,先来明确一个概念——近义词。近义词指的是在意义、情感色彩或语法功能上相近的词语,它们能够互相替代使用,从而丰富语言表达,使句子或文章更加生动、准确。文档...
淘汰赛场 为 MVVM 摆弄淘汰赛
Phun是一款强大的2D物理模拟软件,它专为探索和实验设计,尤其在教育和娱乐领域有着广泛的应用。这款程序允许用户创建、编辑并观察复杂的2D物理系统,包括物体的碰撞、重力、摩擦力等多种物理现象。...
使用 ES6 和 Babel Transpiler (起点 -) 快速笔记: npm install -g babel后跟babel -d...你需要npm install core-js来获得额外的特性,比如Map 、 Set和String.prototype.repeat我摆弄过的见箭头(作为 MapReduce)
算法查看器在制品要在本地尝试,请运行: npm installwebpack-dev-server --progress --colors --port 8090然后去 http://localhost:8090Union-Find 动态连接算法和数据结构的可视化工具。
r100 摆弄r100耳机(LG 360 VR) 有趣的信息可以在这里找到: ://forum.xda-developers.com/lg-g5/accessories/lg-360-vr-pc-adapter-t3743642以及这里: ://forum.xda-developers.com XDA-Member Supportit编写了...
一些反事实分析的摆弄 我的反事实游乐场。 内容 资料夹 笔记本:我在项目期间使用过的Jypyter笔记本。 package :我开始开发做东西的Python包。 可能与我在DataLab中使用R进行的大部分工作没有太大关系。 论文:我...
标题中的“auditchop:多点触控合成器摆弄”揭示了这是一个关于音乐制作的项目,特别是利用多点触控技术与JavaScript编程语言来创建一个合成器应用。这个项目可能允许用户通过触摸屏幕的不同位置来产生不同的音色,...
比如,不摆弄小玩意儿、目光注视着教师、不做与课堂无关的小动作,这些都是专注听课的外在表现。与此同时,老师还用“聚精会神”、“专心致志”等词汇来帮助学生内化专注的含义,使其能准确地自我判断和自我要求。 ...
该项目是通过引导的。 您将在下面找到一些有关如何执行常见任务的信息。 您可以在找到本指南的最新版本。 目录 自动格式化代码 更改页面<title> 安装依赖项 导入组件 代码分割 添加样式表 ...met
GitR 是一个 R 语言的包,专门设计用于与 GitHub API 进行交互。通过这个包,用户可以方便地在 R 环境中访问和操作 GitHub 的各种资源,包括但不限于仓库、问题、拉取请求、用户信息等。在本文中,我们将深入探讨 ...
在摆弄我的 MicroPython 时创建的代码。 EEPROM.py 如何读写数据到 Atmel EEPROM 闪存芯片 Grove_RGB_LCD.py SeeedStudio 的 Grove RGB LCD 驱动程序。 OLED.py SeeedStudio 的 Grove OLED 显示器的驱动程序。
标题中的“akka-fiddling”指的是一个与Akka和Spray相关的项目,"摆弄阿卡和喷雾"是对这个项目的生动描述,暗示开发者在探索和实验这两个技术。Akka是一个用Scala编写的高性能、容错的Java和Scala应用程序框架,而...
一些 JavaScript 会摆弄数字,尤其是因子。 运行它们 脚本被编写为与一起运行。 在我的机器上,除了factors.js文件之外的所有文件都可以执行,并且我从终端运行它们。 只要factors.js与其他文件在同一目录中,他们就...
"Gefrickel"这个词在德语中意为“胡闹”或“摆弄”,在这里可能暗示着该项目是一个富有创造性和实验性质的项目,让人们通过玩耍来学习和理解这两个平台的潜力。 描述中提到的“Arduino/树莓派 Gefrickel - Arduino/...
两兄弟摆弄经典的 roguelike。 基于破碎像素地牢: : 具有像素艺术图形和简单界面的传统 roguelike 游戏。 GooglePlay 上的像素地牢: : id com.watabou.pixeldungeon 官方网站: : 开发者博客: : 要构建...
JavaScript Chat: 探索WebSocket技术 在Web开发中,实时通信功能已经成为不可或缺的一部分,而WebSocket技术正是实现这一目标的关键工具。本文将深入探讨JavaScript聊天应用的实现,以及WebSocket如何为实时交互...
在 Intel Edison 上的 Node 和 Express 中构建 RESTful API 提供更改 Grove LCD 颜色的服务 /lcd/color/r,g,b 有服务输出消息到LCD /lcd/print/hello 有一个触摸传感器有一个服务来闪烁 LED /blink 有一个服务停止...
这个存储库,正如其标题所表明的,是一个用来摆弄网站设计的平台,可能是由开发者或设计师用来试验新的设计概念、布局或交互元素。下面我们将深入探讨与这个项目相关的知识点,尤其是涉及到的HTML技术。 首先,HTML...
欢迎使用React向导POC :alien_monster: 这个项目的目的是四处寻找和理解React向导。 这是所有步骤都可以使用的一些有用的道具: 步骤{this.props.currentStep} 总步骤数:{this.props.totalSteps} ...