加固与脱壳04 - 一些简单的脱壳方法

news2024/12/22 19:06:40

这里只讨论一些简单壳的脱壳方法及其原因。

FRIDA-DEXDump

  • https://github.com/hluwa/FRIDA-DEXDump

适用于不需要研究那些被强保护起来的代码,只是想单纯的看看某个地方的业务逻辑。

原理:

对于完整的 dex,采用暴力搜索 dex035(DEX有多个版本,可以自行匹配)即可找到。而对于抹头的 dex,通过匹配一些特征来找到。

  • https://www.anquanke.com/post/id/221905

该工具使用起来极其简单就不演示了。

Frida-fart

这个是有两个版本,一个是修改源码的思路,一个是使用 frida 的思路。

介绍使用 frida 的思路:

  • https://github.com/jas502n/FART-dump/blob/master/frida_fart.zip

里面提供了两个脚本,一个是使用 hook,一个是使用反射,脚本里面都有详细使用说明:

拿 hook 方式来说:

  • 首先拷贝fart.sofart64.so/data/app目录下,并使用chmod 777 设置好权限,然后就可以使用了。

  • 需要以spawn方式启动app,等待app进入Activity界面后,执行fart()函数即可。

    如app包名为com.example.test,则执行frida -U -f com.example.test -l frida_fart_hook.js --no-pause,然后等待app进入主界面,再执行fart()

  • 高级用法:如果发现某个类中的函数的CodeItem没有dump下来,可以调用dump(classname),传入要处理的类名,完成对该类下的所有函数体的dumpdump下来的函数体会追加到bin文件当中。

这个会比上面的**FRIDA-DEXDump**要强一点,因为它可以主动的dump一些没有执行过的方法。因为对于函数抽取壳来说,如果一个函数没有执行,那么它 DEX 中的 CodeItem可能是没有还原过的。

上面说的这两种都没法处理具有反调试的壳。对于一些加固厂商来说,他们提供的免费版加固都是比较好处理的,没有反调试。但是对于付费版来说,反调试是必带的功能,它可以识别到 frida 特征,这个时候再去脱壳就会卡在启动界面,frida-server 进程也会挂掉。

这个时候,要么去分析反调试逻辑,要么就采用修改源码刷镜像的方式来脱壳。FART仅提供了6.08.0的镜像可以刷机。如果你刷的是 debug 版镜像,一些加固还会识别手机是否 root,这时你又要处理如何绕过 root,所以只能刷 release 镜像。

由于FRAT是一个非常知名的项目,一些加固厂商已经将 FART 的特征加到黑名单里面去了,比如:

  • https://bbs.kanxue.com/thread-266247.htm

BlackDex

  • https://github.com/CodingGay/BlackDex

这个是基于插件化的思路,将其他 app 当成一个插件,运行起来到自己的进程中,这样它就能获取到app中真实的类。有兴趣的可以去看一下作者博客,不难理解:

  • https://blog.niunaijun.top/index.php/tag/BlackDex/

由于项目开源的原因,特征也很明显,所以加固厂商也很好对抗。

讨论了一些简单的脱壳方案,发现最后还是改源码编译镜像最好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2201129.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

云栖实录 | Hologres3.0全新升级:一体化实时湖仓平台

本文根据2024云栖大会实录整理而成,演讲信息如下: 演讲人: 姜伟华 | 阿里云智能集团资深技术专家、Hologres 负责人 丁 烨 | 阿里云智能集团产品专家、Hologres 产品负责人 活动: 2024 云栖大会 - 商用大数据计算与分析平台论…

基于Arduino的超声波和舵机模块集成使用

一.超声波模块和舵机模块集成使用 超声波模块:HC-SR04舵机模块:SG90目的:通过Arduino UNO核心板控制舵机旋转到不同位置,同时获取不同位置超声波模块和障碍物间的距离,配合控制算法,进行基于超声波智能避障…

需求10——通过改一个小bug来学习如何定位问题

在浏览我之前完成的一些小需求时,我发现了一个非常有价值的需求。这个需求可以让我深入了解系统中关于故障上报的功能。通过完善这个需求,我能够全面掌握整个故障上报的流程。 这个需求主要是关于故障上报流程中出现的问题。当前的流程如下:…

ML 系列:机器学习和深度学习的深层次总结(16) — 提高 KNN 效率-使用 KD 树和球树实现更快的算法

一、说明 在机器学习系列的第 16 节,我们重点介绍了提高 K 最近邻 (KNN) 算法的效率,这是一种广泛用于分类和回归任务的方法。虽然 KNN 简单有效,但对于大型数据集来说,其计算成本可能会令人望而却步。为了…

基于SpringBoot问卷调查系统小程序【附源码】

基于SpringBoot问卷调查系统小程序 效果如下: 管理员登录界面 管理员功能界面 调查人管理界面 问卷调查管理界面 问卷题目管理界面 用户登录界面 APP首页界面 公告信息界面 研究背景 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨&…

组织病理学图像中的再识别|文献速递--基于多模态-半监督深度学习的病理学诊断与病灶分割

Title 题目 Re-identification from histopathology images 组织病理学图像中的再识别 01 文献速递介绍 在光学显微镜下评估苏木精-伊红(H&E)染色切片是肿瘤病理诊断中的标准程序。随着全片扫描仪的出现,玻片切片可以被数字化为所谓…

