ida调试技巧-通过修改eip寄存器的值强制运行程序中存在但未被调用的函数

ctf逆向分析过程中有一类情况是程序中有某个函数未被调用,但其中存在一些重要信息(例如flag)且需要运行(即动态调试)后才可以获取到

因为主函数的进程中从未调用,因此单纯的调试无论如何也无法进入该函数

eip寄存器用来存储CPU要读取指令的地址,CPU通过EIP寄存器读取即将要执行的指令,故而修改eip寄存器的值可以让cpu直接执行某函数

参考本篇->EIP寄存器——详解(for me)_eip寄存器详解-CSDN博客


 一,题目链接

NSSCTF | 在线CTF平台


二,演示

本题的具体分析略过,最终目的是要调用_ques()这个函数,它在main函数的进程中从未被调用

切换汇编视图查看该函数的起始地址,为【0x00401520】(注意地址一定是十六进制的!)

找到main函数,查看汇编代码,在main函数结束的位置(retn指令)打上断点

F9开始调试(选择【Local Windows debugger】),停于断点处,此时双击右上角的eip寄存器并修改其值为欲调用函数_ques()的地址【0x00401520】后,直接跳转到该函数

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值