【安卓逆向】360加固-脱壳修复

2023-11-04

最近花了一些时间学习逆向脱壳,这方面一直投入的时间比较少。样本经过某加固宝进行加固,这里简单记录一下脱壳过程和思路,感谢某数字公司对安全加固的无私贡献,让我有机会小小的提高一下这方面的技能。

*安卓逆向交流学习qq:3251901516
vx:13140310004
DUMP classes.dex

打开APK包中的classes.dex看一下:
在这里插入图片描述
已经变成了壳代{过}{滤}理,没有一点原APK的代码。在assets中,有两个壳相关的SO:
在这里插入图片描述
尝试从内存中DUMP原classes.dex。

考虑到在Dalvik下,360可能会自己实现从内存中加载classes.dex的代码,不容易找到DUMP的点。而ART下,可操作空间就小多了,所以我是在ART下操作的。

具体的,我是在ClassLinker::DefineClass函数处得到dex_file的begin和size,然后DUMP出原来的classes.dex。我看到有人在dex2oat的地方DUMP,但我觉得如果360 HOOK execv,阻止dex2oat对原classes.dex作oat转换的话,会不会就脱不出来了呢?不过我对Android虚拟机不太了解,可能有更好的DUMP点。

成功DUMP出原classes.dex:
在这里插入图片描述
但是可以看到,有些方法(图中onCreate)的指令被抽走了,并且改为了native方法。同时,在static代码块中,有一行调用StubApp.interface11(16)。

可以猜测:当该class被加载时,static代码块会首先被执行,这样StubApp.interface11方法就会将onCreate注册到壳SO的某个native方法上。这样,当执行onCreate时,就会执行相应的native方法,该native方法会首先找到onCreate对应的指令,然后解密,最终解释执行。

interface11以及onCreate对应的native方法,以及解释器并没有实现在上图中的libjiagu.so中,而是实现在另一个运行时从内存中加载的SO中(暂且称其为解释器SO)。

DUMP解释器SO

APK运行后,会首先加载libjiagu.so,并执行其JNI_Onload方法。该方法最终会调用到__fun_a_18,这个方法进行了控制流混淆,流程对于我来说是非常复杂的。
在这里插入图片描述
刚开始,我以为它用了o-llvm进行混淆编译。但仔细看一下汇编代码,应该不是。应该就是自己在源码中利用while-switch实现了“控制流平坦化”的混淆算法。

怎么破?我没有什么好办法,只有硬看,不断的调试,参考大神们的帖子。

