C++ 跟踪/跟踪某个值的状态';在不同的寄存器/内存位置传递?

C++ 跟踪/跟踪某个值的状态';在不同的寄存器/内存位置传递?,c++,debugging,assembly,encryption,reverse-engineering,C++,Debugging,Assembly,Encryption,Reverse Engineering,在Ollydbg中,我有一个我正在调试的具有特定值的程序的指令地址。该值在许多循环中传递。是否有任何方法可以让我“跟踪”该值,而无需手动单步遍历每个循环并尝试跟踪该值传输到的位置?对于15000多个指令循环,我无法手动执行此操作 我最终尝试将其跟踪到一个加密函数,在该点上它应该消失,我将知道我已经达到了这个程序中的加密。如果有某种方法我可以“自动跟踪”它,并在它完全消失时使程序暂停,那么它应该引导我正确地使用我的加密功能 我怀疑这样的事情是否可能发生,但我想问一下也无妨 如果需要,我的操作系统是

在Ollydbg中,我有一个我正在调试的具有特定值的程序的指令地址。该值在许多循环中传递。是否有任何方法可以让我“跟踪”该值,而无需手动单步遍历每个循环并尝试跟踪该值传输到的位置?对于15000多个指令循环,我无法手动执行此操作

我最终尝试将其跟踪到一个加密函数,在该点上它应该消失,我将知道我已经达到了这个程序中的加密。如果有某种方法我可以“自动跟踪”它,并在它完全消失时使程序暂停,那么它应该引导我正确地使用我的加密功能

我怀疑这样的事情是否可能发生,但我想问一下也无妨


如果需要,我的操作系统是Windows7x86

没有我使用过或听说过的调试器可以让你像那样“跟踪”

唯一的选择是编写某种调试器插件(如果调试器支持)或一个特殊程序来驱动调试器中的执行,一条指令接一条指令,并查看值的位置、到哪个寄存器、到哪个其他内存位置等,并且它可能不会从内存和寄存器中完全“消失”。而且它可能太慢而不实用


如果您有可用的源代码(我认为您没有),您可能会更好地进行代码检查,但这样您就知道该函数在哪里,并且不会提出问题。

静态分析可以更好地处理您的任务

另一方面,它还有代码跟踪和数据流分析模块

它的工作原理是设置成千上万个断点(扫雷舰示例中为50k),然后记录被击中的时间以及设置的上下文。您可能需要运行几次,最好是在每次执行期间更改正在跟踪的值(是否为输入?)。 是的,这是一种非常暴力的方法,对于大文件来说可能会变得非常缓慢