繁体   English   中英

有没有办法在GDB中监视所有寄存器的特定值?

[英]Is there a way to watch all registers for a specific value in GDB?

我是反向工程ac程序,在GDB中没有调试符号。 它要求一个特定的1-15位PIN码,并告诉您是否正确。 我的目标是找出此密码。

我很难找到将我的个人识别号与正确的个人识别号进行比较的地方。 我认为一种有用的方法是找到将我的猜测加载到寄存器中的任何位置。

因此,关于我的问题,是否可以检查并查看是否将特定值加载到任何寄存器中?

例如,我可以使用watch $rax == 1234对单个寄存器执行此操作,但是我想对每个寄存器执行此操作。

GDB没有此功能。

这听起来像是一种不好的方法,因为如果数字是0到9之间的数字,您将得到很多误报,甚至无法确定它们的表示方式。

一种更简单的方法应该是查找与引脚进入或失败并从那里跟踪数据紧密相关的更改:

  • 如果在输入错误的引脚时出现控制台输出,请在二进制文件中查找此字符串并找到引用位置。
  • 如果这是一个控制台应用程序,请查找对scanf / printf的引用。
  • 如果未使用scanf(例如外部键盘),则可以使用scanmem之类的工具查找输入的位数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM