c++ - 是否可以在 C++ 中调用导出的 "private"方法

标签 c++ dll export private

是否可以调用从 DLL 导出的类的私有(private)方法?
它会不会对想要使用它但不应该使用它的人隐藏?
谢谢:)

最佳答案

是的,这是可能的,但您需要使用肮脏的转换技巧或依赖半未定义的行为,但可以肯定的是,您可以调用导出的函数,无论它是私有(private)/公共(public)状态。

该语言不提供针对恶意攻击者的安全措施。它将帮助每个人遵守规则,但它不会防范那些试图破坏系统的人。

例如:

  • 使用 GetProcAddress() 获取函数的地址,将其转换为正确的成员函数类型,然后调用它。
  • 创建一个类的修改后的头文件,将所有内容声明为公共(public)的(或者只添加一个静态函数,void crowbar() ),然后根据它进行编译。 (未定义的行为,因为您违反了单一定义规则,但它可能会起作用...)

不要依赖 C++ private 关键字来保证安全。

关于c++ - 是否可以在 C++ 中调用导出的 "private"方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6398090/

相关文章:

c++ - 模板类的继承问题

c# - 添加对路径不确定的 dll 的引用

export - 如何仅将photoshop中的选定图层导出为单独的png图像

c++ - 在 Visual Studio 2010 和 11 之间共享 C++ 解决方案

c++ - 试图找出 Xcode 目录系统

c++ - 如何抛出全部 yield ,养起来开始调试?

从数据库导出表时出现 mysqldump 错误

python - 在Python中使用ctypes访问DLL返回的对象的内容

c# - 你有自己的 'utils' dll 吗?你把什么放在那里?

excel - 格式化包含 HTML 的 CSV 文件以便导入到 Excel