动态内存的自动指令分析

逆向工程 自动化
2021-07-02 10:37:12

问题简介:我有一个二进制可执行文件,其网络数据包协议未知。我想对这个数据包协议进行逆向工程。我目前的做法是发送一些数据并逐步执行反汇编中的说明,以尝试弄清楚应用程序正在使用这些数据做什么,并逐步构建正确的协议。这种解决方案效率极低。所以我想至少自动化这个过程的一部分。

假设我的网络接收功能是: int recv(SOCKET s, char * buf, int len, int flags);

我想要做的是自动跟踪读取指向的内存块的所有指令 char * buf

mov eax, [globalRecvBufferPointer]
mov dl, [eax]
cmp dl, 20h
jz somewhere

在上面的示例中,我希望我的自动化工具能够检测mov dl, [eax]cmp dl, 20h指示。
添加硬件 r/w 断点char * buf让我检测mov dl, [eax]而不是另一个。
在这个阶段我能想到的另一个问题是当指向的内存char * buf被复制到堆栈或其他内存位置时。

这种操作有现成的工具吗?如果没有,是否有工具可以实现这个想法?

1个回答

听起来您想要动态污点分析。有一个支持良好的开源选项,称为Panda如果您有钱花,请查看商业产品Reven