继《const修改过程》的反汇编分析

看过《神奇的const修改过程》这篇帖子的朋友也应该和我有同样的疑问
我昨天晚上做了下跟踪发现有趣的事儿

 

 

还记得上面的代码吧,里面的i的值即被强行修改了

这里看看我的反汇编情况

 

这里是整个main函数的反汇编代码 由于写上了源代码所以很容易看懂
这里就直接步入主题看关键代码

 

 

004017DE   把ebp-8的地址传给edx           // LEA  是 有效地址传送指令
004017E1   把edx的值传入ebp-0Ch        //ebp-0Ch就是指针p的装的内存地址
004017E4   把ebp-0Ch的值传入eax      
004017E7   把63h传入eax                    //63h是16进制,转换10进制是99,

 

 

 

cout 是从后往前载入的。所以第一个载入的是endl

 

 

 

 

 

 

 

 

 

最后,这里应是关键,由于最开始给常量i赋值的时候通过变量tmp中转了一下
应该就是导致为什么最后读取常量i的值的时候是读取的eax中的值  ,而不是直接读取的值

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值