免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: eookoo
打印 上一主题 下一主题

[C] 如何找到变量地址(不能直接输出,不能断点调试) [复制链接]

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
11 [报告]
发表于 2011-10-04 09:41 |只看该作者
回复  MMMIX


    我意思是如果知道 $rbp 地址, 那就應該可以找到 a (rbp-0x4), b (rbp-0x8 ), c (rbp ...
eookoo 发表于 2011-10-04 09:33



    你需要的是 rbp 的值,而不是它的地址。再說了,寄存器也不存在什麼地址(硬件如何訪問寄存器就是另外一回事了)。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
12 [报告]
发表于 2011-10-04 09:46 |只看该作者
回复  MMMIX


    他就是给了上面的代码,说找出他们的内存地址,但不能直接输出地址,用调试器的时候 ...
eookoo 发表于 2011-10-04 09:38



    地址你不是已經有了麼?就是 rsp-0x8 之類的。

论坛徽章:
0
13 [报告]
发表于 2011-10-04 09:56 |只看该作者
回复 12# MMMIX


    但是都不知道 rbp 指向的地址是什么,说 rbp-0x4 是地址,他肯定不接收。他就要我们找到变量在内存中的地址。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
14 [报告]
发表于 2011-10-04 10:15 |只看该作者
本帖最后由 MMMIX 于 2011-10-04 10:19 编辑
回复  MMMIX


    但是都不知道 rbp 指向的地址是什么,说 rbp-0x4 是地址,他肯定不接收。他就要我们 ...
eookoo 发表于 2011-10-04 09:56



    rbp 的值依賴於運行時 stack 的地址,而這個地址又依賴於你的環境(主要是 OS,compiler),因此 a, b, c 的地址就是 rbp-0x4, rbp-0x8, rbp-0xc。你要和他講道理,讓他明白這個題目是很不靠譜的。

论坛徽章:
0
15 [报告]
发表于 2011-10-04 16:14 |只看该作者
這個看不到連行時的實際地址。
MMMIX 发表于 2011-10-04 09:24

彪了,没注意到不是静态变量。。。

论坛徽章:
0
16 [报告]
发表于 2011-10-05 09:35 |只看该作者
要求也太苛刻了

论坛徽章:
0
17 [报告]
发表于 2011-10-05 12:32 |只看该作者
不用printf,用putchar不就好了?

论坛徽章:
1
天秤座
日期:2014-04-27 07:42:20
18 [报告]
发表于 2011-10-05 15:48 |只看该作者
可以用FPE,这个是改游戏数据的神器。工作原理如下:
1、给出某个变量的当前值,扫描内存,找到所有这个值的地址
2、改变该变量的值,用新值在上面找到的地址里扫描一次,找出值是当前值的地址

如此扫上三四次,一般都能找的到正确的地址。

论坛徽章:
0
19 [报告]
发表于 2011-10-06 11:24 |只看该作者
??????

论坛徽章:
0
20 [报告]
发表于 2011-10-07 12:06 |只看该作者
请问编译选项?
如里是02选项一开,局部变量a b c 全被优化没了,所以不存在地址,想下断点都断不了。
如果没有优化,  若不能获取栈信息,好我也不会了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP