用`a`在Radare中学习细粒度分析?

逆向工程 雷达2 静态分析
2021-06-14 15:39:54

Radare 社区似乎普遍看不起简单地运行AAAAAAA声称您需要学习细粒度分析和他们做什么。但是,似乎没有关于此的文档。

我在哪里可以了解到这些是做什么的?这为我提供了什么?

> a~analyze
| aa[?]              analyze all (fcns + bbs) (aa0 to avoid sub renaming)
| a8 [hexpairs]      analyze bytes
| ab[b] [addr]       analyze block at given address
| abb [len]          analyze N basic blocks in [len] (section.size by default)
| ac [cycles]        analyze which op could be executed in [cycles]
| ad[?]              analyze data trampoline (wip)
| ad [from] [to]     analyze data pointers to (from-to)
| ae[?] [expr]       analyze opcode eval expression (see ao)
| af[?]              analyze Functions
| ao[?] [len]        analyze Opcodes (or emulate it)
| as[?] [num]        analyze syscall using dbg.reg

它只会变得更可怕aa

aab - perform basic-block analysis ("Nucleus" algorithm)
aac - analyze function calls from one (selected or current function)
aaf - analyze all function calls
aar - analyze data references
aad - analyze pointers to pointers references

我只是想看到一些东西把这些结合在一起。有关于这些的教程吗?似乎有数百个选项提供了对分析的细粒度控制,但几乎无法解释它们所提供的内容,而不是上述词语。

1个回答

二元分析不是一件简单的事情,它由许多不同的任务构成,这些任务一起可能会产生繁重而缓慢的任务。为了获得最佳结果,您需要了解您希望了解有关您当前正在处理的二进制文件的哪些信息。

确实如此,radare2 社区鼓励其用户并不总是选择 的简单方法aaa,尤其是在 bing 二进制文件中。或者,它表明用户会理解他想要实现的目标,并对分析有更多的控制。

我在 Stack Exchange RE 上提供了关于以下问题的详细答案:How to makeradare2 work for a large binary?.
在radare2 博客中还有一篇关于该主题的精彩帖子:默认分析

有关更详细的解释,您可以随时阅读代码,因为radare2 是完全开源的。