源代码加密效果分析

此次以静态库加密效果为例[APP和动态库分析思路相似]

支持加密C、C++、Objective-C代码

加密目的

  1. 保护iOS应用的源代码
  2. 保护安卓应用的SO动态库

准备工具

准备逆向分析工具:IDA Pro

准备对比静态库

此处演示使用安卓版的liblua.a静态库,必须包含Bitcode代码

  1. 在本地正常编译liblua.a静态库,结果另存为liblua.normal.a文件

  2. 将liblua.a静态库上传到平台进行加密

  3. 该静态库包含多个.o文件,此处仅勾选lapi.o文件,然后保存加密。(勾选则加密编译,反之则正常编译) 2-1

  4. 加密完成后,下载并另存为liblua.kws.a

效果对比

  1. 用IDA Pro工具分别打开liblua.normal.a和liblua.kws.a文件,并选择lapi.o,点击OK,如下图 3-1 1.1 代码混淆效果

    在左侧Function name框中选择一个函数,双击后按空格键会显示出函数的流程图,流程越复杂分析难度越高;

    a.未加密的函数流程图

    3-1-1

    b.已加密的函数流程图 3-1-2

  2. 字符串加密效果

    通过View > Open subviews > Strings打开字符串窗口,可以查看整个项目中的敏感字符串信息,加密后只会看到乱码。(字符串加密对比lauxlib.o文件)

    a. 未加密的静态库字符串

    3-2-1

    b. 已加密的静态库字符串

    3-2-2

使用与建议

在线静态库加密集成 代码混淆 和 字符串加密功能,能有效避免攻击者对代码进行静态分析,但免费版本仅支持静态库项目[iOS和安卓]。在安卓开发过程中,使用SO动态库较多,建议先编写静态库,加密后再链接到SO动态库中。或者购买企业版,其支持项目、动态库和静态库,并且强度更高。

更多产品介绍

在线免费使用

如需购买请联系客服

独创移动端虚拟化技术,引领互联网安全