java程序加密_Java代码加密,Java加密方式,Java加密使用说明

概述

Java2C针对DEX文件进行加密保护,将DEX文件中标记的Java代码翻译为C代码,编译成加固后的SO文件。默认情况只加密activity中的onCreate函数,如果开发者想加密其它类和方法,只需对相关类或函数添加标记代码,在APK加密时会自动对标记的代码进行加密处理【或者找几维的技术支持人员在后台添加Java函数白名单策略来对重要的函数进行加密】。

使用步骤

1.定义Annotation

在Android工程项目中,定义一个名为LDPProtect的Annotation,如以下截图

cce5ed61cc6b2b973a70de0ec6cf6326.png

e33c7b6f1af1c3138a6f57de56aa5e59.png

2.对类进行加密

在需要加密的类前面添加@LDPProtect,即可对类中除构造函数之外的其它函数进行安全加固,如下图:

aa5adc50636b66f68a0f8ac3cbe60a89.png

3.对函数进行加密

在需要加密的函数前面添加@LDPProtect,即可对该函数进行安全加固,如下图:

c794f93d50957ffbd5a7e133b1cc24ad.png

4.编译项目,加密APK

A.编译项目生成release版本的APK文件

B.用正式签名文件对APK包进行签名

C.提交APK包到几维安全开发者平台进行安全加固

D.下载加密包并再次签名

E.安装使用

加密效果

1.类加密效果

原始Java代码截图

b39bf35a323d2d11f727867265b9f7f8.png

利用apktool反编译apk查看smali代码,因不加密构造函数,所以构造函数的smali代码和原始smali代码一样,而ktest1、ktest2方法已被加密转换,其smali代码已不包含原始业务逻辑。

53f31884ad38d41c5b19367cf2ebcd18.png

通过IDA分析SO文件,可以找到对应的函数列表

28b2c916d374634eba3f6fd8256ab03c.png

通过IDA进一步分析Java_cc_jnidemo_com_jnidemo_KwTest_ktest1这个函数,可以发现Java层的代码已经成功转化C代码。此处为了更直观的展示效果,并未做混淆保护,在实际加密中,可进一步结合Native层的代码混淆和虚拟化技术,达到高强度的安全保护。转化后的C代码截图如下:

6402c21900394393905da7693d5d504f.png

2.函数加密效果

原始Java代码截图

4b586704d7dc1c65ad97365f6d0602f3.png

利用apktool反编译后的smali代码截图

576b96964cded7f7bef21b58dca3aa13.png

通过IDA分析SO文件,可以找到对应的函数列表,转化后的C代码可参考类加密效果

44db1f562d1f4d8bff660800747e68ad.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值