怎么在单片机裸机程序中移植EasyLogger?

1、介绍 EasyLogger 是一款超轻量级、高性能的C日志库,非常适合对资源敏感的软件项目。例如:IoT产品、可穿戴设备、智能家居等等。相比log4c、zlog这些知名的C日志库,EasyLogger的功能更加简单,提供给用户的接口更少,但…

肺腺癌预后新指标:全切片图像中三级淋巴结构密度的自动化量化|文献精析·24-10-09

小罗碎碎念 本期这篇文章,我去年分享过一次。当时发表在知乎上,没有标记参考文献,配图的清晰度也不够,并且分析的还不透彻,所以趁着国庆假期重新分析一下。 这篇文章的标题为《Computerized tertiary lymphoid structu…

基于springboot vue 校园失物招领平台的设计与实现

博主介绍:专注于Java(springboot ssm springcloud等开发框架) vue .net php phython node.js uniapp小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作☆☆☆ 精彩专栏推荐订阅☆☆☆☆…

【AIGC】OpenAI API在快速开发中的实践与应用:优化ChatGPT提示词Prompt加速工程

博客主页: [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯使用最新型号确保最佳实践利用最新模型进行高效任务处理为什么要选择最新模型?结论 💯指令与上下文的分隔最佳实践分隔指令和上下文的重要性使用符…

叉车毫米波雷达防撞技术,保护叉车作业安全

在叉车作业频繁的仓库与物流中心,安全隐患往往隐藏于细微之处,稍有不便可能引发重大事故。我们的叉车毫米波防撞系统方案,正是针对这一痛点而精心设计的创新之作。该系统通过集成的毫米波雷达技术,实现了对叉车周边环境的实时、精…

【动态规划】dp之斐波那契数列模型

学习编程就得循环渐进,扎实基础,勿在浮沙筑高台 循环渐进Forward-CSDN博客 目录 循环渐进Forward-CSDN博客 第N个泰波那契序数 思路: 代码实现: 三步问题 思路: 代码实现: 使用最小花费爬楼梯 思路…

C语言 | 第十三章 | 二维数组 冒泡排序 字符串指针 断点调试

P 120 数组应用案例 2023/1/29 一、应用案例 案例一&#xff1a;创建一个char类型的26个元素的数组&#xff0c;分别 放置’A’-Z‘。使用for循环访问所有元素并打印出来。提示&#xff1a;字符数据运算 ‘A’1 -> ‘B’ #include<stdio.h>void main(){/*创建一个c…

【优选算法之BFS】No.15--- 经典BFS解决FloodFill算法和解决最短路问题

文章目录 前言一、BFS解决FloodFill算法示例&#xff1a;1.1 图像渲染1.2 岛屿数量1.3 岛屿的最⼤⾯积1.4 被围绕的区域 二、BFS解决最短路问题2.1 迷宫中离⼊⼝最近的出⼝2.2 最⼩基因变化2.3 单词接⻰2.4 为⾼尔夫⽐赛砍树 前言 &#x1f467;个人主页&#xff1a;小沈YO. &a…

Linux高级编程_31_消息队列

文章目录 消息队列作用&#xff1a;特点&#xff1a;消息队列限制值&#xff1a;注意&#xff1a;命令&#xff1a;ftok函数作用&#xff1a;语法&#xff1a; msgget函数作用&#xff1a;语法&#xff1a; msgsnd函数作用&#xff1a;语法&#xff1a; msgrcv函数作用&#xf…

QT实现QInputDialog中文按钮

这是我记录Qt学习过程心得文章的第三篇&#xff0c;主要是为了方便QInputDialog输入框的使用&#xff0c;通过自定义的方式&#xff0c;按钮中文化&#xff0c;统一封装成一个函数&#xff0c;还是写在了Skysonya类里面。 实现代码&#xff1a; //中文按钮文本输入对话框 QSt…

【gRPC】1—gRPC是什么

gRPC是什么 ⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记链接&#x1f449;https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ 如果可以&#xff0c;麻烦各位看官顺手点个star~&#x1f60a; &#x1f4d6;RPC专栏&#xff1a;https://b…

鸿蒙--播放器状态控制

各个页面共享同一个播放状态&#xff0c;而且可以互相控制&#xff0c;如果传递来传递去会非常的麻烦&#xff0c;但是他们都是Tabs组件内的&#xff0c;我们在index页面提供一个状态&#xff0c;在各个组件接收即可 创建两个子组件&#xff0c;一个是播放控制的子组件&#xf…

1. Oracle 安装报错——环境变量过长

文章目录 1. 报错详细信息2. 解决方案2.1 方案一&#xff1a;修改配置文件cvu_prereq.xml2.2 方案二&#xff1a;修改环境变量配置 1. 报错详细信息 安装 Oracle 过程中&#xff0c;在执行 “先决条件检查” 时报错&#xff1a; 报错内容&#xff1a; This test checks wheth…

【自然语言处理】(3) --RNN循环神经网络

文章目录 RNN循环神经网络一、传统神经网络的问题二、RNN的基本结构三、计算过程4. RNN的局限 总结 RNN循环神经网络 循环神经网络&#xff08;RNN&#xff0c;Recurrent Neural Network&#xff09;是一种用于处理序列数据的神经网络模型。其关键特性在于网络节点&#xff08…