Android应用的加固与逆向

前言

加固与逆向是安卓攻防的两个方面。搞安卓研发时间长了就不可避免走到这一步。既要研究别人的实现,又要保护好自己的东西。个人认为,逆向仅仅用于技术研究,不得窃取别人隐私和商业数据。

名词释义

  • java:编写好的程序源代码
  • class:.java文件通过javac 编译后的字节码文件,jvm直接运行的文件
  • jar:Java Archive,java二进制归档文件,多个.class文件打包的文件
  • aar:Android Archive,Android二进制归档文件,由jar和Android资源文件
  • dex:将.class优化打包后的文件,dalvik虚拟机则是.dex可执行文件
  • smali:Smali,Baksmali分别是指安卓系统里的Java虚拟机(Dalvik)所使用的一种.dex格式文件的汇编器,反汇编器。类似于汇编代码。
  • apk:Android application package,包含.dex、resource文件资源、assets原生文件资源、应用证书签名、AndroidManifest等组成

加固手段

传统App加固技术,前后经历了四代技术变更,保护级别每一代都有所提升,但其固有的安全缺陷和兼容性问题始终未能得到解决。而新一代加固技术—虚机源码保护,适用代码类型更广泛,App保护级别更高,兼容性更强,堪称未来级别的保护方案。

在这里插入图片描述

逆向

在这里插入图片描述

在这里插入图片描述

dex文件

逆向的主体是java/kotlin代码和javascript代码。

resources.arsc

resources.arsc是Android编译后生成的产物,主要是用来建立资源映射关系,为了清晰地理解其中的映射逻辑,有必要剖析resources.arsc的结构。

React Native

index.android.bundle 文件是由 React Native 应用程序在 Android 平台上生成的一种二进制文件。它包含了应用程序的 JavaScript 代码和资源文件。

反编译 index.android.bundle 文件可以使用工具如 “react-native-bundle-decoder” 或 “bundler-decoder”。这些工具可以将二进制文件转换成可读的 JavaScript 代码。

但是经过JS引擎Hermes处理过的index.android.bundle就得靠别的工具了。采用hbctool即可解密。

hbctool disasm index.android.bundle .

还有个工具:https://github.com/P1sec/hermes-dec

hbc-decompiler assets/index.android.bundle /tmp/my_output_file.js

不过反编译出来的js文件可读性比较差。

TODO

混淆和安全加固
安卓应用是Java开发的,java容易被反编译的特性。
动态加载
加密

文档链接

工具参考

加固工具

  • 阿里聚安全 链接:jaq.alibaba.com/
  • 腾讯云应用乐固 链接:www.qcloud.com/product/cr
  • 360加固保 链接:jiagu.360.cn/
  • 梆梆加固 链接:dev.bangcle.com/
  • 爱加密 链接:safe.ijiami.cn/

逆向工具

  • https://github.com/milovetingting/Shell
  • https://github.com/pxb1988/dex2jar/releases
  • 逆向工具汇总

猜你喜欢

转载自blog.csdn.net/jgku/article/details/127540395
今日推荐