首页
社区
课程
招聘
IDA插件Ponce的使用
发表于: 2022-2-4 19:44 10182

IDA插件Ponce的使用

2022-2-4 19:44
10182

Ponce是一款使用C/C++开发的IDA Pro插件,它使用户能够以简单直观的方式对二进制文件执行污点分析和符号执行。

Ponce的github地址:https://github.com/illera88/Ponce

我的环境:

在github仓库的release界面下载文件(windows平台下是ponce.dll和ponce64.dll)并复制到IDA安装目录的plugins文件夹即可使用。

使用模式:

示例文件:crackme_xor.exe,源代码在https://github.com/illera88/Ponce/blob/master/examples/crackme_xor.cpp,当命令行参数为正确密钥“elite”时程序会输出Win,否则输出fail

将示例文件crackme_xor拖入ida打开

F9(或Debugger-->Select debugger...)

选择Local Windows debugger

图片描述

Debugger-->Process options,设置启动参数为“aaaaa”

图片描述

打开关键函数check(char *)的反汇编窗口,找到对应源代码for循环的关键跳转判断语句.text:0000000000401577 jz short loc_401580(确定check函数到底是返回1还是0)

F2下断点
图片描述

在Edit-->Ponce-->show config中,没有找到官方教程中的Taint argv选项,因此为了symbolize输入参数以生成解决方案,需要先找到输入参数所在的内存地址,再使用ponce标记它

分析check函数对应的反汇编代码可知,参数char *s地址在rcx寄存器,通过mov [rbp+ptr], rcx被复制到栈上参数ptr对应的位置,因此在该命令下断点

(此时一共下了两个断点,分别是关键跳转语句和参数地址语句)
图片描述

F9(或Debugger-->Start process)开始调试

程序运行到第一个断点,此时rcx寄存器内的值是0x0000000000BA1570,跳转到该地址查看数据,发现确实是输入的参数字符串“aaaaa”
图片描述

ctrl+shift+m,symbolize数据

F9(或Debugger-->continue process)运行到下一个断点

此时不断闪烁的边是程序即将跳转的分支。由于输入参数的第一个字符是'a'而非正确的密钥字符'e',因此接下来将执行return 1的代码

右键断点位置-->SMT Solver--> Negate and Inject
图片描述

重复上述过程,SMT求解得到正确密钥elite
图片描述
图片描述


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 3
支持
分享
最新回复 (5)
雪    币: 16418
活跃值: (1665)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这个不错,我要了,谢谢。
2022-2-5 07:34
0
雪    币: 35726
活跃值: (7155)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3

@uever
https://bbs.pediy.com/upload/attach/202202/946004_JGE3APG78MNKY97.png

图中的这个有一个bug,顺序能否调整成正确的? 要是钥匙长度是100位呢? 不得神经?
另外,是否支持 数据 合并成一行的功能? 这样看着不直观啊。

简单修改2处,不就更进一步了? 

最后于 2022-2-5 10:06 被ninebell编辑 ,原因:
2022-2-5 10:04
0
雪    币: 842
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
ninebell @ueverhttps://bbs.pediy.com/upload/attach/202202/946004_JGE3APG78MNKY97.png图中的这个有一个bug,顺序能否调整成正确的?&a ...
试了几次顺序都是混乱的,不知道是不是我哪里操作不对
2022-2-5 11:51
0
雪    币: 35726
活跃值: (7155)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
uever 试了几次顺序都是混乱的,不知道是不是我哪里操作不对
https://www.52pojie.cn/thread-1583436-1-1.html
我给找来个明白人,不知有没有帮助? 学习下吧。
2022-2-6 09:48
0
雪    币: 842
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
ninebell https://www.52pojie.cn/thread-1583436-1-1.html 我给找来个明白人,不知有没有帮助? 学习下吧。
学习到了,感谢!
2022-2-6 13:40
0
游客
登录 | 注册 方可回帖
返回
//