#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程序运行时的栈结构,心里明白,也就可以了。
分享到:
相关推荐
摆弄的近义词是什么.doc
最牛物理程序,拥有各种2D碰撞,可以自由摆弄,是实验的好工具
gitR:摆弄GitHub API
javascript聊天 摆弄websockets
注意!此机器不能摸也不能拿。它的内部在飞速地转动, 而且不断发出火花。它不是傻瓜摆弄的玩意儿。请把手 放在口袋里,站得远远地,放松些,看那闪烁的火花。
滑轮 摆弄 Java 中的响应式拉动
淘汰赛场 为 MVVM 摆弄淘汰赛
React&Webpack样板 摆弄React&Webpack
Restaurant-Project:用来摆弄网站设计的存储库
闲话摆弄实现电影数据库的Toy项目,功能包括: Rest接口,使用Spray-json解析json 挥舞着记录路线和json Java定义的接口的Scala实现
使用 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 动态连接算法和数据结构的可视化工具。
html5-game-workouts 示例摆弄 html5 2d 游戏
arduino-pi-gefrickel Arduino/树莓派 Gefrickel - Arduino/树莓派摆弄
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进行的大部分工作没有太大关系。 论文:我...
Arduino-Stuff:当我摆弄Arduino时在这里上传随机的东西
该项目是通过引导的。 您将在下面找到一些有关如何执行常见任务的信息。 您可以在找到本指南的最新版本。 目录 自动格式化代码 更改页面<title> 安装依赖项 导入组件 代码分割 添加样式表 ...met
DominionRandomizer:Dominion的随机化器,但实际上只是摆弄Angular的借口
在摆弄我的 MicroPython 时创建的代码。 EEPROM.py 如何读写数据到 Atmel EEPROM 闪存芯片 Grove_RGB_LCD.py SeeedStudio 的 Grove RGB LCD 驱动程序。 OLED.py SeeedStudio 的 Grove OLED 显示器的驱动程序。