没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
修改栈中函数调用返回地址,改变程序执行流程
任务:修改栈中函数调用返回地址,改变程序执行流程
在本例中,通过修改函数 function 调用返回地址,使程序跳过执行
x=1 的赋值语句,从而使输出结果为 0
为了实现这个目标,需要
1.找到函数调用返回地址在栈中的位置
由于 c 程序中无法直接取得返回地址,本例中以 buer1 地址
为基址,通过计算其与返回地址在栈中地址的差值,得到返回
地址(在栈中)的地址
对应程序中的 7、8 句
buer1 和返回地址通过 gdb 调试得到
2 .计算所跳过指令与下一条指令的差值,这通过反汇编代码可
以直接计算得出
源程序
!"##
$%
&"'(
"')(
*
+
),
-"
%
$.
&.)
!##$
*.
/01231#.
,
编译:4554
调试:4
反汇编 "--"
).))&&&)6 /2/
).))&&& 6-2/#2/
).))&&$6 "7). )#2/
).))&&&*6 7).)#2/
).))&&+6 -7).)#).2/
).))&& 6 -7).$#).2/
).))&&*6 -7).#).&2/
).))&&* $$6 -7).#2/
).))&&*&)6 ").)&&& !
).))&&&6 -7).#).2/
).))&&$$6 -7).)&*)#2".
).))&&6 -).2/#2.
).))&&*6 -2.#).&2/
).))&&+)**6 -2".#2/
).))&&+$*+6 ").)&$$/08/
).))&&+&6 "
).))&&++6
"- !6
).))&&&)6 /2/
).))&&6 -2/#2/
).))&&$6 7).#2/
).))&&"*6 -246).".
).))&&)6 -2".#5).2/
).))&&$6 .2".#2".
).))&&6 "5).2/#2".
).))&&)6 "7).#2".
).))&&$6 -2".#5).2/
).))&&*6 -5).2/#2".
).))&&$+6 -2".#2".
).))&&$$$6 ").2".#2.
).))&&$*$&6 -5).2/#2".
).))&&$+$6 -2.#2".
).))&&$$+6 -5).2/#2".
).))&&$&6 .246).".
).))&&&&+6 9).)&&& !*
).))&&&6 ").)&$&::";:;: "8/
).))&&&*6 "
要 跳 过
指 令 地
址
Buer1 地址 !
).))&&&6
下面通过设置断点和单步调试的方法找到所需地址
在 .) 处设置断点 ";&
运行
寄存器情况:
4 4
".).$& 5)$&&+&
.).$$"$"*) $$$*
.).
.).& *&+*
/).$) ).$)
/).$$ ).$$
).) )
).) )
/).)&& ).)&&-"+
<"4). '=>?>(
).$
). $
). $
). $
).) )
4).$$
栈的情况:
).$)6 ).))$& ).))& ).))&&) ).$$
).$)6 ).))+ ).))) ).))&& ).))&
).$$)6 ).))&&) ).))))))))
下一条指令 4/"@A7/
).)&&-"+6 -7).)#).2/
继续执行
4
!##$
6.A7/
).)&& -"6 -7).$#).2/
看寄存器
4 4
".).$& 5)$&&+&
.).$$"$"*) $$$*
.).
.).& *&+*
/).$) ).$)
ebp
剩余11页未读,继续阅读
资源评论
qinghuayijian
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功