首页
社区
课程
招聘
[原创]x64dbg快速找call插件
2023-7-9 22:55 26498

[原创]x64dbg快速找call插件

2023-7-9 22:55
26498

不知道各位调试GUI程序时,想定位某个功能的代码一般是用什么方式呢?通常我们会根据经验在某个系统API下断,然后栈回溯往上找关键call。
为了简化这个过程,我借鉴cheat engine找数据的方法,开发了一个找call的调试器插件。插件原理是扫描用户模块(exe+dll)中的函数,然后设置breakif(0)的条件断点,这样就可以获取函数被调用的次数。随后我们触发一次某个功能,就搜索一次调用次数,这样很快就能找到关键call。
下面是用法演示:
比如我们想知道winspy++程序是如何枚举窗口的,最直接的方式就是找到"Refresh"按钮的点击事件:

图片描述

先让程序跑起来,然后调出插件,点击"scan functions"按钮,默认会以“快速模式”扫描主模块中的函数并下断点:

图片描述

然后我们点击一次"Refresh"按钮,在call count文本编辑框输入1,再点击search:

图片描述

图片描述

这样就把范围缩小到4个函数,只需要手工确认一下就可以发现第二个函数就是我们想找的关键call:

图片描述

整个过程只花了一分钟,关键是不怎么费脑子~~

编译好的插件dp32、dp64只需复制到x64dbg插件目录即可。

源码链接如下:

https://github.com/Kwansy98/x64dbgCallFinder

建议去github下载最新版本的二进制文件,看雪这边的附件可能不会及时更新。


