吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5183|回复: 27
收起左侧

[Android 原创] 第九课、加固的种类、甄别和处理方式

  [复制链接]
胡凯莉 发表于 2023-3-10 09:18
第九课、加固的种类、甄别和处理方式dex文件是被libart.so (ELF文件)所加载执行的1、混淆加固技术的发展过程
  • https://mp.weixin.qq.com/s/tI89U6eht0F_KrMJXooo1A
  • http://www.520monkey.com/archives/553 一代壳的加固
2、常见的混淆加固技术甄别
  • 最常用的保护方法之一是:代码混淆

  • 第一代
    • dex文件加密,打包。在运作时通过一个自定义的类加载器进行解密。
    • 将整个apk文件压缩加密到壳dex文件的后面再壳dex文件上写上解压密代码,动态加载执行,由于是加密整个apk,在大型应用中很耗资源,因此这代壳很早就被放弃了但是思路还是不变
      • Dex字符串加密
      • 静态DEX文件整体加密解密
      • 资源加密(xml、arsc文件加密,以及十六进制加密)
      • 对抗反编译
      • Ptrace反调试、TracePid值校验反调试
      • 自定义DexClassLoader(主要针对dex文件加固、加壳等情况
      • 落地加载(dex可以在apk目录下看到
    • 相关脱壳方法
      • 内存dump
      • 缓存脱壳
      • 文件监视
      • hook
      • 定制系统
      • 动态调试

  • 第二代
    • Dex抽取与so加固
    • 类级别的dex保护。把需要保护的核心函数抽离出来生成另外一个文件。利用虚拟机类加载机制,在运行时调用修复函数。其实就是so层
    • 第二代壳通用脱壳方法,直接上工具:工具地址及其用法 https://github.com/zyq8709/DexHunter
  • 第三代
    • Dex 动态解密与 so 混淆
    • 将dex的核心函数抽离出来 翻译为自定义指令  运行时通过自写的解释器解释指令
  • 第四代
    • java2c,通过将核心函数转为c代码,编译为so文件。

3、查壳脱壳工具的核心原理
  • 面对动态分析,原本最直接有效低成本的动态加载也变成最脆弱的一种保护方式。
  • 通常只需要附加进程做一个内存漫游搜索 dex.035 或者甚至直接看 Segment 名称就能在内存中找到动态加载的 dex 文件并 dump下来,发展到 2020 年,这个办法依然对大部分加固的一代保护有效。
  • 当然,还有更多的手动挡,比如在 dvmDexFileOpenPartial 之类的关于加载代码的函数打断点,做 Hook,就可以轻而易举的找到解密后的 dex 文件。
  • 是fart等脱壳机的原理
4、内存枚举,trace和可视化5、基于内存的反混淆和特征定位
案例:混淆后的Okhttp3关键类定位
4、案例
  • plugin wallbreaker objectsearch okhttp3.OkHttpClient
  • plugin wallbreaker objectdump --fullname 0x28ba
    • okhttp3.CertificatePinner certificatePinner; => [0x4806]: okhttp3.CertificatePinner@0
    • java.util.List networkInterceptors; => [0x48f6]: [com.tal.xes.app.net.interceptor.NetCacheInterceptor@2f6f6c]
    • java.util.List interceptors; => [0x48e6]: [com.networkbench.agent.impl.h.b@879328, com.tal.xes.app.net.interceptor.LocalCacheInterceptor@1800841, com.tal.xes.app.net.interceptor.HttpLoggingInterceptor@94d81e6, com.xes.cloudlearning.bcmpt.net.CommonHeaderIntercept@1789327, com.tal.xes.app.netbusiness.interceptor.ServerStatusInterceptor@456b9d4, com.tal.xes.app.netbusiness.interceptor.AppHeadersInterceptor@383e77d, com.tal.xes.app.netbusiness.interceptor.AppParamsInterceptor@75fd672, com.tal.xes.app.netbusiness.interceptor.SaveServerTimeInterceptor@5513ac3, com.tal.xes.app.net.interceptor.ParamsInterceptor@94f9f40, com.tal.xes.app.netbusiness.interceptor.SignInterceptor@4ec7e79, com.tal.xes.app.netbusiness.interceptor.NetResponseErrorInterceptor@1d0e7be, com.tal.xes.app.net.retrofit_url.RetrofitUrlManager$1@782c01f]
    • 观察interceptors实例的动态域的对象的属性、返回结果、
  • plugin wallbreaker objectdump --fullname 0x48e6
  • 看这个类名 确定是okhttp3


  • 被混淆后如何确定哪个是intercepors
    • 因为最后我们要把自己的拦截器加到这个里面去
    • 这就是一个定位的问题
    • 动态的用Objection看
  • 被混淆后是搜不到的
    • 通过静态分析 获得混淆后的包名
    • plugin wallbreaker objectsearch okhttp3.O0000ooO
    • plugin wallbreaker objectdump --fullname 0x2472
    • 可以发现 找不到interceptor了  去静态代码里面看看可疑的
    • 返回值是List
    • 查看实例 就是这个类
    • 最终的判断是这个类名 和 返回值
  • 另一种混淆
  • 可以先搜一下这个 OkHttpClient
  • 恰好有 就看一下实例
  • 看他是不是要找的类  就看他的结构就行
  • 有我们想要的interceptor  搜索类名确实是这个
  • https://api-caller.com/2019/03/30/frIDA-note/
  • 有一些不可视, 所以可以先编码打印出来, 再用编码后的字符串去 hook.
  • 对所有的类名进行编码  然后去进行解码



免费评分

参与人数 15威望 +2 吾爱币 +114 热心值 +12 收起 理由
1MajorTom1 + 1 热心回复!
、神通广大 + 1 + 1 我很赞同!
gqdsc + 1 太厉害了,我也看不懂
beyondzb + 1 谢谢@Thanks!
fengbolee + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
victos + 1 + 1 谢谢@Thanks!
N1san + 1 + 1 热心回复!
rjlly + 1 + 1 用心讨论,共获提升!
qtfreet00 + 2 + 100 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
sonh + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
天山雪 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
5ctw + 1 我很赞同!
90210 + 1 + 1 用心讨论,共获提升!
pnccm + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
yp17792351859 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

yhh199375 发表于 2023-3-10 09:35
谢谢分享
lvbuqing 发表于 2023-3-10 09:56
舒默哦 发表于 2023-3-10 11:14
繁星落月 发表于 2023-3-10 12:22
学习了,感谢分享
xiaolinzzz 发表于 2023-3-10 15:08
辛苦了,学习一下
lvbuqing 发表于 2023-3-10 20:01
问题来了,怎么甄别第几代壳
daniel7785 发表于 2023-3-10 20:59
感谢分享
weapon 发表于 2023-3-11 12:18
感谢分享
conan1016 发表于 2023-3-11 15:35
谢谢楼主的分享。很有用,今后也许会用上
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-21 23:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表