首页
社区
课程
招聘
[下载][原创]Qt5--通过信号查找槽函数插件
发表于: 2021-3-15 13:55 9868

[下载][原创]Qt5--通过信号查找槽函数插件

2021-3-15 13:55
9868





064K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1j5J5y4K6R3I4y4e0f1K6x3K6V1%4i4K6u0r3M7i4b7#2i4K6g2X3M7X3g2K6L8$3I4$3k6i4u0Q4x3X3g2Y4K9i4c8Q4c8f1k6Q4b7V1y4Q4z5p5y4Q4c8e0g2Q4z5p5k6Q4b7f1q4Q4c8e0S2Q4z5o6y4Q4b7V1c8Q4c8e0g2Q4z5f1y4Q4b7e0S2$3k6i4u0K6K9h3!0F1i4@1f1@1i4@1t1^5i4@1u0m8y4#2!0q4y4#2)9&6b7g2)9^5y4s2q4@1i4@1f1@1i4@1t1^5i4K6S2m8i4@1f1^5i4@1u0r3i4K6V1H3i4@1f1^5i4@1p5I4i4K6S2o6

查找Qt槽函数的插件--qt5_resolver完成。仍然有些问题无法解决,而且依旧只实现了-d参数。
在执行脚本时必须先暂停调试器.当信号被当作槽函数连接时,无法解析出对应的槽函数名称.这种情况下,被当作槽函数的信号并不在QObjectPrivate的ConnectionList中而是通过硬编码索引,利用activate路由到qt_static_metacall.如果有解决方法,希望有大佬能够提点我一下.
下面是测试代码以及脚本效果.
查找Qt槽函数的插件--qt5_resolver完成。仍然有些问题无法解决,而且依旧只实现了-d参数。
在执行脚本时必须先暂停调试器.当信号被当作槽函数连接时,无法解析出对应的槽函数名称.这种情况下,被当作槽函数的信号并不在QObjectPrivate的ConnectionList中而是通过硬编码索引,利用activate路由到qt_static_metacall.如果有解决方法,希望有大佬能够提点我一下.

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

最后于 2021-4-29 17:30 被狐臭编辑 ,原因:
收藏
免费 4
支持
分享
最新回复 (23)
雪    币: 220
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
可以利用这个过检测
2021-4-5 15:45
0
雪    币: 225
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
程序跑起来进了x32dbg。但是插件没看到qt_resolver是为什么?然后我就直接把下载的里面的debug和release版本的里面的文件都放到x32dbg插件文件夹还是没看到这个插件额。我放其他的插件,可以看到其他的插件。
2021-4-29 16:11
0
雪    币: 225
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
原来有加载了!原来是输入命令行。但是要断在什么地方再输入命令行啊?还是随时可以?我输入了直接start然后就end了
2021-4-29 17:24
0
雪    币: 749
活跃值: (1546)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
5
Skyart 原来有加载了!原来是输入命令行。但是要断在什么地方再输入命令行啊?还是随时可以?我输入了直接start然后就end了
这东西不完整,跑起来会卡住,中间有个循环的条件要改一下.
63dK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1j5J5y4K6R3I4y4e0f1K6x3K6V1%4i4K6u0r3M7i4b7#2i4K6g2X3M7X3g2K6L8$3I4$3k6i4u0Q4x3X3g2Y4K9i4c8Q4x3V1y4Q4c8e0S2Q4b7V1k6Q4z5e0W2Q4c8e0c8Q4b7U0S2Q4b7f1q4Q4c8e0c8Q4b7V1k6Q4b7f1g2Q4c8e0k6Q4b7f1c8Q4b7e0y4Q4c8e0c8Q4b7V1q4Q4z5o6k6Q4c8f1k6Q4b7V1y4Q4z5p5y4Q4c8e0g2Q4b7U0W2Q4b7U0k6Q4c8e0c8Q4b7U0S2Q4z5e0c8^5y4U0c8Q4c8e0g2Q4z5e0u0Q4z5p5y4^5z5o6k6Q4c8f1k6Q4b7V1y4Q4z5p5y4Q4c8e0c8Q4b7V1c8Q4z5o6k6Q4c8e0k6Q4z5e0S2Q4b7f1k6Q4c8e0g2Q4z5p5k6Q4b7f1q4Q4c8e0S2Q4z5o6y4Q4b7V1c8Q4c8e0g2Q4z5f1y4Q4b7e0S2$3k6i4u0K6K9h3!0F1y4#2!0q4y4#2)9&6b7g2)9^5y4q4!0q4y4#2)9^5z5g2)9^5z5q4!0q4y4W2)9&6b7#2!0m8b7#2!0q4y4q4!0n7z5q4)9^5b7g2!0q4z5q4!0n7y4#2)9&6x3g2!0q4c8W2!0n7b7#2)9^5b7%4k6W2M7Y4y4A6L8$3^5^5i4@1f1@1i4@1t1^5i4@1q4p5i4@1f1#2i4K6S2r3i4@1q4m8i4@1f1^5i4K6R3K6i4@1u0p5i4@1f1$3i4K6R3&6i4K6V1K6i4@1f1#2i4K6S2p5i4@1t1H3i4@1f1#2i4K6R3%4i4@1u0m8i4@1f1#2i4K6R3#2i4K6R3K6i4@1f1$3i4K6V1#2i4@1t1H3i4@1f1$3i4K6S2p5i4@1q4q4i4@1f1#2i4K6V1H3i4K6S2p5i4@1f1%4i4@1p5%4i4@1t1H3
2021-4-29 17:28
0
雪    币: 225
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
狐臭 这东西不完整,跑起来会卡住,中间有个循环的条件要改一下. 2ecK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1j5J5y4K6R3I4y4e0f1K6x3K6V1%4i4K6u0r3M7i4b7#2i4K6g2X3M7X3g2K6L8$3I4$3k6i4u0Q4x3X3g2Y4K9i4c8Q4x3V1y4Q4c8e0S2Q4b7V1k6Q4z5e0W2Q4c8e0c8Q4b7U0S2Q4b7f1q4Q4c8e0c8Q4b7V1k6Q4b7f1g2Q4c8e0k6Q4b7f1c8Q4b7e0y4Q4c8e0c8Q4b7V1q4Q4z5o6k6Q4c8f1k6Q4b7V1y4Q4z5p5y4Q4c8e0g2Q4b7U0W2Q4b7U0k6Q4c8e0c8Q4b7U0S2Q4z5e0c8^5y4U0c8Q4c8e0g2Q4z5e0u0Q4z5p5y4^5z5o6k6Q4c8f1k6Q4b7V1y4Q4z5p5y4Q4c8e0c8Q4b7V1c8Q4z5o6k6Q4c8e0k6Q4z5e0S2Q4b7f1k6Q4c8e0g2Q4z5p5k6Q4b7f1q4Q4c8e0S2Q4z5o6y4Q4b7V1c8Q4c8e0g2Q4z5f1y4Q4b7e0S2$3k6b7`.`. ...
使用方法是先获取到staticMetaObject结构体的地址,然后输入qt5_resolver -d 0x7AC07878吗?要如何知道staticMetaObject结构体的地址..我输入命令后一直提示异常DEP 违规,是为什么..
2021-4-30 11:14
0
雪    币: 225
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
version为7的qt 是指qt5.7吗?
2021-4-30 11:24
0
雪    币: 749
活跃值: (1546)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
8
Skyart version为7的qt 是指qt5.7吗?
qt的metaData中有一个DWORD来标识版本,我在看5.14的时候发现变成了8.
  static const uint qt_meta_data_MainWindow[] = {
 
 // content:
   7,       // 版本
   0,       // classname
   0,    0, // classinfo
   2,   14, // 函数个数,函数偏移
   0,    0, // properties
   0,    0, // enums/sets
   0,    0, // constructors
   0,       // flags
   1,       // signalCount
 
 // signals: name, argc, parameters, tag, flags
   1,    0,   24,    2, 0x06 /* Public */,
 
 // slots: name, argc, parameters, tag, flags
   3,    1,   25,    2, 0x0a /* Public */,
 
 // signals: parameters
QMetaType::Int,
 
 // slots: parameters
QMetaType::Void, QMetaType::Int,    4,
 
   0        // eod
};
2021-4-30 20:36
0
雪    币: 225
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
win10 下 ,运行起来一直提示DEP violation,我的demo有关了DEP的那个选项,但是还是一直提示这个异常是为什么?
2021-5-6 14:12
0
雪    币: 749
活跃值: (1546)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
10
Skyart win10 下 ,运行起来一直提示DEP violation,我的demo有关了DEP的那个选项,但是还是一直提示这个异常是为什么?
这个和dep有啥关系
2021-5-6 15:06
0
雪    币: 225
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
11
 x32dbg日志一直提示dep violation,然后一直循环异常,我单步跟到GetMetaObject的GUARD_GENTLE(ReadMemory(tovptr(vtable_addr), &fmetaObject_addr, sizeof(fmetaObject_addr), handle), 0);这句代码后,步过这句代码就会开始提示dep violation(我也不懂为啥dep异常,囧)
