根据您的.h或.hpp文件中的代码,有人可以了解您的应用程序

Based on the code in your .h or .hpp file, what can someone learn about your app?

本文关键字:了解 应用程序 hpp 文件 代码      更新时间:2023-10-16

我不确定如何表达问题,因此,如果有更好的方法:通常,代码按以下方式分配在.h和.cpp文件之间。

类声明,功能原型和枚举之类的东西 通常输入标头文件。一词,"定义"。

代码文件(.CPP)旨在提供实现 只需要在一个文件中知道的信息。一般来说, 功能体和内部变量应该/永远不会 其他模块访问的是.cpp文件中的内容。一词, "实现"。

使用提交给iOS和Android应用商店的本机代码(C )参考应用程序,局外人可以通过检查包内容来学习哪些信息?例如,我听说有人可以发现类定义和功能名称吗?这使我认为这是因为.H文件中通常的内容。但是,如果功能体包含在.h文件中,也会看到它们吗?如果有人在检查我的应用程序,我的代码如何在.h和.cpp文件之间分开吗?

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

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

在您的本机库进行汇编后,标题和源文件之间没有区别。他们将组合成一个预处理程序的单个"翻译单元"(#include s实际上插入了各自的位置等),从那时起,它完全没有什么区别。

什么是可见是导出功能的名称。您不能改变这一点,可以通过给他们晦涩的名字来使攻击者的生活变得更糟。您需要导出的功能,因为它们是项目共享的C 和Objective-C Slash Java部分的通用语言:如果没有任何接口,则无法以任何方式访问您的本地库。

就代码而言 - 正如某些程序员所说的那样,如果您的攻击者真的想要很糟糕,他们 Will 找出您的代码的作用。C 命令无法直接恢复(除非您使用调试符号编译,例如GCC或CLANG中的-g)与来自Java的方式相同,因此这是一个混淆的水平,但是没有机器代码完全不受反向工程的影响。如果没有其他的话,您的处理器需要最终了解要求遵循的步骤,您可以简单地模拟处理器。

tldr:由Java编译的代码非常容易"读取",不管.cpp/.h分离,C 编译的代码不是。