首页
社区
课程
招聘
[原创] 发点好玩的东西 x 2,但是依旧没源码
发表于: 2023-4-29 17:22 23912

[原创] 发点好玩的东西 x 2,但是依旧没源码

2023-4-29 17:22
23912
收藏
免费 6
支持
分享
最新回复 (18)
雪    币: 6124
活跃值: (4656)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
2
6
2023-4-29 17:24
0
雪    币: 633
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
6
2023-4-29 17:48
0
雪    币: 1129
活跃值: (2751)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
没太看懂。。。
2023-4-29 21:58
0
雪    币: 1282
活跃值: (4555)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
2023-4-30 09:02
0
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
6
Oday小斯 没太看懂。。。
打印(
精易模块.一键获取虚表指针()
精易模块.一键获取虚表大小()
);
2023-4-30 13:30
1
雪    币: 3070
活跃值: (30876)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
mark
2023-4-30 16:21
1
雪    币: 576
活跃值: (2035)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我记得MFC可以RTTI得到,非MFC没关注过
2023-5-1 00:00
0
雪    币: 9014
活跃值: (6240)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9

const char* ClassName(intptr_t obj)
{
       intptr_t classTable = GetPtr<intptr_t>(obj);
       if ((classTable > GameModule(0)) && (classTable < GameModule(0x6000000)))
       {
               intptr_t FuncInfo = GetPtr<intptr_t>(classTable - sizeof(intptr_t));
               FuncInfo = GetPtr<DWORD>(FuncInfo + 0xC);
               return (const char*)(GameModule(FuncInfo) + 0x10 + 2);
       }
       return 0;
}
多写几个判断就可以了把、上面的代码就可以根据c++类指针 得到类名
那么只要反向搜索就能得到虚函数表头,
然后表的大小。直接指针大小一直读,读到内存错误或者非代码区就结束。
个人看法就是多写几个判断就能得到你说的效果

最后于 2023-5-3 00:57 被mudebug编辑 ,原因:
2023-5-3 00:55
0
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
10
mudebug const&nbsp;char*&nbsp;ClassName(intptr_t&nbsp;obj){ &nbsp; &nbsp; &nbsp; &am ...
二进制分析的话,自己玩玩,写点盖什么的是可以。上生产环境的话,还是编译器比较靠谱
2023-5-3 01:23
0
雪    币: 4378
活跃值: (4368)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11

不知道用途是什么? 如果你是要获取地址可以直接获取, 好像大小可以直接地址求得,貌似用处不大  :)
//表
uintptr_t* vtableAddress = *(uintptr_t**)&obj; //Class::`vftable
//大小
size_t vtableSize = 0;

while (vtableAddress[vtableSize]) {

vtableSize++;

}


最后于 2023-5-3 10:25 被Mxixihaha编辑 ,原因:
2023-5-3 10:20
0
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
12
没有编译器规范规定虚表结束的位置就一定是0吧?如果运气好撞上其他变量,或者撞上其他人的虚表呢?
2023-5-3 11:49
0
雪    币: 4378
活跃值: (4368)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
hzqst 没有编译器规范规定虚表结束的位置就一定是0吧?如果运气好撞上其他变量,或者撞上其他人的虚表呢?

你都已经把类写出来了  直接数就是了.

不知道意义是用于干嘛的      vs肯定是 0

最后于 2023-5-4 00:03 被Mxixihaha编辑 ,原因:
2023-5-3 23:52
0
雪    币: 2325
活跃值: (2304)
能力值: ( LV6,RANK:89 )
在线值:
发帖
回帖
粉丝
14
交出你的源码           btw,虚表应该撞不上变量吧,应该没有编译器这么离谱
2023-5-5 10:36
0
雪    币: 266
活跃值: (204)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
6
2023-5-5 13:33
0
雪    币: 2821
活跃值: (2836)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
Mxixihaha hzqst 没有编译器规范规定虚表结束的位置就一定是0吧?如果运气好撞上其他变量,或者撞上其他人的虚表呢? 你都已经把类写出来了&nbs ...
vs也不一定以0结尾啊。测试了下,VC2005,Release,“全程序优化”改成“无全程序优化”后就不会以0结尾,虚函数表后面跟了一些字符串。好奇的是这个数量是怎么获取的,看图片打码的位置不是点".",看着像下划线"_",看着也不像"s_test."这么短。下面那张反编译的图又说明获取大小应该有办法可以直接计算或获取,否则不应该被编译器直接优化为5。
2023-5-10 15:38
0
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
17
xuezhimeng vs也不一定以0结尾啊。测试了下,VC2005,Release,“全程序优化”改成“无全程序优化”后就不会以0结尾,虚函数表后面跟了一些字符串。好奇的是这个数量是怎么获取的,看图片打码的位置不是点&q ...
答案是直接魔改编译器加私货
2023-5-10 22:57
0
雪    币: 29
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
18
又是羡慕大佬的一天
2023-6-10 19:11
0
雪    币: 72
活跃值: (128)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
观摩一下
2023-11-16 19:33
0
游客
登录 | 注册 方可回帖
返回
//