是否可以调用从 DLL 导出的类的私有(private)方法?
它会不会对想要使用它但不应该使用它的人隐藏?
谢谢:)
最佳答案
是的,这是可能的,但您需要使用肮脏的转换技巧或依赖半未定义的行为,但可以肯定的是,您可以调用导出的函数,无论它是私有(private)/公共(public)状态。
该语言不提供针对恶意攻击者的安全措施。它将帮助每个人遵守规则,但它不会防范那些试图破坏系统的人。
例如:
- 使用
GetProcAddress()
获取函数的地址,将其转换为正确的成员函数类型,然后调用它。 - 创建一个类的修改后的头文件,将所有内容声明为公共(public)的(或者只添加一个静态函数,
void crowbar()
),然后根据它进行编译。 (未定义的行为,因为您违反了单一定义规则,但它可能会起作用...)
不要依赖 C++ private 关键字来保证安全。
关于c++ - 是否可以在 C++ 中调用导出的 "private"方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6398090/