1.发展背景

转载注明出处:https://blog.csdn.net/weixin_38819889/article/details/123880076

APP 加固发展到现在已经好几代了,从整体加固到代码抽取到虚拟机保护,加固和脱壳的方案也逐渐趋于稳定。随着保护越来越强,脱壳机们也变得越来越费劲,繁琐。但是毕竟道高一尺,魔高一丈,市面上有很多手段可以进行脱壳操作今天介绍的是使用Frida的一个脚本来dump apk的Dex

2.脱壳原理

得益于FRIDA, 在 PC上面进行内存搜索、转储都变得十分方便,再也不需要考虑什么Xposed、什么Android开发、什么代码注入,只需要关注如何去搜索想要的东西,于是依赖一个几十行代码的小脚本,就可以将大部分内存中的 dex 脱下来。对于完整的 dex,采用暴力搜索 dex035 即可找到。而对于抹头的 dex,通过匹配一些特征来找到。

非常感谢葫芦娃大佬的开源工具,使用起来很方便,。
项目地址: https://github.com/hluwa/FRIDA-DEXDump

3. 以某apk为例

先把这个开源项目下载到本地,如图,这里是mac的目录:

然后用一些查壳工具,看看该apk到底使用了什么加固。
缺图先欠着pass

之后需要开启我们手机的frida服务

再之后把目录切换到 frida_dexdump 所在的路径,同时把待脱壳的apk打开,也是就是变成主activity,最后直接运行 python3 main.py

倒数三秒钟就把壳脱下来了,可以看到一个个dex文件,就是我们想要的。

4.合并dex-重打包

最最后,就是把脱下来的许许多多的dex重新合并打包,这里推荐一个很好用的合并工具,感谢qinless大佬提供的。

代码如下,需要自取。

import os
import zipfile
import argparsedef rename_class(path):files = os.listdir(path)dex_index = 0if path.endswith('/'):path = path[:-1]print(path)for i in range(len(files)):if files[i].endswith('.dex'):old_name = path + '/' + files[i]if dex_index == 0:new_name = path + '/' + 'classes.dex'else:new_name = path + '/' + 'classes%d.dex' % dex_indexdex_index += 1if os.path.exists(new_name):continueos.rename(old_name, new_name)print('[*] 重命名完毕')def extract_META_INF_from_apk(apk_path, target_path):r = zipfile.is_zipfile(apk_path)if r:fz = zipfile.ZipFile(apk_path, 'r')for file in fz.namelist():if file.startswith('META-INF'):fz.extract(file, target_path)else:print('[-] %s 不是一个APK文件' % apk_path)def zip_dir(dirname, zipfilename):filelist = []if os.path.isfile(dirname):if dirname.endswith('.dex'):filelist.append(dirname)else:for root, dirs, files in os.walk(dirname):for dir in dirs:# if dir == 'META-INF':# print('dir:', os.path.join(root, dir))filelist.append(os.path.join(root, dir))for name in files:# print('file:', os.path.join(root, name))filelist.append(os.path.join(root, name))z = zipfile.ZipFile(zipfilename, 'w', zipfile.ZIP_DEFLATED)for tar in filelist:arcname = tar[len(dirname):]if ('META-INF' in arcname or arcname.endswith('.dex')) and '.DS_Store' not in arcname:# print(tar + " -->rar: " + arcname)z.write(tar, arcname)print('[*] APK打包成功,你可以拖入APK进行分析啦!')z.close()if __name__ == '__main__':args = {'dex_path': '脱壳后dex路径','apk_path': '原始带壳apk路径','output': '脱壳后apk路径'}rename_class(args['dex_path'])extract_META_INF_from_apk(args['apk_path'], args['dex_path'])zip_dir(args['dex_path'], args['output'])

效果如下:

之后就会把apk打包成功,就可以拖入jadx反编译查看源代码了。
完事手工✋

