Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

3.android 应用程序通用自动脱壳方法研究

294 views

Published on

.

Published in: Art & Photos
  • Be the first to comment

3.android 应用程序通用自动脱壳方法研究

  1. 1. Android 应⽤用程序 通⽤用⾃自动脱壳⽅方法研究 杨⽂文博
  2. 2. >> 简介 Profile • GoSSIP 软件安全⼩小组 • 微博 @GoSSIP_SJTU • www.securitygossip.com
 • 上海交通⼤大学⺴⽹网络信息安全协 会(0ops) 杨⽂文博 上海交通⼤大学计算机系在读博⼠士
  3. 3. Android 加壳保护
  4. 4. Android 加壳保护
  5. 5. Android 加壳保护
  6. 6. Android 加壳保护
  7. 7. Android 加壳保护
  8. 8. Android 加壳保护
  9. 9. Android 加壳保护
  10. 10. Android 加壳保护 • 程序逻辑 • 算法、协议 • 完整性 • 盗版 • 外挂 • 安全问题 • 数据存储传输 • 程序漏洞 • 权限泄露 • 不安全的API 可保护 不可保护
  11. 11. 为什么要脱壳
  12. 12. 为什么要脱壳 AVL Team
  13. 13. 为什么要脱壳
  14. 14. 为什么要脱壳 SandDroid
  15. 15. 为什么要脱壳
  16. 16. 为什么要脱壳
  17. 17. 脱壳的影响 • 程序真实逻辑暴露 • 降低分析⻔门槛 • 篡改APP • 静态代码审查 • 更容易挖掘漏洞
  18. 18. 加固程序特点 ·Manifest保留 · 增加⼊入⼝口点类 · Native执⾏行
  19. 19. ·ARM ELF 头部破坏 加固程序特点 ·.init_array 段花指令
  20. 20. ·ARM ELF 头部破坏 加固程序特点 ·.init_array 段花指令
  21. 21. ·ARM ELF 头部破坏 加固程序特点 ·.init_array 段花指令
  22. 22. ·ARM ELF 头部破坏 加固程序特点 ·.init_array 段花指令
  23. 23. ·ARM ELF 头部破坏 加固程序特点 ·.init_array 段花指令
  24. 24. ·ARM ELF 头部破坏 加固程序特点 ·.init_array 段花指令
  25. 25. 加固程序特点 · 解密出另⼀一个ELF⽂文件 · ELF中解压 .text 段 · .text段中提取key再解密.rotext · 真正的壳程序 · 解密 JNI_OnLoad 函数
  26. 26. 加固程序特点 · 解密出另⼀一个ELF⽂文件 · ELF中解压 .text 段 · .text段中提取key再解密.rotext · 真正的壳程序 · 解密 JNI_OnLoad 函数
  27. 27. 加固程序特点 · 取⼀一些解密解压参数 · 解密解压padding数据 · 得到 DEX ⽂文件 · 反调试,反分析 · 取原 DEX 中的padding数据
  28. 28. 加固程序特点 ·变化快 ·静态逆向难 · 反分析⼿手段 ·反调试 ·反内存dump ·反静态⼯工具 ·隐藏DEX
  29. 29. 制作通⽤用脱壳机
  30. 30. 通⽤用⾃自动化脱壳 • Dalvik 源码插桩 • Portable 解释器 • 绕过反调试 • 运⾏行时数据 • 任意脱壳点 • 真机部署
  31. 31. 通⽤用⾃自动化脱壳 ·内存中的 Dalvik 数据结构
  32. 32. 通⽤用⾃自动化脱壳 ·内存中的 Dalvik 数据结构
  33. 33. 通⽤用⾃自动化脱壳 ·内存中的 Dalvik 数据结构
  34. 34. 通⽤用⾃自动化脱壳 ·内存中的 Dalvik 数据结构
  35. 35. 通⽤用⾃自动化脱壳 ·内存中的 Dalvik 数据结构
  36. 36. 通⽤用⾃自动化脱壳 ·内存中的 Dalvik 数据结构
  37. 37. 通⽤用⾃自动化脱壳 ·内存中的 Dalvik 数据结构
  38. 38. 通⽤用⾃自动化脱壳 ·内存中的 Dalvik 数据结构
  39. 39. ⼀一个Naïve的实现 · 读取 DexFile 结构体 · 基于源码: C/C++ 实现 · 以DexFile为输⼊入 · 他⼭山之⽯石 · dalvik/dexdump/ DexDump.cpp
  40. 40. ⼀一个Naïve的实现 · 读取 DexFile 结构体 · 基于源码: C/C++ 实现 · 以DexFile为输⼊入 · 他⼭山之⽯石 · dalvik/dexdump/ DexDump.cpp
  41. 41. 效 果 · 脱壳点 · MainActivity.onCreate() in Manifest · ⼏几乎所有的壳 · 输出 · ⽂文本 · Dalvik bytecode
  42. 42. 效 果 · 脱壳点 · MainActivity.onCreate() in Manifest · ⼏几乎所有的壳 · 输出 · ⽂文本 · Dalvik bytecode
  43. 43. 效 果 · 脱壳点 · MainActivity.onCreate() in Manifest · ⼏几乎所有的壳 · 输出 · ⽂文本 · Dalvik bytecode
  44. 44. 效 果 · 脱壳点 · MainActivity.onCreate() in Manifest · ⼏几乎所有的壳 · 输出 · ⽂文本 · Dalvik bytecode
  45. 45. 效 果 · 脱壳点 · MainActivity.onCreate() in Manifest · ⼏几乎所有的壳 · 输出 · ⽂文本 · Dalvik bytecode
  46. 46. 效 果 · 脱壳点 · MainActivity.onCreate() in Manifest · ⼏几乎所有的壳 · 输出 · ⽂文本 · Dalvik bytecode
  47. 47. More sophisticated 实现 · DEX ⽂文件重组 · 获取内存中的Dalvik数据结构 · DEX ⽂文件重写
  48. 48. More sophisticated 实现 · DEX ⽂文件重组 · 获取内存中的Dalvik数据结构 · DEX ⽂文件重写
  49. 49. 获取Dalvik 数据结构
  50. 50. DEX ⽂文件重写 · 排列顺序 · dalvik/libdex/DexFile.h · 调整偏移 · stringDataOff, parametersOff, interfacesOff, classDataOff, codeOff, … · 重新计算 · DexHeader, MapList · 差异 · Uleb128, 4 字节对⻬齐, field/method_idx_diff
  51. 51. 实验 · 梆梆,爱加密,360, 百度,阿⾥里,腾讯 APKProtect, ⺴⽹网秦,LIAPP, DexProtector 实验机 · Nexus 4: Android 4.4.2 · Galaxy Nexus: Android 4.3 · /system/lib/libdvm.so 10种壳
  52. 52. 实验 · 梆梆,爱加密,360, 百度,阿⾥里,腾讯 APKProtect, ⺴⽹网秦,LIAPP, DexProtector 实验机 · Nexus 4: Android 4.4.2 · Galaxy Nexus: Android 4.3 · /system/lib/libdvm.so 10种壳 ALL-KILL !!!
  53. 53. ⼀一些发现
  54. 54. ⼀一些发现
  55. 55. ⼀一些发现
  56. 56. ⼀一些发现
  57. 57. ⼀一些发现
  58. 58. ⼀一些发现
  59. 59. ⼀一些发现
  60. 60. ⼀一些发现
  61. 61. ⼀一些发现
  62. 62. ⼀一些发现
  63. 63. ⼀一些发现
  64. 64. ⼀一些发现
  65. 65. ⼀一些发现
  66. 66. ⼀一些发现
  67. 67. ⼀一些发现
  68. 68. ⼀一些发现 • hook write() • 内容: 0x64 0x65 0x78 (‘dex’) • 内存范围:mapped DEX • 分离出多个DEX • debug_info_off • 混淆
  69. 69. 讨论 · 动态分析的局限性 · 反混淆 · 特征
  70. 70. ⼀一些想法 • 更好的加固⽅方案 • 性能 VS 安全性 VS 兼容性 • 混淆 及 加壳 • 部分加固 • after/during development • Java -> Native • less tricks
  71. 71. Thank you ! @GoSSIP_SJTU @乌云峰会 @各⼤大加固⼚厂商 @slipper @MindMac @lcweik

×