刀2.0释放

2021-04-07 18:02:52

我们很兴奋地释放刀具v2.0 - 使用规则作为其核心后端的刀具的第一个释放。自从分叉RADARE2并创建RIZIN以来,我们在改善项目功能,整体稳定和我们工作方式方面投入了无数的小时。释放切割器2.0是我们的重要里程碑,因为我们相信我们对我们的核心 - 里齐宁和刀具本身的最新改进是创建更好的逆向工程软件的起点。

你们中的许多人等待着我们的第一次发行,现在终于达到了。在这篇文章中,我们注意到我们对刀具所做的一些更改以及您应该期望在此新版本中看到的内容。要查看详细的变更或下载刀具2.0,请查看GitHub上的发布!

在逆向工程会话期间,能够通过评论,函数和变量名称等注释来跟踪获得获得的知识至关重要。因此,该工具还在使用,也需要提供可靠和未来的方法来保存和恢复这些信息。这一功能对我们和我们的用户非常重要,并且由社区经常要求。

达到此版本,Cutter只有基本和不可靠的支持,可以保存用户在项目中的工作,RADARE2提供的功能。当RIZIN从RAWARE2分叉时,该团队决定从头开始创建可靠的保存和加载项目机制。这个新创建的项目功能的技术细节在Rizin的博客中发布的专用帖子中描述。

Cutter 2.0为项目推出全面支持,您现在可以保存并无缝地加载您的工作。该功能符合Beta支持,直到Rizin的第一个主要版本(v1.0)。

顺便说一下,因为刀具直接使用Rizin的项目格式,所以在命令行中创建的项目可以直接加载在刀具中,反之亦然,使您可以随时在两个工具之间更改。

在项目中保存您的工作是简单而直观的。单击“文件”菜单,然后选择“保存项目”或“保存项目为”。这将打开一个对话框,该对话框会询问您要在哪里保存新项目。 Rizin和Cutter项目的扩展为.RZDB。

希望使用键盘快捷方式的人可以使用Ctrl + S来保存项目。您可以在工作期间多次使用这些快捷方式,以将更改保存到项目文件。

切割器中的开放项目可以两种方式完成。第一个,来自Cutter开放对话框中的“项目”选项卡。要执行此操作,请打开切割机并单击“项目”选项卡。在那里,您将看到您创建或加载的最近项目。双击项目,或单击“选择”并从对话框中选择另一个项目文件。

在Cutter中打开项目的第二个选项是通过命令行。要执行此操作,请使用-p或-project标志运行刀具:

我们在此版本中非常兴奋的另一个功能是向所有调试后端添加反向调试,包括远程和ESIL。反向调试允许您向后移动程序计数器并在该点恢复程序状态到保存状态。

Debug工具栏现在包含启动“跟踪会话”的选项,该选项可以反向调试:

启动跟踪会话后,刀具开始录制程序的内存并从当前程序计数器注册更改。这允许您向后逐步向后返回,以将程序状态恢复到跟踪会话的第一个录制指令:

踩踏或继续后,我们在录制的会话中找到目标指令,并将寄存器和内存的状态恢复到该点。值得注意的是,刀具不处理信号或SYSCALL等非确定性事件。

与常规继续,倒退目前仅由于中断而停止(通过单击“暂停过程”按钮)或断点。否则,它将一直返回会话的第一条指令。

由于切割器在每个指令上停止记录内存和寄存器在继续时更改,因此这可能会显着减慢两点之间的遍历。要解决此问题,我们还将dbg.trace_continue(default = true)标志添加到调试设置。此标志允许用户仅在两个状态之间保存程序的状态:第一个状态是在继续之前的原始程序计数器位置,第二个状态是运行的目的地。这意味着在继续如图所示继续之前,逐步向后将返回最后录制的点:

去年,我们问你在刀具中看到有什么东西改善。许多人提到重命名的基本工作流程不是用户友好的,可以改进。事实上,在最近几个月里,我们正在改进它并创建一个更容易重命名的工作流程,您可以在拆卸中的许多地方在拆卸中重命名函数,标志等。您还可以使用n在某些地址中添加新标志。

在刀具中重命名时有更好的改进,例如在更好地支持在分解器中重命名符号和重命名信息。我们计划在未来的发布中改进这些领域。

在Cutter V2.0中添加的新功能是在图形视图中显示基本块偏移的选项。启用后,每个基本块将在顶部显示其启动地址。可以从首选项视图启用或禁用此功能:编辑→首选项→拆卸→图表→在每个图形块中显示第一条指令的偏移量。

切割器的函数小部件具有功能,允许用户通过在列表中悬停在函数名称上悬停在鼠标上来预览函数的内容。现在,在我们的新版本中,我们通过在“拆卸”视图中,悬停在它们中,扩展了此功能并添加了对预览函数,标志或地址的内容的支持。这将允许您快速查看目标地址中的数据和代码,而不会导航到此地址。

我们改进了多个表视图小组件,现在显示在这些地址中添加的注释。例如,如果用户向字符串的偏移量或标志添加了注释,则注释将显示在列表中。