使用 frida+dexdump对apk脱壳相关推荐

  1. Apk脱壳圣战之---脱掉“梆梆加固”的保护壳

    一.前言 现如今Android用户的安全意识不是很强,又有一些恶意开发者利用应用的名字吸引眼球,包装一个恶意锁机收费的应用,在用户被骗的安装应用之后,立马手机锁机,需要付费方可解锁.这样的恶意软件是非 ...

  2. APK脱壳之—如何脱掉“梆梆加固”的保护壳

    一.前言 现如今Android用户的安全意识不是很强,又有一些恶意开发者利用应用的名字吸引眼球,包装一个恶意锁机收费的应用,在用户被骗的安装应用之后,立马手机锁机,需要付费方可解锁.这样的恶意软件是非 ...

  3. Apk脱壳圣战之—如何脱掉“梆梆加固”的保护壳

    一.前言 现如今Android用户的安全意识不是很强,又有一些恶意开发者利用应用的名字吸引眼球,包装一个恶意锁机收费的应用,在用户被骗的安装应用之后,立马手机锁机,需要付费方可解锁.这样的恶意软件是非 ...

  4. Apk脱壳圣战之---如何脱掉“梆梆加固”的保护壳

    一.前言 现如今Android用户的安全意识不是很强,又有一些恶意开发者利用应用的名字吸引眼球,包装一个恶意锁机收费的应用,在用户被骗的安装应用之后,立马手机锁机,需要付费方可解锁.这样的恶意软件是非 ...

  5. Apk脱壳圣战之---如何脱掉 梆梆加固 的保护壳

    一.前言 现如今Android用户的安全意识不是很强,又有一些恶意开发者利用应用的名字吸引眼球,包装一个恶意锁机收费的应用,在用户被骗的安装应用之后,立马手机锁机,需要付费方可解锁.这样的恶意软件是非 ...

  6. Apk脱壳之—脱掉“360加固”的壳

    一.前言 现在主流的加固平台有:梆梆加固,爱加密,360加固,腾讯加固,在之前的一篇文章中介绍了:如何脱掉"爱加密"的壳,现在这里要脱掉另外一个平台的壳:360加固,因为有了之前的 ...

  7. php加固apk,脱壳再打包某梆梆免费加固APP

    Apk: 梆梆免费加固apk,非2019最新版. 准备工具: Apktool dex-tools-2.1-SNAPSHOT smali-2.3.4 DexExtractor jd-gui 整体也是这个 ...

  8. Android APK脱壳

    概述 众所周知,Android应用开发完成后,除了使用Google官方的混淆外,还需要使用一些第三方的安全软件的加壳处理,比较出名的有腾讯乐固.360加固和爱加密等.我之前所在的公司,就是使用爱加密进 ...

  9. APK脱壳,获取dex失败,分享失败解决办法

    转载于:https://blog.csdn.net/liphios/article/details/102776285 经过加固后的apk,通过dex2jar反编译: 腾讯乐固: 360加固: 从上面 ...

最新文章

  1. 结构体指针和数组理解
  2. Go会接替Java,成为下一个企业级编程语言吗?
  3. VTK:AngleWidget2D用法实战
  4. 【tensorflow】tf.reshape函数说明:重塑张量
  5. [react] 什么渲染劫持?
  6. java simplejson_JSON.simple首页、文档和下载 - JSON/BSON开发包 - OSCHINA - 中文开源技术交流社区...
  7. 树莓派 | threading01 - 创建两个子线程同时运行,两个线程各负责控制一个LED灯以不同的频率闪烁
  8. linux装mongodb数据库,Linux下安装配置MongoDB数据库
  9. python往list中添加tuple
  10. html中写自增数字,CSS 小技巧:counter 实现有序列表编号自增
  11. jenkins 构建异常_Jenkins多环境持续集成架构实践!
  12. 哲学必读10本经典著作
  13. python定时发qq消息_Python如何实现定时发送qq消息
  14. python在tk界面播放本地视频_如何使用python3在tkinter窗口中插入视频播放器?
  15. unity-动画 Animation read-only 问题
  16. 首域微交易分析师一对一服务
  17. 荣耀30青春版发布 简单说说有哪些亮点
  18. leetcode-94
  19. 2017年美国计算机科学,2017年U.S.News美国大学研究生计算机科学专业排名TOP10
  20. CentOS7配置代理上网

热门文章

  1. 学计算机的男孩子怎么追女孩子,男孩子追女孩子的套路,原来有这么多,快来学一学...
  2. Spring Cloud Gateway 之获取请求体的几种方式
  3. 为什么人们默认 x86 代表 32 位处理器
  4. PHPUnit简介及使用(thinkphp5的单元测试安装及使用)
  5. Vue项目从无到有的部署上Github page
  6. 用yum源配合源码包安装openresty、mariadb、php7服务
  7. 当猪飞起来:也谈创业初期商业模式问题
  8. Java7的异常处理新特性-addSuppressed()方法等
  9. DOM与元素节点内联样式
  10. 扩展的母函数(可以做减法的母函数)(当然只要你愿意也可以做乘除!)