CODASPY 2012_Detecting Repackaged Smartphone Applications in Third-Party Android Marketplaces

本文介绍了DroidMoss使用模糊散列技术来检测第三方市场上应用软件是否经过重打包的方法。通过对比官方市场与第三方市场的应用,该技术能够识别出被修改过的应用程序,并关注于Java代码部分以提高检测效率。

阅读笔记:

介绍了一些对市场上应用软件情况的统计信息。

1.DroidMoss   fuzzy hashing technique

   应用模糊散列技术

   将第三方市场的app与官方市场的比较。从大量的apps中检测、提取apps的特征值,并生成应用程序特定的指纹。

   finger generation

   计算每个程序对(真与仿真)的相似距离,超出一定的阈值,就认为被重打包过。

   3 key steps:1>应用程序包含的指令和作者信息,来确认app

                        2>给每个app一个指纹标识

                        3>识别程序源,从官方和第三方。

2.three categories

 1)同样存在于 official android market

         reach more users

 2)只在第三方市场有的

         targeting specific customers (regions,countries,languages....)

 3)主要的关注点

       从官方市场上重新打包再在第三方市场投放的

3.design

   Focus on Java code without native code.(native code只有一小部分apps包含,harder for repackager to modify)

4.1)比对时不一定官方市场里就没有重打包过的。有可能第三方市场是原型儿官方市场是重打包的。

   2)不包含付费软件

   3)使用共享库或广告sdk的应用程序重打包的检测

