看一个值而不是一个地址?

Watch a value instead of an address?

总而言之,我是逆向工程的新手,很难准确找到应用程序中出现消息框的原因,而我没有源代码。

我尝试使用非常慢的 搜索文本 看看它是否会找到 "Error when trying to download (...)"。但看起来消息文本是从线路接收到的,因此不是二进制文件中的 const 字符串。

我也完全不知道函数在哪里,因为弹出消息时我不能"instantly break",所以我想知道是否有办法创建一个注意价值之类的东西?

这个想法是让 IDA 准备好在任何地址分配有 int32 值 65000(十进制)时中断。

如果你想 "watch for the value 'Error when trying to download (...)'" - 那么你可能会发现它非常复杂,资源繁重,尽管可能。您必须 "trace" 进入处理器执行的每个操作码并检查您需要的地方(例如 - 堆栈)该值(或指向它的指针),这可以通过 PIN Tools 完成.该工具允许您在每个操作码、函数调用或 "block"(在 IDA 中表示)之间高效地执行您希望的任何汇编代码,方法是操纵周围的操作码,使它们不会受到影响。尝试这件事真的很有趣。

但是,您可能想要做的是 中断 MessageBoxW 或 MessageBoxA。只需导航到那里(按 G 并写入 MessageBoxW 并放置一个断点)。这将在应用程序调用 MessageBoxW 时中断,然后您可以检查堆栈以查看它是从哪里调用的。