Ponce是一款IDA Pro插件,该工具采用C/C++开发,它可以帮助用户以一种快速简洁的方式对目标代码进行污点测试以及符号执行。用户只需点一下鼠标或者按一下键盘,剩下的就可以交给Ponce了。
在安全社区,符号执行已经不是什么新概念了。自从Triton和Angr等开源项目诞生之后,符号执行更是“风靡”整个安全圈。为了帮助研究人员解决特殊的使用场景,我们专门开发了这款IDA插件,推荐反编译/逆向工程师使用。
工具安装
Ponce支持IDA 6.8和IDA 6.9x版本的32位以及64位代码,大家只需要将相应的文件(最新版)拷贝到IDA安装目录下的plugins\文件夹即可。
IDA 7.0
Ponce默认还支持Windows平台下的IDA 7.0(32位/64位),用户只需将latest_builds中的Ponce64.dll拷贝到IDA安装目录中的plugins\文件夹即可使用。别忘了把下面这行代码拷贝到同一目录下的plugins.cfg文件中,并完成Ponce的注册:
Ponce Ponce Ctrl+Shift+Z 0 WIN
操作系统支持
Ponce支持在Windows、Linux和macOS上运行。
使用模式
-污点引擎:这个引擎可以判断代码执行的每一个步骤中,哪一部分内存或寄存器是用户输入可以控制的。
-符号引擎:这个引擎可以维护寄存器的符号状态以及内存中的代码执行路径。
使用样例
通过符号执行来解决crackME
下面我们演示如何使用符号引擎以及如何求解约束:
1、 传递参数”aaaaa”;
2、 选择符号引擎;
3、 转换argv[1](aaaaa);
4、 识别符号情况;
5、 测试解决方案
Crackme源代码:【点我获取】
使用污点引擎追踪用户输入
接下来,我们看看如何使用污点引擎并结合cmake来追踪用户输入:
1、 以文件作为参数传递给cmake,并进行文件解析;
2、 选择我们想要使用的污点引擎;
3、 从文件中读取数据至缓冲区;
4、 查看调试控制器数据;
5、 Ponce将会重命名污点函数,并将受影响的函数信息提供给用户;
详细的使用样例及参考信息请移步该项目的GitHub主页。
项目地址
Ponce:【GitHub传送门】
* 参考来源:Ponce,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM