7

谁说IDA不支持撤销和重做?拜托老黄历了,软件在升级,时代在进步!

 2 years ago
source link: https://www.52pojie.cn/thread-1587071-1-1.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
查看: 1007|回复: 5

[分享] 谁说IDA不支持撤销和重做?拜托老黄历了,软件在升级,时代在进步!

  [复制链接]

楼主

发表于 2022-2-13 09:22

本帖最后由 冥界3大法王 于 2022-2-13 15:32 编辑

动作名称:重做(Ctrl+Y)

此命令恢复先前发出的撤消命令。可以多次使用重做。
此命令还恢复在最后一个撤消命令之后对数据库所做的所有更改,包括自动分析所做的最终有用的修改。换句话说,整个数据库被修改以达到它在执行最后一个撤消命令之前的确切状态。

动作名称:撤消(Ctrl+Z)

此命令将数据库恢复到执行最后一个用户操作之前的状态。可以多次应用撤消,在这种情况下,多个用户操作将被还原。
请注意,整个数据库都被还原,包括执行用户操作后对数据库所做的所有修改,包括未连接到用户操作的修改。例如,如果第三方插件在用户操作期间或之后修改了数据库,则此修改将被还原。从理论上讲,可以及时回到最开始并将数据库恢复到执行第一个用户操作后立即存在的状态状态。然而,实际上,由于自动分析所做的更改,撤消缓冲区会溢出。自动分析 生成大量的撤消数据。另请注意,在自动分析期间维护撤消数据会稍微减慢它的速度。实际上,这并不是什么大问题,因为撤消数据的限制很快就达到了(几分钟之内)。因此,如果在分析过程中用户没有执行任何修改数据库的操作,撤消功能将暂时关闭。

但是,如果您不想在初始自动分析期间完全收集撤消数据,只需关闭 ida.cfg 中的 UNDO_DURING_AA 参数即可。

配置文件ida.cfg还有 2 个与 undo 相关的参数:

UNDO_MAXSIZE 撤消缓冲区的最大大小;默认:128MB
                一旦达到此限制,有关最旧的撤消信息
                用户操作将被遗忘。
  UNDO_DEPTH 要记住的最大用户操作数;默认值:1000000
                如果设置为 0,撤消功能将不可用。
由于撤消缓冲区的大小有限制,任何操作,即使是最微小的,都可能在一段时间后变得不可撤消。这是真的,因为分析或插件可能会继续修改数据库并溢出缓冲区。一些大规模的操作(例如删除段)可能是不可撤消的,因为它们生成的撤消数据量巨大。
请注意,撤消不会影响 IDC 或 Python 脚本的状态。脚本变量不会因为撤消而改变它们的值。也不能更改数据库外部的任何内容:创建的文件不会被删除,等等。

某些操作无法撤消。例如,无法撤消启动调试器或从断点恢复。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK