根据您的.h或.hpp文件中的代码,有人可以了解您的应用程序
Based on the code in your .h or .hpp file, what can someone learn about your app?
我不确定如何表达问题,因此,如果有更好的方法:通常,代码按以下方式分配在.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 编译的代码不是。
- 试图在visual studio上用C++创建一个桌面应用程序
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 在C应用程序中运行C++(带有STL)函数
- 使用VerQueryValue检索应用程序的文件描述
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用调试/崩溃报告将应用程序部署到客户端
- C++控制台应用程序阻止退出
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 将应用程序从32位移植到64位时出现问题
- 如何改变c++应用程序的视觉效果
- WM_CTLCOLORSTATIC从未在WIN32应用程序中触发
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- phytec phyBOARD iMX-6在从闪存而不是SD卡运行qt5 opengles应用程序时表现不佳(FPS减半
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 如何使MFC CToolbar按钮更加一致,以使Windows 7/10上的高DPI了解应用程序
- 根据您的.h或.hpp文件中的代码,有人可以了解您的应用程序
- 了解C++应用程序负载平衡
- 如何了解c++应用程序在WINDOWS上运行的时间