首页
社区
课程
招聘
未解决 一篇关于引用反编译提问
发表于: 2018-12-7 17:27 1245

未解决 一篇关于引用反编译提问

2018-12-7 17:27
1245

这是我写的一篇非常简单的程序


下面是反编译的程序

反编译是这样的

当光标运行到011B13EB处时,可以得出eax的值给[b]此时调试


eax为 010EFE04 

即[b]等于010EFE04 

而局部变量窗口

b为3。大家能解释是一下是什么原因吗。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2018-12-7 17:42 被janeyjhon编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 3481
活跃值: (11143)
能力值: ( LV9,RANK:240 )
在线值:
发帖
回帖
粉丝
2
EAX=a的地址0x010EFE04,赋给了&b,所以b=*(&b) =3
最后于 2018-12-7 18:48 被jmpcall编辑 ,原因:
2018-12-7 18:46
1
雪    币: 8
活跃值: (168)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
xinpoo EAX=a的地址0x010EFE04,赋给了&b,所以b=*(&b) =3

这个[b]就是&b呀,可以这样表示呀

2018-12-7 19:40
0
雪    币: 8
活跃值: (168)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
[b]不是b吗?前面[a]表示a呀
2018-12-7 19:41
0
雪    币: 29182
活跃值: (63621)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
5
感谢分享
2018-12-7 19:48
0
雪    币: 5734
活跃值: (1737)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
b是a 的引用 b=a
2018-12-7 21:31
0
雪    币: 3481
活跃值: (11143)
能力值: ( LV9,RANK:240 )
在线值:
发帖
回帖
粉丝
7
你就把“int &b=a”看作“int *b=&a”,编译器把后面所有的b都当成*b,其实最终就是编译器对引用变量对应汇编代码的一种约定
2018-12-7 22:17
1
雪    币: 3481
活跃值: (11143)
能力值: ( LV9,RANK:240 )
在线值:
发帖
回帖
粉丝
8
所以b本质还是个指针,只不过访问b所指的值时不用写成*b,编译器就会编译成“dword ptr [b]”,这样才能给c语言使用者“b就是a”的感觉
2018-12-7 22:34
0
游客
登录 | 注册 方可回帖
返回
//