2021-5-6 17:32
0
雪    币: 749
活跃值: (1546)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
12
Skyart x32dbg日志一直提示dep violation,然后一直循环异常,我单步跟到GetMetaObject的GUARD_GENTLE(ReadMemory(tovptr(vtable_addr), ...
读内存数据怎么会触发dep呢?是不是版本的问题,我也没有遇到过dep violation,你要不把你测试的demo传上来看看.
2021-5-6 17:42
0
雪    币: 225
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13
链接:f33K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6H3j5h3&6Q4x3X3g2T1j5h3W2V1N6g2)9J5k6h3y4G2L8g2)9J5c8Y4y4Q4x3V1j5I4P5q4c8v1e0o6V1@1f1U0N6K9g2p5!0p5g2U0k6t1i4K6u0V1M7K6y4w2j5V1y4Y4i4K6t1$3L8X3u0K6M7q4)9K6b7R3`.`.
提取码:qott 
2021-5-6 19:50
0
雪    币: 749
活跃值: (1546)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
14
Skyart 链接:f6cK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6H3j5h3&6Q4x3X3g2T1j5h3W2V1N6g2)9J5k6h3y4G2L8g2)9J5c8Y4y4Q4x3V1j5I4P5q4c8v1e0o6V1@1f1U0N6K9g2p5!0p5g2U0k6t1i4K6u0V1M7K6y4w2j5V1y4Y4 提取码:qott

没有问题啊,可以正常运行.你的qt是version8,version8的qt connectList结构发生了改变,所以只能打印出函数名没办法获取到对应的槽索引.


2021-5-7 09:54
0
雪    币: 749
活跃值: (1546)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
15
Skyart 链接:f1eK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6H3j5h3&6Q4x3X3g2T1j5h3W2V1N6g2)9J5k6h3y4G2L8g2)9J5c8Y4y4Q4x3V1j5I4P5q4c8v1e0o6V1@1f1U0N6K9g2p5!0p5g2U0k6t1i4K6u0V1M7K6y4w2j5V1y4Y4 提取码:qott
脚本没有办法自己判别,输入是否为qt的对象,输入的时候最好自己确认,具体就是看他的一号虚函数是否为metaObject
2021-5-7 09:58
0
雪    币: 225
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
16
狐臭 脚本没有办法自己判别,输入是否为qt的对象,输入的时候最好自己确认,具体就是看他的一号虚函数是否为metaObject

你的也是windows10吗?输入命令qt_resolver -d 0x406000

我找到metaobject是对的吗?

异常是这样

2021-5-7 14:27
0
雪    币: 749
活跃值: (1546)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
17
Skyart 你的也是windows10吗?输入命令qt_resolver -d 0x406000我找到metaobject是对的吗?异常是这样

也是windows10

-d接收一个QObject类型的对象,并从中解析qt的槽和元数据
-s解析一个QString对象并取出其中的字符串

脚本中获取staticMetaObject的方法是通过调试器函数强行修改EIP,使其跳转到metaObject函数,并且需要在栈中压入EIP之类的数据

,你可以看看有没有对应权限

metaObject一般长这样,里面一般可以直接看到staticMetaObject:

最后于 2021-5-7 16:56 被狐臭编辑 ,原因:
2021-5-7 16:46
0
雪    币: 225
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
18
ret上面那句把staticMetaObject放到eax,那我就是输入qt_resolver -d (eax里的地址)。    是这样操作吗?。还是说输入qt_resolver -d 0x680C3690?(你的图片上的第一个地址)
2021-5-8 09:14
0
雪    币: 749
活跃值: (1546)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
19
Skyart ret上面那句把staticMetaObject放到eax,那我就是输入qt_resolver -d (eax里的地址)。 是这样操作吗?。还是说输入qt_resolver -d 0x680C3 ...
qt_resolver -d QObject的地址,也就是一个继承了QObject的对象的地址就可以了
2021-5-8 09:30
0
雪    币: 225
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
20

我现在区分不出来哪个是QObject的地址额。在你的demo里面,你的QObject的地址是0x680C3690吗?在我的demo里面,我的QObject是0x406000吗?我的0x406000长这样

2021-5-10 10:27
0
雪    币: 749
活跃值: (1546)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
21
Skyart 我现在区分不出来哪个是QObject的地址额。在你的demo里面,你的QObject的地址是0x680C3690吗?在我的demo里面,我的QObject是0x406000吗?我的0x406000长这 ...

你看他的第一个虚函数是不是metaObject()就行了,metaObject函数大概长这样

2021-5-11 10:38
0
雪    币: 749
活跃值: (1546)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
22
Skyart 我现在区分不出来哪个是QObject的地址额。在你的demo里面,你的QObject的地址是0x680C3690吗?在我的demo里面,我的QObject是0x406000吗?我的0x406000长这 ...

比如说我要获取QWidget函数信息,我直接在QWidget::show()处下断点,然后执行qt5_resolver -d rcx(对象地址),就可以了

2021-5-11 10:43
0
雪    币: 167
活跃值: (752)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
请问有没有x64dbg
2023-2-11 17:26
0
雪    币: 749
活跃值: (1546)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
24
许可飞 请问有没有x64dbg[em_13]
换个版本编译
2023-3-17 09:27
0
游客
登录 | 注册 方可回帖
返回