由于我手机是自己编译的系统,对于某些反调试天然免疫,所以遇到的反调并不多。下面简述我是怎么过反调并DUMP出解释器SO的

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【安卓逆向】360加固-脱壳修复 的相关文章

  • IDA工具安装、分享

    往期推荐 ARM处理器寻址方式 ARM指令集 ARM汇编语言程序结构 Android与ARM处理器 IDA工具被称之为是世界顶级的交互汇编 掌握IDA工具界面上的快捷功能 导航条主界面功能以及汇编窗口常用快捷键的使用 实战分析 了解ARM指
  • 普通协议(HTTP)与安全协议(HTTPS)

    客户端与服务器端 CydiaSubstrate框架 Frida Native层HOOK Frida hook Java层 需要相关资料的朋友 可以 加入此处即可打包获取 一 HTTP协议简介 HTTP协议 超文本传输协议HyperText
  • Hook普通方法(包括静态方法)

    想学习安卓逆向可以联系qq 3251901516 HOOK重载方法 jscode Java perform function var utils Java use com qianyu fridaapp Utils utils test o
  • 【安卓逆向】分析某人直播.apk登录组包

    安卓逆向交流QQ群692903341 1 打开 人人 apk 进入登陆页面 输入用户名和密码 并用fiddler软件抓包 fiddler抓包如下图所示 红框所示为登录时向服务器发达的包 下面我们要分析这里面每个字段的产生 2 打开ddms
  • 混淆技术研究-OLLVM混淆-控制流平坦化(FLA) - WIP

    简介 控制流平坦化通过将程序中的条件分支语句转化为等价的平铺控制流来实现 通常 这包括将原始的分支语句 如if语句 switch语句 中的每个分支提取出来 并将它们放置在一系列连续的基本块中 然后使用一个状态变量或标志来选择要执行的基本块
  • ARM指令集

    往期推荐 ARM汇编语言程序结构 Android与ARM处理器 反射调用Java层方法 反射获取Java层字段的值 ARM指令集是指计算机ARM操作指令系统 在ARM中有两种方式可以实现程序的跳转 一种是跳转指令 另一种是直接向PC寄存器中
  • 调试与反调试--关键文件检测

    往期推荐 模拟器检测 文件检测 签名验证 资源文件混淆 一 运行文件检测程序 1 使用adb命令 将filecheck课件push到手机目录下的data local位置 如下图所示 2 运行filecheck后 提示killed 如下图所示
  • Frida hook Java层

    往期推荐 frida环境安装 Xposed框架安装 使用及插件开发 HOOK startActivity HOOK框架 动态代理 需要相关资料的朋友 可以 加入此处即可打包获取 需要对在进程外传递的消息进行拦截处理就必须采取一种称为HOOK
  • Xposed集成到Android系统

    XposedBridge 下载源码 然后编写Android mk文件放入源码根目录 LOCAL PATH call my dir include CLEAR VARS LOCAL DEX PREOPT false LOCAL MODULE
  • Smali文件详解

    往期推荐 Java层逆向 Dalvik指令集 Java层逆向分析 Dalvik字节码 修改资源去广告 修改包名实现分身 篡改Apk名称 图标 Smali是Dalvik VM内部执行的核心代码 是Dalvik自己的语法规范 在反编译出的代码中
  • 基于Xposed hook 实时监测微信消息的三种策略

    本文以微信版本6 7 3为例进行分析有hook 大部分做微信机器人的话 首先要实时抓取微信的消息 在这里展示三种方式对微信的消息进行hook 1 基于UI层拉取加载进行监听 2 基于微信dao层调用的保存进行监听 3 基于数据库的插入保存进
  • 【安卓逆向】360加固-脱壳修复

    最近花了一些时间学习逆向脱壳 这方面一直投入的时间比较少 样本经过某加固宝进行加固 这里简单记录一下脱壳过程和思路 感谢某数字公司对安全加固的无私贡献 让我有机会小小的提高一下这方面的技能 安卓逆向交流学习qq 3251901516 vx
  • HOOK框架——静态代理

    往期推荐 实战案列分析 Crakeme01 实战 AliCrackme 实战案列 AntiDebug self debugging反调试 需要相关资料的朋友 可以 加入此处即可打包获取 代理模式分为静态代理和动态代理 静态代理是编译阶段就生
  • apk文件结构解析一

    Apk文件用WINRAR压缩软件解压缩后 如下图所示 主要是三个文件 lib META INF res 和三个文件夹 AndroidManifest xml classes dex resources arsc 用工具展开可以看到如下所示的
  • Xposed框架安装、使用及插件开发

    往期推荐 HOOK startActivity HOOK框架 动态代理 HOOK框架 静态代理 实战案列分析 Crakeme01 需要相关资料的朋友 可以 加入此处即可打包获取 Xposed框架是一款可以在不修改APK的情况下影响程序运行
  • IDA动态调试动态注册native函数流程

    安卓 手游逆向交流群963612891 IDA动态调试动态注册native函数流程1 编写目的 记录IDA动态调试步骤 2使用工具 逆向工具 IDA 7 0 Jadx 运行环境 Nexus 5 Android 4 4 3 原字符串信息 4
  • 实战案列:AntiDebug

    往期推荐 self debugging反调试 轮循检测技术 进程名称检测 Java层反调试 Anti Debug主要是通过各种函数去确定当前进程是否处于被调试的状态 一 IDA里面静态分析so文件 1 将文件拖入jdax gui中 进行静态
  • 【逆向】使用CE查找Android中变量的偏移

    0x00 准备工作下载Cheat Engine以及调试器服务端 https www cheatengine org index php 夜神模拟器 https www yeshen com 下载安装贪婪洞窟 梦境模式 http a 4399
  • IDA工具介绍

    往期推荐 IDA工具安装 分享 ARM处理器寻址方式 ARM指令集 ARM汇编语言程序结构 昨天给大家概括性的了解了IDA工具 今天分享IDA工具的实际应用 一 IDA打开so文件 1 首先打开IDA工具 进入选项界面 直接选中Go选项 如
  • 安卓逆向之去除app游戏入口广告

    安卓逆向学习群692903341 首先来看一下app游戏入口界面广告 lt