[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

最后于 2023-9-27 23:49 被hambaga编辑 ,原因: 更新附件
上传的附件:
收藏
点赞40
打赏
分享
打赏 + 25.00雪花
打赏次数 2 雪花 + 25.00
 
赞赏  lononan   +20.00 2023/07/11 助人为乐~
赞赏  执着的追求   +5.00 2023/07/10 思路很棒。
最新回复 (60)
雪    币: 3797
活跃值: (5570)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
huangjw 2023-7-9 23:05
2
0
赞一个先
雪    币: 19349
活跃值: (28971)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
秋狝 2023-7-9 23:47
3
1
感谢分享
雪    币: 6897
活跃值: (3493)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
romobin 2023-7-10 04:01
4
0
可以啊 !关键是想法的创意好,难度不算高,想法太棒了 !非常赞
雪    币: 31978
活跃值: (7105)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ninebell 2023-7-10 04:48
5
0
图片挂了,哥们!能否加上是否踩中功能?貌似配合调试视图即可办到。
雪    币: 6897
活跃值: (3493)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
romobin 2023-7-10 04:52
6
0
测试效果不错,反馈个bug, 插件会导致程序无法停在入口点,直接跑飞
雪    币: 154
活跃值: (818)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
andydau 2023-7-10 07:44
7
0
很赞的插件,后续继续加油
雪    币: 154
活跃值: (818)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
andydau 2023-7-10 08:01
8
0
 插件会导致程序无法停在入口点,直接跑飞
雪    币: 8062
活跃值: (2326)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
speedboy 2023-7-10 09:32
9
0
喜欢傻瓜模式
雪    币: 257
活跃值: (685)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yuyuchun 2023-7-10 09:57
10
0
插件挺好,但体验过程有以下问题:
1.调试的软件会直接跑起来???没停在入口?
2.查找函数的时间如果能快一点的话可能体验更好,或者是弄一个搜索的进度条?
3.找出的CALL能否加一个右键全部下断点的功能?
4.现在是不是只增增加1次???加第二次我点了没反应?
雪    币: 4670
活跃值: (1608)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
axiong 2023-7-10 10:02
11
0
构思很巧妙
雪    币: 231
活跃值: (2266)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
hambaga 2023-7-10 10:09
12
0
yuyuchun 插件挺好,但体验过程有以下问题: 1.调试的软件会直接跑起来???没停在入口? 2.查找函数的时间如果能快一点的话可能体验更好,或者是弄一个搜索的进度条? 3.找出的CALL能否加一个右键全部下 ...
1.入口跑飞是因为附加后自动bc清除断点,我稍后调整一下;
3.扫描函数后会自动下断点breakif(0)
4.编辑框输入的数字就是函数调用次数,需要手动改
雪    币: 231
活跃值: (2266)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
hambaga 2023-7-10 10:10
13
0
ninebell 图片挂了,哥们!能否加上是否踩中功能?貌似配合调试视图即可办到。
没太明白,有参考资料吗
雪    币: 154
活跃值: (818)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
andydau 2023-7-10 10:23
14
0
hambaga 没太明白,有参考资料吗
 不是附加的时候一样跑飞,载入程序就跑飞了,需要调整一下程序逻辑。
还有那个API断点插件,重载的时候断点一直都在,哪怕是取消了断点再重载还是会存在断点的bug
雪    币: 5089
活跃值: (4394)
能力值: ( LV5,RANK:65 )
在线值:
发帖
回帖
粉丝
gamehack 2023-7-10 10:42
15
0
感谢分享!
雪    币: 21817
活跃值: (3607)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
huangyalei 2023-7-10 10:51
16
0
andydau 不是附加的时候一样跑飞,载入程序就跑飞了,需要调整一下程序逻辑。 还有那个API断点插件,重载的时候断点一直都在,哪怕是取消了断点再重载还是会存在断点的bug
楼主的附加跟你的附加不是一回事,程序载入就附加了,这时清除断点就会把原有的断点清除,只要载入过的软件断点都会没有了,也没有备份,这对我这种喜欢在断点上做记录的不是很友好,如果能手动选择是否启用插件,并提供备份功能(其实就是备份db目录下的.dd64文件),这样就比较人性化了;API断点插件要清除断点需要在插件里取消勾选,在断点列表删除断点会自动再加上,所以你会以为是断点没有删除成功
雪    币: 8071
活跃值: (4355)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
sunsjw 1 2023-7-10 11:00
17
0
这就是创新。。。
雪    币: 3596
活跃值: (2472)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
文西哥 2023-7-10 12:42
18
0
思路很好呀,可以继续完善插件
雪    币: 3436
活跃值: (3550)
能力值: ( LV3,RANK:37 )
在线值:
发帖
回帖
粉丝
qqzxc 2023-7-10 14:59
19
1
和ce的code filter基本差不多。但是看着比ce的好使点
雪    币: 2378
活跃值: (2242)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
gtict 2023-7-10 15:45
20
1
找到四万个多断点,,直接卡死~~
雪    币: 231
活跃值: (2266)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
hambaga 2023-7-10 16:05
21
0
gtict 找到四万个多断点,,直接卡死~~
超过1000+断点会卡爆,后续再想办法优化,目前是调不了游戏的
雪    币: 13445
活跃值: (4773)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tDasm 2023-7-10 16:15
22
0

原代码级?代码加花或混淆就找不到call。对所有call下断效率低执行速度慢。
既然是原代码,直接用IDA反编译再分析比较好。再就是你说的,对相关api下断再回朔也可以。
你这个优点是适合盲扫call

最后于 2023-7-10 16:16 被tDasm编辑 ,原因:
雪    币: 231
活跃值: (2266)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
hambaga 2023-7-10 16:17
23
0
qqzxc 和ce的code filter基本差不多。但是看着比ce的好使点
学习了
雪    币: 4157
活跃值: (1325)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
pizazzboy 2023-7-10 16:50
24
0
感谢分享精彩的思路。
雪    币: 29414
活跃值: (18695)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2023-7-10 16:55
25
1
思路不错,很适合爆破一些功能限制的程序
游客
登录 | 注册 方可回帖
返回