码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 记录一次成功反混淆脱壳及抓包激活app全过程


    记录一次成功反混淆脱壳及抓包激活app全过程

    前言

    ​ 近期接到一个需求,要对公司之前开发的一款app进行脱壳。因为该app是两年前开发的,源代码文件已经丢失,只有加壳后的apk文件,近期要查看其中一项功能的源代码,因此需要尝试进行脱壳处理,反编译后发现该app是使用某数字公司的加壳工具进行混淆加壳的。此外,该app是给特定平板使用的,需要激活码进行激活才能使用,而原激活码服务器已经停止运行,只能通过抓包修改激活码服务器地址进行激活。该文档记录了我成功脱壳抓包的全过程。

    ​ 我尝试的Xposed框架的工具均无效,使用IDA查看底层代码后发现JNI经过包装,修改难度较大,最终通过blackdex及frida框架的dexdump成功抓取dex文件。

    ​ 注意:软件必须激活能正常使用才能进行抓取dex文件。

    1、使用apktools、dex2jar、jd-gui进行反编译,查看文件源码

    这三种反编译工具的使用请自行查看相关教程:https://blog.csdn.net/helloc888/article/details/106712649?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-106712649-blog-123085977.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-106712649-blog-123085977.pc_relevant_default&utm_relevant_index=2。其实使用jadx也可以查看源码,但开始我没有使用jadx查看,而是使用这三种工具。

    查看文件源码后发现该apk经过360加固混淆,无法查看相关源码,因此开始本次脱壳之路。

    2、下载安装夜神模拟器,并配置

    夜神模拟器下载:https://www.yeshen.com/

    由于手上没有用于测试的平板,因此安装夜神模拟器进行脱壳测试。通过网址下载安装即可,注意:电脑要在主板设置中开启VT,加快模拟器运行速度。

    下载安装完成后,进入夜神模拟器并进行初步配置。文件管理、设置等都在工具文件夹中。

    文件同步路径查看,文件同步类似于docker中的文件挂载,在该文件夹中的文件,模拟器和电脑都可以访问,需要传到电脑的文件直接放到该文件夹下就不用导出,导出也是导出到该文件夹下😂

    在右上角 设置/基础 中开启root权限

    3、安装可能需要使用的软件

    3.1、安装xposed

    如果需要xposed框架,那么直接在搜索栏中搜索xposed并安装,授予root权限

    打开安装好的xposed软件,安装xposed框架

    需要使用该框架时,则在左上角选项卡中的模块一栏运行相关脱壳软件即可

    3.2、安装终端模拟器

    模拟器中需要使用linux命令进行授权等操作的话,则要安装终端模拟器apk,使用adb其实也可以不用安装

    安卓终端模拟器apk下载:https://f-droid.org/packages/jackpal.androidterm/

    使用这款模拟器主要是支持中文输入,可以查找中文文件进行相关操作,可以不安装F-Droid,只安装终端模拟器,个人推荐

    建议使用本机下载apk后,使用夜神模拟器安装功能进行安装,使用夜神模拟器中的浏览器进行下载安装软件会出现失败的情况

    模拟器操作与linux常用操作相同,su切换管理员

    3.3、安装adb

    Adb是Android Debug Bridge的简称,是一个Android调试工具

    adb下载地址:https://dl.google.com/android/repository/platform-tools-latest-windows.zip,下载后解压即可使用,配置环境变量(此电脑→属性→高级系统设置→环境变量→Path(系统变量)→新建(添加adb绝对路径之后确定)),以便可以系统全局使用

    查看adb版本

    使用adb连接模拟器并查看连接设备

    3.4、安装frida及frida-server

    在cmd中通过命令行安装frida:

    pip install frida
    pip install frida-tools
    

    查看frida版本及安卓设备版本

    frida-server下载网址:https://github.com/frida/frida/releases,根据查到的安卓版本及frida版本到该网址下载对应的frida-server文件

    下载frida-server后解压并安装到模拟器中:

    adb push C:\Users\admin\Downloads\frida-server-16.0.1-android-x86 /data/local/tmp/frida-server-16.0.1-android-x86
    adb shell 
    su
    cd /data/local/tmp
    chmod 755 frida-server-16.0.1-android-x86
    ./frida-server-16.0.1-android-x86 &
    

    frida-server运行成功界面:

    测试frida-server安装成功:

    4、开始脱壳

    本次脱壳尝试了多种dexdump方法,最后有效的有两种:dexdump和blackdex

    4.1、安装FRIDA-DEXDump

    FRIDA-DEXDump项目地址:https://github.com/hluwa/FRIDA-DEXDump

    通过命令行安装:

    pip3 install frida-dexdump
    

    使用dexdump抓取加壳app的dex文件:

    frida-dexdump -U -f com.app.pkgname
    

    需要开启执行抓取命令后,在模拟器中需要脱壳的安装好的app,运行成功界面:

    4.2、下载BlackDex文件

    BlackDex项目地址:https://github.com/CodingGay/BlackDex,下载地址:https://github.com/CodingGay/BlackDex/releases,下载apk安装到模拟器即可。

    下载界面:

    运行界面:

    运行成功:

    需要脱壳的应用无需运行,该项目通过虚拟化技术将程序运行,初始化Application,启动成功后调用handleDumpDex核心方法来dump内存中的dex文件

    5、抓取到的dex文件修复

    安装MT管理器:https://mt2.cn/

    同样使用本机下载apk,安装到模拟器中,使用MT管理器修复抓取到的dex文件。MT还有很多其他的实用功能可以使用,在这里没有用到所以不再详述。

    6、使用jadx查看修复后的项目,进行反混淆后保存

    jadx项目地址:https://github.com/skylot/jadx,下载后解压即可使用,需要配置环境变量跟上文中类似

    在cmd中输入jadx-gui即可运行jadx的gui界面

    在jadx中打开脱壳并修复后的dex文件

    进行反混淆操作后,在 文件→全部保存 中保存全部项目文件

    查看保存后的项目代码示例

    7、Fiddler抓包并修改请求激活app

    Fiddler是一款强大的抓包软件,可以对拦截到的包进行修改后在将修改后的请求发出

    我们要脱壳的是我们几年之前开发的app,当时的服务器已经停止运行了,所以要修改服务器地址进行激活app

    Fiddler下载:https://www.telerik.com/fiddler/fiddler-everywhere,下载后正常安装即可(正版有10天试用期足够了)。

    夜神模拟器开启网桥模式

    通过ipconfig查看本机IP,修改夜神模拟器wlan代理(长按WiredSSID)为手动,并设置主机名为本机IP,端口为8888(fiddler默认端口),保存

    访问本机IP+端口8888下载证书并保存到模拟器中:

    运行界面(已经可以抓到夜神模拟器的请求):

    fiddler右上角设置中打开HTTPS抓包,并忽略服务认证错误:

    新建拦截规则,拦截到包含目标url的包并替换替换为新的服务器url地址:

    修改完后软件可以正常运行

    注意:我们只要获取源码即可,不需要回编为app,回编为app还需要打开dex文件详细查看并删除libjiagu、stub等文件,过签重命名修改文件等操作,详情可参考该文章:https://www.52pojie.cn/thread-1453091-1-1.html。

  • 相关阅读:
    【MySQL数据库笔记 - 进阶篇】(五)锁
    有一说一,外包公司到底值不值得去?
    RDMA技术原理和三种实现方式
    Halcon二维码识别
    Python——Python程序的文件头部声明
    【TES720D-KIT】青翼科技支持双网口的全国产化四核CPU+FPGA处理器开发套件
    AJAX学习笔记3练习
    计算机毕设源码网站springboot毕业设计管理系统
    决策树详解
    服务注册发现 springcloud netflix eureka
  • 原文地址:https://www.cnblogs.com/wydilearn/p/16813584.html
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号