首页
社区
课程
招聘
未解决 [求助]发现一个 std::function 虚函数表(vftble) 的小问题: 虚函数表的第一项(_Copy)和第二项(_Move)函数地址相同(已解决√)
2020-12-31 01:21 1826

未解决 [求助]发现一个 std::function 虚函数表(vftble) 的小问题: 虚函数表的第一项(_Copy)和第二项(_Move)函数地址相同(已解决√)

2020-12-31 01:21
1826

代码用到了 c++ STL 的 std::function, 反汇编时发现 std::function 的虚函数表第一项(_Copy)和第二项(_Move)的竟然是相同的实现代码( 付费问答区起步五十块, 小弟囊中羞涩, 哪位大哥帮忙解答下, 手机号私信给我, 帮你充 10 块花费).

 

STL 库中 _Func_base 的虚函数定义
STL 库中 _Func_base 的虚函数定义

 

虚函数表的第一项和第二项函数地址相同!!

 

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <functional>
 
class CheatingDetector {
public:
    void foo(int val) {
        printf("%d\n", val);
    }
};
 
int main() {
    using namespace std::placeholders;
 
    std::function<void(int)> f2(std::bind(&CheatingDetector::foo, new CheatingDetector(), _1));
    f2(1);
 
    return 0;
}

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

最后于 2020-12-31 14:36 被funte编辑 ,原因:
收藏
免费 0
打赏
分享
最新回复 (1)
雪    币: 36
活跃值: (62)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
funte 2020-12-31 01:25
2
0

附上代码:

#include <iostream>
#include <functional>

class CheatingDetector {
public:
    void foo(int val) {
        printf("%d\n", val);
    }
};

int main() {
    using namespace std::placeholders;

    std::function<void(int)> f2(std::bind(&CheatingDetector::foo, new CheatingDetector(), _1));
    f2(1);

    return 0;
}


游客
登录 | 注册 方可回帖
返回