android软件防护简要分析
逆向Android软件的步骤:[*]对其反编译
[*]阅读反编译代码
[*]找到突破口后注入或者直接修改反汇编代码
[*]重编译
因此,防护也主要是这四个方面。
1.反编译工具
由于反编译工具都存在版本更新的情况,所以一味去寻找使相应的反编译工具出错的方法,有点得不偿失。
2.静态分析
(1)代码混淆
java代码易被反编译,所以google在android2.3的sdk中加入ProGuard,其主要是对class文件进行压缩、优化、混淆、预检。具体操作如果有需要,会在后面的文件中展示。
(2)NDK保护
c/c++相对于java来说,反编译后阅读难度增加。因此,核心代码一般都是调用native方法,其中具体是由c/c++编写。
(3)加壳
随着反编译技术的更新,代码混淆始终是一个治标不治本的方法。因此,加密就显得很重要。
[*]对整个应用加壳。
[*]对so文件加壳。native代码大多是在so文件中的section中。
3.动态分析
[*]调试器。在AndroidManifest中属性debuggable取值选取
[*]模拟器。具体属性,比如手机型号。在模拟器中其值为sdk,具体手机中为手机型号。
4.重编译
[*]签名检测。只要破解人员不知道密匙,重编译后的文件签名都会改变,可在运行时检测。
[*]检测保护。每个软件的dex文件都会有个hash值,而重编译后的文件hash值会改变。
楼主说的防护现在基本上都已经家喻户晓,忘能细化节点,写一点防护技术上的文章,还是不错滴哟! 防护是必要的越来越多的安卓APP 虽然不懂但是,我不懂 来看看楼主 受用了,谢楼主分享!! 意犹未尽呀 收藏了啊,慢慢研究 老铁,多谢
页:
[1]
2