gpt4 book ai didi

c++ - 根据您的 .h 或 .hpp 文件中的代码,人们可以从您的应用程序中了解到什么?

转载 作者:行者123 更新时间:2023-11-28 01:56:23 26 4
gpt4 key购买 nike

我不确定如何表述这个问题,所以如果有更好的方式,请随时重新表述:通常代码按以下方式在 .h 和 .cpp 文件之间划分。

Things like class declarations, function prototypes, and enumerations typically go in header files. In a word, "definitions".

Code files (.cpp) are designed to provide the implementation information that only needs to be known in one file. In general, function bodies, and internal variables that should/will never be accessed by other modules, are what belong in .cpp files. In a word, "implementations".

关于提交到iOS和Android应用商店的使用原生代码(C++)的应用,外人可以通过检查包内容了解哪些信息?例如,我听说可以发现类定义和函数名称?这让我觉得这是因为 .h 文件中通常包含的内容。但是,如果函数体包含在 .h 文件中,它们是否也可见?如果有人正在检查我的应用程序,我将我的代码分隔在 .h 和 .cpp 文件之间的方式是否会影响其他人可以发现的内容?

编辑:没有我要解决的问题。我只是想了解人们可以根据我的 .h 文件中的代码看到什么。

最佳答案

免责声明:这只关注项目的 C++ 部分及其编译选项(根据问题的标签),而不关注其他语言。

在你的本地库编译之后,头文件和源文件之间没有区别。它们被预处理器组合成一个“translation unit”(#include 字面意思是插入它们各自的位置等),从那时起,哪一行来自哪个文件就没有区别了。

可见 的是导出函数的名称。你无法改变这一点,你可以给攻击者起一些晦涩的名字,让他们的生活变得更糟。您需要导出函数,因为它们是您项目的 C++ 和 Objective-C 斜杠 Java 部分共享的通用语言:没有任何接口(interface),您的 native 库无法以任何方式访问。

就代码而言——正如一些程序员花花公子所说,如果您的攻击者想要非常糟糕,他们找出您的代码的作用。 C++ 命令不能直接恢复(除非您使用调试符号进行编译,例如 GCC 或 Clang 中的 -g),就像它们来自 Java 一样,所以这是一种混淆级别,但没有机器代码可以完全不受 reverse engineering 的影响。如果不出意外,您的处理器需要最终理解它被要求遵循的步骤,您可以简单地模拟处理器这样做。

TLDR:无论 .cpp/.h 分隔如何,Java 编译的代码都非常容易“阅读”,C++ 编译的代码则不然。

关于c++ - 根据您的 .h 或 .hpp 文件中的代码,人们可以从您的应用程序中了解到什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41059677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com