ubuntu@ubuntu:~/opencv-4.10.0/build$ cmake -D CMAKE_BUILD_TYPE=Release \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D OPENCV_EXTRA_MODULES_PATH=/path/to/opencv_contrib/modules \ -D WITH_CUDA=ON \ .. -- The CXX compiler identification is GNU 11.4.0 -- The C compiler identification is GNU 11.4.0 -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/cc - skipped -- Detecting C compile features -- Detecting C compile features - done -- ocv_init_download: OpenCV source tree is not fetched as git repository. 3rdparty resources will be downloaded from github.com by default. -- Detected processor: aarch64 -- Found PythonInterp: /usr/bin/python3 (found suitable version "3.10.12", minimum required is "3.2") -- Found PythonLibs: /usr/lib/aarch64-linux-gnu/libpython3.10.so (found suitable exact version "3.10.12") -- Looking for ccache - not found -- Performing Test HAVE_CXX_FSIGNED_CHAR -- Performing Test HAVE_CXX_FSIGNED_CHAR - Success -- Performing Test HAVE_C_FSIGNED_CHAR -- Performing Test HAVE_C_FSIGNED_CHAR - Success -- Performing Test HAVE_CXX_W -- Performing Test HAVE_CXX_W - Success -- Performing Test HAVE_C_W -- Performing Test HAVE_C_W - Success -- Performing Test HAVE_CXX_WALL -- Performing Test HAVE_CXX_WALL - Success -- Performing Test HAVE_C_WALL -- Performing Test HAVE_C_WALL - Success -- Performing Test HAVE_CXX_WRETURN_TYPE -- Performing Test HAVE_CXX_WRETURN_TYPE - Success -- Performing Test HAVE_C_WRETURN_TYPE -- Performing Test HAVE_C_WRETURN_TYPE - Success -- Performing Test HAVE_CXX_WNON_VIRTUAL_DTOR -- Performing Test HAVE_CXX_WNON_VIRTUAL_DTOR - Success -- Performing Test HAVE_C_WNON_VIRTUAL_DTOR -- Performing Test HAVE_C_WNON_VIRTUAL_DTOR - Failed -- Performing Test
03-14
<think>好的,我现在需要解决用户在Ubuntu上配置OpenCV时遇到的CMake问题,特别是启用了CUDA、使用GCC 11.4.0、Python 3.10和aarch64架构的情况。首先,我得回忆一下常见的OpenCV编译问题,以及如何在启用CUDA的情况下正确配置CMake。 用户提到了CMake配置问题,可能是在生成Makefile时出错。可能的原因包括CUDA版本与GCC不兼容、Python路径未正确设置、架构相关的编译选项不正确,或者依赖项缺失。我需要逐步分析每个可能性。 首先,检查CUDA和GCC的兼容性。GCC 11.4.0可能与某些CUDA版本存在兼容性问题。例如,CUDA 11.x通常支持较旧的GCC版本,而CUDA 12.x可能支持更高的GCC版本。用户需要确认安装的CUDA版本是否支持GCC 11.4.0。如果版本不匹配,可能需要降级GCC或者升级CUDA。 接下来,Python 3.10的支持。OpenCV的CMake脚本需要找到正确的Python解释器和库路径。用户应该确保在CMake命令中指定了正确的Python3_EXECUTABLE和Python3_INCLUDE_DIR等变量。有时候,如果系统中有多个Python版本,CMake可能会选错,需要手动指定。 关于aarch64架构的问题,虽然大多数情况下OpenCV支持ARM架构,但可能需要特定的配置选项或补丁。用户需要确认下载的OpenCV源码是否兼容aarch64,尤其是当使用预编译的第三方库时,可能需要重新编译依赖项。 依赖项安装是否正确?根据用户提供的引用[1],可能需要安装一些开发库,如libblas-dev、gfortran等。此外,OpenCV依赖的库如FFmpeg、GTK、V4L等是否已安装?如果这些依赖缺失,CMake可能会找不到必要的组件,导致配置失败。 检查CMake命令是否正确。用户可能在启用CUDA时需要添加正确的选项,例如-D WITH_CUDA=ON,同时可能需要指定CUDA架构(如-D CUDA_ARCH_BIN=正确的计算能力值)。此外,如果系统中有多个CUDA版本,需要确保CMake指向正确的CUDA路径,比如-D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-xx.x。 还有,CMake的输出日志是关键。用户应该仔细查看CMake的输出,寻找错误或警告信息。例如,是否有关于找不到CUDA工具包、不支持的计算架构、Python路径错误等提示。这些信息可以帮助定位问题。 可能的解决方案步骤包括: 1. 确认CUDA与GCC版本兼容,必要时调整。 2. 安装所有必要的依赖库,参考引用[1]中的安装列表。 3. 在CMake命令中明确指定Python路径和CUDA相关参数。 4. 检查aarch64特定的编译选项,可能需要调整优化标志或启用NEON支持。 5. 清理构建目录并重新运行CMake,避免缓存问题。 另外,用户提到使用的是aarch64架构,如Jetson Orin Nano,可能需要考虑JetPack SDK中的CUDA版本是否与GCC兼容。例如,JetPack 5.x可能自带特定版本的CUDA和GCC,用户需确保不混用系统安装的版本。 最后,参考引用[3]中的CUDA安装步骤,用户是否按照正确流程安装了CUDA?比如通过官方仓库安装,并正确设置环境变量。如果CUDA安装有问题,自然会导致OpenCV配置失败。 总结下来,用户需要逐步检查CUDA版本兼容性、依赖项安装、CMake参数设置,以及架构相关的配置,同时详细查看CMake的输出日志以定位具体问题。</think>在Ubuntu系统上配置支持CUDA的OpenCV时,若遇到CMake配置问题,可按照以下步骤排查和解决: ### 1. 确认CUDA与GCC版本兼容性 - **CUDA 12.x** 通常支持GCC 11,但需检查[NVIDIA官方文档](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html)确认具体版本匹配性[^3]。 - 若使用**CUDA 11.x**,可能需要降级GCC至11以下(如GCC 9),或通过以下命令指定GCC版本: ```bash export CC=/usr/bin/gcc-9 export CXX=/usr/bin/g++-9 ``` ### 2. 安装必要依赖库 根据引用[1],确保已安装编译工具链和科学计算库: ```bash sudo apt-get install -y gcc g++ make cmake zlib1g-dev libjpeg-dev libpng-dev libtiff-dev libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libgtk-3-dev libcanberra-gtk3-dev python3-dev python3-numpy libtbb2 libtbb-dev libdc1394-22-dev libv4l-dev ``` ### 3. 配置CMake参数 在构建目录中执行以下命令(关键参数已标注): ```bash cmake \ -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_ENABLE_NONFREE=ON \ -D WITH_CUDA=ON \ -D CUDA_ARCH_BIN=8.7 \ # Jetson Orin Nano的计算能力为8.7 -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda \ -D WITH_CUDNN=ON \ -D OPENCV_DNN_CUDA=ON \ -D ENABLE_NEON=ON \ # aarch64需启用NEON指令集 -D PYTHON3_EXECUTABLE=$(which python3) \ -D PYTHON3_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \ -D PYTHON3_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") \ .. ``` ### 4. 处理常见问题场景 - **CUDA检测失败**:检查`CUDA_TOOLKIT_ROOT_DIR`路径是否正确,验证CUDA安装: ```bash nvcc --version ``` - **Python绑定生成错误**:手动指定Python路径,确保`numpy`已安装: ```bash pip3 install numpy ``` - **aarch64特定问题**:添加`-DENABLE_NEON=ON`,禁用可能导致问题的模块(如`-DWITH_IPP=OFF`)。 ### 5. 完整构建流程示例 ```bash git clone https://github.com/opencv/opencv.git git clone https://github.com/opencv/opencv_contrib.git cd opencv && mkdir build && cd build # 执行上述CMake命令 make -j$(nproc) sudo make install ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值