移动端 Android 核心技术
检测 静态检测 动态检测
Java代码保护: 1.JAR文件加壳 2.JAR文件代码抽离 3.JAR文件代码虚拟化。
SO文件保护: 1.SO加壳。 2.SO Linker。 3.SO防调用。 4.SO VMP。
SO处理思路 1 2 3 4 5 6 7 8 9 10 1.SO加壳 对C/C++源码编译出来的SO文件进行加壳,使SO文件无法正确反编译和反汇编。 2.SO源码虚拟化保护 对SO文件进行虚拟化保护,实现数据隐藏、防篡改、防Dump,增加逆向分析的难度。 3.SO防调用 对SO文件进行授权绑定,防止SO文件被非授权应用调用运行。 4.SO Linker 代码段加密压缩、字符串加密压缩、导出表加密压缩、函数动态加解密。 5.SO源码混淆 常量字符串加密、控制流扁平化、分裂基本块、等价指令替换、虚假控制流、控制流间接化。
防Java层调试 防止集成SDK时通过IDE(Eclipse/Android Studio等)调试SDK的Java代码,防止逆向调试Dex中的smali代码。
防调用 防止SDK被非授权的第三方应用进行非法集成调用。
防native层调试 通过对进程状态、端口、信号的实时监听探测保护SDK不被native层动态调试。
so科普篇 so文件本质上也是一种ELF文件。 ELF(Executable and Linkable Format)文件是一种常见的二进制文件格式,用于在类Unix系统中表示可执行程序、共享库、目标文件和其他可加载的二进制文件。它是一种灵活的文件格式,广泛用于Linux、Unix和类Unix操作系统,以及一些嵌入式系统。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 // 查看手机进程 adb shell ps // --找到当前包名对应的pid,比如是1001 // 进入手机控制台 adb shell 1960 cd /proc/1001 //上面找到的pid 1001 su // 直接查看cat maps可能提示无权限,所以需要提升权限 cat maps //以下是cat maps的结果 .... 8fb8c000-8fb93000 r-xp 00000000 fd:20 22465 /data/app/com.kongge.solibencryption-ns70YbB0b5JyL9sKnYs4Q==/lib/x86/libDataEncryptionLib.so 8fb93000-8fb95000 r-xp 00007000 fd:20 22465 /data/app/com.kongge.solibencryption-ns70YbB0b5JyL9sKnYs4Q==/lib/x86/libDataEncryptionLib.so ... // 第一个8fb8c000就是基地址