assembly 在程序集x86中检查函数何时开始和结束

e0bqpujr  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(122)

我想在程序中跟踪一个函数。我如何知道一个特定的函数何时开始,何时即将结束?(或刚刚结束)
我有函数的起始地址,可以检查所有的寄存器

inn6fuwd

inn6fuwd1#

如果你想知道一个函数在内部是如何工作的,你应该在你的平台上使用一个调试器。例如,如果您使用的是Windows操作系统,则可以使用Windbg和IDA Pro来调试函数。如果您使用的是基于Linux/Unix的操作系统,则可以使用gdb debugger、hopper和radare 2。例如,要确定特定函数的开始和结束时间,您可以按照下一节中提到的步骤使用Windbg实现这一点:
1.将进程附加到Windbg调试器或使用它打开程序。
1.在您感兴趣的函数的起始地址处设置断点。例如bp main。
1.使用g命令运行程序以继续执行,直到命中断点。
1.命中断点后,可以使用r命令检查程序的当前状态,包括寄存器值。这将显示处理器寄存器的值。
1.使用p命令单步执行函数,一次执行一条指令。这将允许您观察函数执行时寄存器值和内存的变化。
如果您也想在函数的末尾停止执行,可以在那里设置另一个断点。使用bp命令和函数的结束地址。
1.继续单步执行函数,直到到达末尾,并查看ret指令以返回到调用方堆栈帧。
通过在调试器中的函数的开始和结束地址处设置断点,并单步执行指令,可以跟踪执行流并观察寄存器值的更改。

相关问题