0%

逆向基础-Android

移动端

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就是基地址