记一次APP脱壳重打包过程

2023-11-04

小伙伴分享了一个开车软件,但是有播放次数限制。对此小伙伴放言要制裁它,无奈APP加固了。

咳咳,本着学(wei)习(le)研(fu)究(li)的态度,尝试着脱壳并重打包。

为证清白,伸出双手,上操作。

右键直接解压APK,查看特征是360加固:

使用apktool工具反编译APK作为我们的工程目录(能成功运气还不错):

总结下大致思路:

脱壳拿到DEX --- 替换smali源码 --- 修复AndroidManifest.xml --- 重打包 --- 签名运行

一、脱壳获取DEX文件

看特征是360加固,用我之前的方法脱之(http://bbs.pediy.com/thread-219227.htm),拿到两个dex,分别改名classes.dex,classes2.dex。

使用baksmali反编译,由于是两个dex,分别修改下目录名,并替换:

classes.dex -> smali/

classes2.dex -> smali_classes2/

二、修复AndroidManifest.xml

修复AndroidManifest.xml,修改内容包括还原application入口,主activity,删除无用的组件。

1、 查看smali,结合APP包名,确定原application类为

2、修改” application”节点”android:name”:

改为

删除属性“android:protect”

3、修改主activity 的 “.DEFAULT”为“.LAUNCHER”

4、删除所有“com.stub.stub*”的组件。

如:

三、重打包、并签名运行

修改替换后,我们得到以下目录:

使用apktool打包试试,打包成功了(哦也)。

签名完、安装启动APP看看情况。

果然,启动就闪退了。(果然考驾照没那么简单)

现在,咱们要确定是什么原因造成了闪退,最直接的方法就是动态调试APP。

四、调试APP

使用IDEA + smalidea调试APP(参考http://www.52pojie.cn/thread-502219-1-1.html)。

那么下段点-> F8->F7->下段点 …… 不断跟踪代码

最终确定退出的地方:

由于咱们删除了壳的相关代码,这里就找不到com.stub.StubApp类了,所以删除之。

重新打包安装,运行成功!

嘿嘿,学(xing)习(fu)到(sheng)此(huo)结(lai)束(le)。

总结:这次重打包还是挺简单的,没有遇到反编译工具对抗,签名校验,native

 

原理:

参考:https://bbs.pediy.com/thread-219227.htm

dex文件在ART上运行需要转换为OAT格式,因此壳在还原代码时少不了要将解密后的DEX文件利用dex2oat进行还原。

修改4.4的源码art/dex2oat.cc编译,做个虚拟机脱。

一、编译Android源码启动生成的镜像文件

生成的镜像文件:

 

然后将生成的镜像文件拷贝到AVD system directory对应目录下面,通过Android模拟器启动

二、创建AVD system directory路径:

路径类型:xxx/sdk/system-images/android-apiLevel/variant/arch/

真实路径xxx/sdk/system-images/android-19/default/armeabi-v7a

相关资料:https://developer.android.com/studio/run/emulator-commandline.html?hl=zh-cn

三、通过AVD Manager创建Android 模拟器,注意选择你创建 system image

 

四、启动Android模拟器

在Android莫模拟器装上加固的APP,运行一下,观察app目录下的/data/data/packagename/.jiagu文件夹下就有还原的dex文件了

 

相关资料:https://developer.android.com/studio/run/managing-avds.html?hl=zh-cn


[原创]分享一个360加固脱壳模拟器(2017/07/17更新)

前段时间由于工作需要,需要对一个360加固后的APK进行脱壳,网上查了一些相关资料,发现一篇论坛里前辈写的帖子《360加固成功脱壳》。

结合自己对ART机制的了解,dex文件在ART上运行需要转换为OAT格式,因此壳在还原代码时少不了要将解密后的DEX文件利用dex2oat进行还原。

所以觉得这种脱壳方法很有可行性。无奈附件中的dex2oat怎么也运行不起来(估计人品不好),所以干脆自己修改4.4的源码编译,做个虚拟机脱。

 

下载编译源码的帖子很多,过程这儿就不讲了,直接上成果。修改源码部分如下(art/dex2oat.cc):

(大意就是将还未转换的dex文件输出,因为360存在.jiagu目录下,因此作为过滤条件)

 

修改完源码编译,提取相关的.img文件,然后创建虚拟机。运行后,设置运行模式为ART模式。

装上加固的APP,运行一下,观察app目录下的.jiagu文件夹下就有还原的dex文件了。

 

注:由于大家反映提供的虚拟机不能脱壳。所以这里重新上传一个源码编译的原镜像还有dex2oat文件。

自行创建虚拟机后,记得改用art模式运行(第一次转换时间较长,耐心等待)。

 

应用市场上重新找了一个APP脱了下,成功脱壳:

 

 

新上传的镜像文件和加固样本:

链接:https://pan.baidu.com/s/1htp4GO8 密码:mwbc

 

有问题可以加群讨论:637599003

 

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

记一次APP脱壳重打包过程 的相关文章

  • 问题记录整理(持续更新)

    文章目录 Java SSL SpringBoot Springboot项目配置jar外部静态文件 Swagger JPA SpringCloud Gateway 不能使用 web MVC框架 Feign 每个参数需要指定PathVariab
  • Vue之mitt事务总线使用方法

    npm install S mitt 1 组件总线 vue入口文件main js中挂载全局属性 导入vue创建命令 import createApp from vue 导入vue入口组件 import App from App vue 导入
  • CMake can not determine linker language for target: Intro

    cmake minimum required VERSION 3 9 project Intro C set CMAKE CXX STANDARD 11 add executable Intro main cpp 原来是一个C语言的项目 本
  • Css如何优雅的实现抽奖转盘

    如图 抽奖转盘 可以拆分为几部分 1 底部大圆 2 中间小圆 3 扇形区 4 扇形内部奖品区 5 抽奖按钮 6 点击抽奖按钮时旋转动效及逻辑 这其中 扇形区 以及扇形区内奖品的布局最为关键和麻烦 这个问题解决 剩下的问题 那都不是事儿 那如
  • 10种电脑无法启动故障

    开机自检时出现问题后会出现各种各样的英文短句 短句中包含了非常重要的信息 读懂这些信息可以自己解决一些小问题 可是这些英文难倒了一部分朋友 下面是一些常见的BIOS短句的解释 是我在修电脑时 常出现的短句 大家可以参考一下 1 CMOS b
  • Spring基础知识讲解

    文章目录 Spring是什么 IoC容器与DI DI与IoC的区别 Spring项目的创建 配置maven国内源 创建Spring项目 有关Bean的操作 存储Bean 使用Bean ApplicationContext和BeanFacto
  • mmsegmentation中可视化

    目录 1 tools train py tools dist train sh 2 tools test py 指定输出到 pkl 文件 3 分析日志 绘制分类损失 日志分析 4 Flops Params fps的实现 fps的实现 too
  • 关于实现类按多属性排序的问题(compareTo()函数应用)

    class tongji char zi 字符 int num 出现次数 如上这个类 按照统计个数由多到少输出统计结果 如果统计的个数相同 则按照ASII码由小到大排序输出 1 num大的靠前 2 num 相同情况下 判断字符的ASII码
  • kafka总结概述

    kafka概述 消息中间件对比 特性 ActiveMQ RabbitMQ RocketMQ Kafka 开发语言 java erlang java scala 单机吞吐量 万级 万级 10万级 100万级 时效性 ms us ms ms级以
  • 谷歌开源芯片 180 纳米制造工艺

    谷歌一直在开源芯片方面发力 从跟 SkyWater Technology 的合作开始 SkyWater 为谷歌的开源芯片计划提供了 130nm 工艺的芯片设计 随后把工艺推进到 90nm 制造 为该开源芯片计划加了不少含金量 谷歌与Glob
  • leetcode 347:前K个高频词

    使用python的dict存储 value记录数量 再排序 最后输出 class Solution object def topKFrequent self nums k type nums List int type k int rtyp
  • ORA-12505: TNS: 监听程序当前无法识别连接描述符中所给出的SID等错误解决方法

    当遇到ORA 12505 TNS 监听程序当前无法识别连接描述符中所给出的SID等错误需要特别检查如下配置 1 检查数据库客户端 ORACLEHOME client 1 NETWORK ADMIN目录中的tnsnames ora文件看客户端
  • 如何自学Python爬虫? 零基础入门教程

    如何自学Python爬虫 在大家自学爬虫之前要解决两个常见的问题 一是爬虫到底是什么 二是问什么要用Python来做爬虫 爬虫其实就是自动抓取页面信息的网络机器人 至于用Python做爬虫的原因 当然还是为了方便 本文将为大家提供一份详细的
  • Docker笔记1 基础概念和镜像

    基础概念 开发环境deepin linux 15 11 安装docker之后 执行命令 sudo usermod aG docker USER NAME 让docker和当前用户在一个组中 可以每次不用执行sudo命令了 三个核心的概念 镜
  • 【电路补习笔记】10、电感式开关电源(BUCK 降压电路)

    目录 分类 封装 焊线式 覆晶式 开关电源 三种基本的非隔离开关电源 纹波 ripple 开关电源的元件构成 有源开关 肖特基二极管或快恢复二极管 不使用普通硅二极管的原因 电感 电容 分压电阻 输出电压设置 工作原理 工作模式 连续模式
  • laya快捷键

    Ctrl F6 构建html Ctrl F7 实时编译 Ctrl F8 实时编译 F11 UI导出 不导出图集 图集不变的情况用这个会快很多
  • 分类和标注词汇(基于nltk)

    早在小学你就学过名词 动词 形容词和副词之间的差异 这些 词类 不是闲置的文法家的发明 而是对许多语言处理任务都有用的分类 正如我们将看到的 这些分类源于对文本中词的分布的简单的分析 本章的目的是要回答下列问题 什么是词汇分类 在自然语言处
  • sql-labs 闯关 5~10

    sql labs 闯关 5 10 友善爱国平等诚信民主友善公正敬业爱国友善爱国公正友善自由友善敬业爱国平等 复习笔记1 内容 盲注步骤思维导图 sql labs第五关 GET请求 双注入 单引号字符型 sql labs第六关 GET请求 双
  • Windows下Sqlmap环境安装教程详解

    更多编程教程请到 菜鸟教程 https www piaodoo com Sqlmap安装 Sqlmap gt gt 基于Python的自动化渗透测试工具 安装工具前需要进行Python的环境准备 Python环境的安装 1 1 下载与安装

随机推荐

  • 软件安全测试包含哪些内容和方法?安全测试报告的必要性

    软件安全测试是一种通过模拟真实攻击的方式 对软件系统进行全面的安全性评估和测试 以发现潜在的安全漏洞和弱点 是确保软件系统安全性的重要措施 在进行软件安全测试时 我们需要了解测试的内容和方法 以及为什么进行安全测试报告的必要性 一 软件安全
  • 2021-05-24

    JDBC 目录 JDBC 一 idea下创建JDBC项目 1 下载所需JDBC驱动 2 连接数据库 3 创建JDBC项目 二 JDBC常用类及常用方法介绍 1 DrivaerManger 驱动管理对象 2 Connection 数据库连接对
  • Chat GPT Access denied——最新解决方法

    前几天没怎么捣鼓ChatGpt 看到网上铺天盖地的被封号的消息 心想我不会也被封了吧 立马上线一探究竟 结果喜提Access denied 难道我要告别Chatgpt了 不 我不甘心 然后就是一顿操作根据网上各路大神帖子提供的方案 都一一失
  • Nginx参数配置详细说明【全局、http块、server块、events块】【已亲测】

    Nginx重点参数配置说明 本文包含Nginx参数配置说明全局块 http块 server块 events块共计30多个参数配置与解释 其中常见参数包含配置错误出现的错误日志 能让你更快的解决问题 该文的所有参数大部分经过单独测试 错误都是
  • Vue修改数据页面不更新的问题解决

    第一种场景 动态给对象新增属性或者删除属性是不会触发视图刷新的 Vue识别不到 第二种场景 通过数组下标修改数组中的元素或者手动修改数组的长度 Vue识别不到 解决方法1 静默刷新 使用v if的特性 在修改值之后将元素销毁 然后在修改后的
  • Java GUI编程(Swing)(窗口 面板 弹窗)

    目录 一 窗口 面板 Swing 重点 重点 重点 如果想给窗口进行背景颜色 必须要给窗口JFrame实例化 否则其他没有颜色 例如 jframe setBackground Color BLUE 背景无颜色 Container conta
  • Minio 部署

    minio 官网 https www minio org cn 部署文档 https www minio org cn docs minio container operations install deploy manage deploy
  • SQL中JOIN和UNION

    join 是两张表做交连后里面条件相同的部分记录 可以是不同字段 产生一个记录集 union是产生的两个记录集 字段要一样的 并在一起 成为一个新的记录集 JOIN用于按照ON条件联接两个表 主要有四种 INNER JOIN 内部联接两个表
  • Vision Transformer(ViT)

    1 前言 本文讲解Transformer模型在计算机视觉领域图片分类问题上的应用 Vision Transformer ViT 本人全部文章请参见 博客文章导航目录 本文归属于 计算机视觉系列 2 Vision Transformer Vi
  • Linux rootfs(根文件系统讲解)

    rootfs 其实就是 针对特定的操作系统的架构 一种实现的形式 具体表现为 特定的目录 就理解为windows的文文件夹 目录之间的关系 即组织架构 以及特定的各种文件 boot 系统启动的相关文件 如内核 initrd 以及grup b
  • proxy_set_header Host $host;

    server listen 80 server name www yuetai net cn 核心代码 rewrite https server name 1 permanent location proxy set header X Re
  • HC-02蓝牙串口模块的配置和使用

    HC 02蓝牙串口模块是基于蓝牙2 0并兼容BLE的双模蓝牙数传模块 带底板的蓝牙模块如下图 模块可以作为从机与HC 05或HC 06的主机设备通信 也可以和手机通信 模块在上电未连接蓝牙的时候LED快闪指示 这时可使用串口助手AT指令配置
  • 远场(far-field)语音识别的主流技术有哪些

    转自 https www zhihu com question 48537863 远场 far field 语音识别的主流技术有哪些 以amazon echo为首的一批智能硬件正在崛起 这些硬件实现语音识别功能时面临的一个挑战性的问题就是如
  • apache 2.4 + php 5.5 配置

    网上流传的大都是 Apache 2 2 和 php 5 4的配置 还那么多人转来转去 害苦了多少入门的新手 以下内容适合apache 2 4 php 5 5 mysql或者mariadb的安装配置不说了 从apachelounge下载Apa
  • PCB如何添加3D模型

    我们在布线完PCB后 可以通过按下键盘的数字 3 来查看自己的板子3D模式下的样子 然后我们可以将一些元器件的3D模型添加上去 看一下板子焊接上元器件是什么样子 所以我们可以手动将3D元器件添加上去也可以在选择元器件的封装时候添加其3D封装
  • 监督学习-贝叶斯分类器

    贝叶斯分类器 1 原理 先验概率 某个事件B发生的概率P B 条件 后验 概率 事件B在另一事件A已发生条件下的发生概率P B A 联合概率 两个事件共同发生的概率P A B P B A 2 多个离散属性的条件概率 样本x是n维的特征向量
  • iOS APP打包上传到APPstore的最新步骤

    一 前言 作为一名iOS开发者 把辛辛苦苦开发出来的App上传到App Store是件必要的事 但是很多人还是不知道该怎么上传到App Store上 下面就来详细讲解一下具体流程步骤 二 准备 一个已付费的开发者账号 可分为 账号类型分为个
  • VS2019查找库函数文件夹的方法

    我的路径 C Program Files x86 Windows Kits 10 Include 10 0 19041 0 ucrt 方法 1 新建一个项目 打上所想找到的库函数 2 右击 gt 转到文档 3 右击选项卡 gt 打开文件夹
  • PyTorch预训练和微调:以VGG16为例

    文章目录 预训练和微调代码 测试结果 参考来源 预训练和微调代码 数据集 CIFAR10 CIFAR 10数据集由10类32x32的彩色图片组成 一共包含60000张图片 每一类包含6000图片 其中50000张图片作为训练集 10000张
  • 记一次APP脱壳重打包过程

    小伙伴分享了一个开车软件 但是有播放次数限制 对此小伙伴放言要制裁它 无奈APP加固了 咳咳 本着学 wei 习 le 研 fu 究 li 的态度 尝试着脱壳并重打包 为证清白 伸出双手 上操作 右键直接解压APK 查看特征是360加固 使