随机推荐

  • Microsoft Skype产品线梳理

    目录 前言 1 Skype应用程序 2 Skype for Business 3 Skype电话 4 Skype号码 5 Skype连接 总结
  • FPGA:三种基本门电路设计(与门、或门、非门)

    FPGA的设计跟数电是紧密相连的 而我们学习数电时候 学习的第一个内容就是数字逻辑基础 这里面就包含了我们今天要讲解的三种基本的门电路 这里 我们依次讲解过来 1 与门 定义 有两个或多个输入 但只有一个输出 只有在所有输入都是高但电平时才
  • 决策树学习笔记整理

    本文目的 最近一段时间在Coursera上学习Data Analysis 里面有个assignment涉及到了决策树 所以参考了一些决策树方面的资料 现在将学习过程的笔记整理记录于此 作为备忘 算法原理 决策树 Decision Tree
  • GCD(容斥定理)

    Time Limit 6000 3000ms Java Other Memory Limit 32768 32768K Java Other Problem Description Given 5 integers a b c d k yo
  • Python爬虫面试知识

    爬虫知识 网络爬虫又称网页蜘蛛 爬虫即是网络上爬行的蜘蛛 可以将理解为一种在互联网上自动提取网页信息并进行解析数据的程序 网络爬虫主要的分类有 聚焦网络爬虫 增量网络爬虫 通用网络爬虫 深层网络爬虫 Robots协议又称机器人协议 通常在网
  • 单片机学习笔记1--资料下载、环境搭建(基于百问网STM32F103系列教程)

    第1篇 资料下载 环境搭建 第一章 百问网视频体系及学习路线 1 1课程视频变化 2011 2020 百问网录制了10年的Linux视频 2021 1 首次进入单片机领域 发布单片机课程 2 重新录制Linux课程 新芯片 新内核 新路线
  • 【Vue.js学习】三、Vue案例:计数器

    Vue js学习 三 Vue案例 计数器 一 HTML页面 二 Js代码 三 效果 实现计数器 要用到Vue的监听语法 v on click 函数名 声明函数后 在js中写入 methods 进行对函数的控制 下面进行详细解释 一 HTML
  • 成功转行Python工程师,年薪35W+,吐血整理

    这是给转行做Python的小白的参考 无论是从零开始 或者是转行的朋友来说 这都是值得一看的 也是可以作为一种借鉴吧 而且我决定转行IT 互联网 行业 其实理由也很简单 不用动体力 大多数动的是脑力工作 而且现在的互联网趋势很明显 再者看到
  • THINKPHP5.1在windows系统下,安装GateWayWorker

    一 GateWayWorker简单介绍 a GatewayWorker基于Workerman开发的一个项目框架 用于快速开发TCP长连接应用 例如app推送服务端 即时IM服务端 游戏服务端 物联网 智能家居等等 b 如果你的项目是长连接并
  • 中科大、字节新作

    导读 最近 大型语言模型 Large Language Models LLMs 相关研究和落地取得了显著进展 为实现通用人工智能 AGI 迈出了重要步伐 并在各种语言应用中表现卓越 例如 2022 年底发布的 ChatGPT 能够基于在预训
  • 蓝桥杯算法训练VIP-单词接龙

    题目 题目链接 题解 DFS 真没想到居然是暴力搜索 感觉时间复杂度根本不允许啊 大致思路 每次递归都遍历全部字符串 对于每个字符串 枚举要匹配的长度 在此长度下依次匹配原串的尾与遍历到的字符串的头 完全相同说明可以匹配当前长度 就继续深搜
  • 20060122: 差点被偷

    昨天下班回去 车上比较挤 一中年男子掏我左上衣口袋 我转过身去 把口袋拉链拉起来 那男的又凑到我左边 右手拿把伞伸到我口袋前面 为的是挡住我前面坐着的乘客的视线 一个比较年轻的 站在我右后方 左手拿一块纸板挡住 右手开始拉我口袋拉链 我火来
  • MySQL数据库查询练习(子查询分步教程)

    注 数据库表格附录在文末 1 与张三同乡的男生姓名 step1 SELECT snativeplace FROM student WHERE sname 张三 step2 SELECT sname FROM student WHERE ss
  • C++11 智能指针

    此篇均参考C Primer第五版 为了更容易更安全的使用动态内存 C 11提供了两种智能指针 来管理动态对象 智能指针行为类似于常规指针 重要的区别在于它负责自动释放所指向的对象 shared ptr允许多个指针指向同一个对象 unique
  • Android自定义NoticeInfo实现顶部消息提示

    对于顶部消息提示功能 本文采用自定义NoticeInfo类 实现使用时只需要写一行代码 非常方便 一 效果如图所示 二 使用方法 只需要加入下面这8个文件 后面附有源码 即可使用 非常方便 使用示例 三 要加入的8个文件源代码如下 1 No
  • window下移动设备/硬盘报错位置不可用

    移动硬盘指示灯亮 但电脑上不显示 报错信息 无法访问E 参数错误 报错原因 移动硬盘打不开提示参数错误 是因为这个H盘的文件系统内部结构损坏导致的 要怎么恢复里面的数据呢 https jingyan baidu com article cb
  • java 生成条形码_JAVA 生成扫描条形码

    声明 转载为个人学习收藏 如有侵权 请及时联系本人删除 转载地址 https www cnblogs com MariaWang p 10837641 html 条形码是一种可视化 机器可读的数据 这些数据通常描述了携带该条码的物品的相关信
  • WCE下创建MFC的COM对象及使用方法(一)

    转载请标明是引用于 http blog csdn net chenyujing1234 平台 VS2005 MIPSSDK 例子代码 http www rayfile com zh cn files 7020e9b8 7240 11e1 b
  • 百度地图的基本知识与使用

    一 解释 LBS LocationBusinessServer基于定义位置的商业服务 二 使用步骤 1 登录注册 获取秘钥AK 2引入百度地图js 3创建地图的容器 div div 4初始化地图 var map new BMap Map c
  • 【安卓逆向】360加固-脱壳修复

    最近花了一些时间学习逆向脱壳 这方面一直投入的时间比较少 样本经过某加固宝进行加固 这里简单记录一下脱壳过程和思路 感谢某数字公司对安全加固的无私贡献 让我有机会小小的提高一下这方面的技能 安卓逆向交流学习qq 3251901516 vx