记录一次成功反混淆脱壳及抓包激活app全过程
记录一次成功反混淆脱壳及抓包激活app全过程
前言
近期接到一个需求,要对公司之前开发的一款app进行脱壳。因为该app是两年前开发的,源代码文件已经丢失,只有加壳后的apk文件,近期要查看其中一项功能的源代码,因此需要尝试进行脱壳处理,反编译后发现该app是使用某数字公司的加壳工具进行混淆加壳的。此外,该app是给特定平板使用的,需要激活码进行激活才能使用,而原激活码服务器已经停止运行,只能通过抓包修改激活码服务器地址进行激活。该文档记录了我成功脱壳抓包的全过程。
我尝试的Xposed框架的工具均无效,使用IDA查看底层代码后发现JNI经过包装,修改难度较大,最终通过blackdex及frida框架的dexdump成功抓取dex文件。
注意:软件必须激活能正常使用才能进行抓取dex文件。
1、使用apktools、dex2jar、jd-gui进行反编译,查看文件源码
查看文件源码后发现该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版本
使用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。
记录一次成功反混淆脱壳及抓包激活app全过程的更多相关文章
- .net反混淆脱壳工具de4dot的使用
de4dot是一个开源的.net反混淆脱壳工具,是用C#编写的,介绍一下它的使用方法 首先 pushd 到de4dot.exe所在文件夹,然后调用 de4dot.exe 路径+dll名称 如果显示: ...
- chrome 抓包的小功能--preserve log (记录页面跳转后,所有的抓包记录)
1.记录页面跳转后,所有的抓包记录,勾上
- 网络协议 反扒机制 fidder 抓包工具
协议 http 协议: client 端 server 端交互的 一种形式 请求头信息: User-Agent: 情求载体的身份标识 connection: 'close' 连接状态 请求成功后 断开 ...
- .net破解一(反编译,反混淆-剥壳)
大家好,前段时间做数据分析,需要解析对方数据,而数据文件是对方公司内部的生成方式,完全不知道它是怎么生成的. 不过还好能拿到客户端(正好是C#开发)所以第一件事就是用Reflector编译,但是没有想 ...
- net破解一(反编译,反混淆-剥壳,工具推荐)
net破解一(反编译,反混淆-剥壳,工具推荐) 大家好,前段时间做数据分析,需要解析对方数据,而数据文件是对方公司内部的生成方式,完全不知道它是怎么生成的. 不过还好能拿到客户端(正好是C#开发)所以 ...
- RESTClient调试POST方法&Reflector+de4dot反混淆破解dll
RESTClient调试POST方法 RESTClient是火狐的一款WebAPI测试工具. 1.先看下我们要调试的接口
- 关于使用PyExecJS+nodejs使用与js反混淆
来源:https://cuiqingcai.com/5024.html 梳理这篇博客的时候出问题,我默认的是jscript作为pyexcJs的引擎,问题很大,大部分的js都无法加载,各种包用不了,只能 ...
- 反混淆:恢复被OLLVM保护的程序
译者序: OLLVM作为代码混淆的优秀开源项目,在国内主流app加固应用中也经常能看到它的身影,但是公开的分析研究资料寥寥.本文是Quarkslab团队技术博客中一篇关于反混淆的文章,对OLLVM项目 ...
- C# 反编译-Reflector 反混淆-De4Dot 修改dll/exe代码-reflexil
反编译工具 Reflector 破解版下载地址:http://pan.baidu.com/s/15UwJo 使用方法:略 反混淆工具De4Dot 开源软件 下载地址http://pan.baidu.c ...
随机推荐
- MySQL:关于MGR中监控的两个重要指标简析
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 转载声明:以下文章来源于MySQL学习 ,作者八怪(高鹏) 一.两个重要的指标 ...
- 下载markdown软件Obsidian(解决官网下载速度慢)
Typora要钱了,不想每次都点稍后再买. Obsidian也很好用,官网是:https://obsidian.md/ 但是不太好下载,直接下载速度只有10kb/s左右,总共60多MB: 扔给迅雷也没 ...
- day19--Java集合02
Java集合02 6.ArrayList ArrayList的注意事项: Permits all element , including null ,ArrayList 可以加入null ,并且可以加 ...
- 搞定面试官 - 你可以介绍一下在 MySQL 中,哪些情况下 索引会失效嘛?
大家好,我是程序员啊粥,前边给大家分享了 *MySQL InnoDB 索引模型 在 MySQL InnoDB 中,为什么 delete 删除数据之后表数据文件大小没有变 如何计算一个索引的长度 如何查 ...
- oracle 怎么查看用户对应的表空间
oracle 怎么查看用户对应的表空间? 查询用户: 查看数据库里面所有用户,前提是你是有 dba 权限的帐号,如 sys,system: select * from dba_users; 查看你能管 ...
- PHP一句话简单免杀
PHP一句话简单免杀 原型 几种已经开源的免杀思路 拆解合并 <?php $ch = explode(".","hello.ev.world.a.l"); ...
- 大家都能看得懂的源码 - 那些关于DOM的常见Hook封装(一)
本文是深入浅出 ahooks 源码系列文章的第十四篇,该系列已整理成文档-地址.觉得还不错,给个 star 支持一下哈,Thanks. 上一篇我们探讨了 ahooks 对 DOM 类 Hooks 使用 ...
- 【读书笔记】C#高级编程 第十章 集合
(一)概述 数组的大小是固定的.如果元素个数是动态的,就应使用集合类. List<T>是与数组相当的集合类.还有其它类型的集合:队列.栈.链表.字典和集. (二)列表 1.创建列表 调用默 ...
- Java 热更新 Groovy 实践及踩坑指南
Groovy 是什么? Apache的Groovy是Java平台上设计的面向对象编程语言.这门动态语言拥有类似Python.Ruby和Smalltalk中的一些特性,可以作为Java平台的脚本语言使用 ...
- Windows Server Backup保留副本数量的问题
在配置Windows Server Backup的时候可以配置备份时间点和备份存放位置,但是无法配置保留备份的数量.作为微软提供的一个基本的备份工具,做简单的备份还是可以的.但是对于同一备份任务,反复 ...