我们在开发App的过程中为了保护自己的劳动成果不被剽窃,也为了保证接口不被暴露,通常在上架之前做一些混淆或者加固的处理,市面上也有不少加固工具,更有甚者在某些平台上线App必须使用该平台的加固工具进行加固后才可上线!这些加固真的靠谱吗?这两天我就对通过某60加固的App下手了,结果作为逆向零基础的小白,用了大约两天的时间,就成功脱壳了。。。下面就来分享一下我这几天的学习与破解过程。(下面的分享都是基于Mac系统开发的,Windows会略有不同)

2022.10.27:​​​​​​如果你着急脱壳,可以直接使用这位大神所提供的工具https://github.com/hluwa/FRIDA-DEXDump,看完下面的第一步,学会获取包名,就可以实现脱壳了。

当然了,如果你想了解脱壳的原理与步骤,可以静下心来看下去。

一、反编译基础三件套

首先要介绍一下反编译的基础三件套:apktool、dex2jar-2.0、jd-gui-osx;

1、apktool:apk在某种意义上来说也是一种压缩包,Android开发者应该都知道可以通过更改后缀名的方式得到App的资源文件,但是在这种方式下的manifest与XML文件都是乱码,无法查看,那么我们就需要使用apktool来获取可读取的资源文件了,命令也很简单:apktool d xxx.apk;这是我们脱壳必要的一步,因为我们需要通过manifest获取到app的包名

apktool安装与配置可参考:https://www.jianshu.com/p/c90024f61653

2、dex2jar-2.0+jd-gui-osx:这两个工具的联合使用,是为了查看App的源码的。首先我们apk的后缀名修改为zip,然后将其解压缩,将其中的dex文件拷贝到dex2jar-2.0,执行sh d2j-dex2jar.sh xxx.dex,便可将dex转换成jar;然后在jd-gui-osx下即可查看源码:

在Mac下使用dex2jar-2.0会出现权限问题,解决方法可参考:https://www.jianshu.com/p/f53b718d282b

二、利用Frida给加固过的App脱壳

通过基础三件套可以对没有加固的App实现反编译,但如果这个App它加固过了,那通过jd-gui-osx看到的就会是这样:

等等,qihoo.util?看来他用的是某60加固的,好的,要“对付”就是你们这些加固过的App!通过在百度上搜索qihoo.util,果真发现了有不少关于如何给360脱壳的文章,又通过一些搜索了解到一个叫frida的工具,可以实现脱壳,而且某60、某加密、某固等主流的加密工具,都在被脱之列!

1、frida简介

frida的原理在我理解就是,通过在PC上安装Frida,手机上运行frida-server,实现PC对手机的控制,同时通过js注入的方式,将dex从“壳”里“钩”出来。(如果只是想实现结果,可以不在意这些原理,直接用大神们提供的工具就好~)

它是一款基于Python的hook(钩子)工具,因此在安装它之前我们需要先配置Py环境,现在的frida仅支持3.7以下的环境,3.8以上的暂不支持,这一点需要注意,我就因为PC上的py版本太高,不得不重新安装py。

2、pc上安装frida和frida-server

我们通过pip3 install 安装frida、frida-server,这里也有一个注意点:如果你的测试设备是5.1.1的话,需要指定frida为12.1.0(pip3 frida install == 12.1.0)frida-tools为1.2.0,至于原因,后面再说。

在安装之前,还需要手动下载与你py版本对应的egg文件,否则在安装frida的过程中,会报一个找不到对应egg文件的错误。

下载链接:Releases · frida/frida · GitHub

整个安装过程会比较慢,会卡在Running setup.py install for frida ... – 这里很久,一定要有耐心。如果在下载过程中出现超时,可以重新下载或者安装时添加参数 pip3 --default-timeout=100 install -U xxx 。

安装完成后可以通过在python中,import frida来检测,如果没有报错,则代表安装成功。

3、在手机上运行frida-server

frida-server版本的选择由设备的内核版本与frida的版本决定,frida的版本已经确定,我们还需要确定设备的内核版本。在shell中,执行命令:cat /proc/cpuinfo查看系统内核。我的frida版本为12.1.0,设备内核版本为arm32位,因此选择:

下载地址:https://github.com/frida/frida/releases

下载完成后将文件解压,通过adb push导入到/data/local文件夹中,然后:

adb shell进入手机系统;

通过su切换刀root;

cd到/data/local

赋予froda-server 777 权限:chmod 777 frida-server

运行frida-server:./frida-server;还记得之前强调的frida版本问题吗?如果你在5.1.1的设备上,安装了高于12.1.0的frida-server上的话,这里执行就会报错:unused DT entry: type 0x6ffffef5 arg 0x1ddc,那么你又得重新安装frida、frida-tools、frida-server,那又将是一个漫长的过程了...

启动成功以后,新建一个终端窗口,输入:frida-ps -U,如果可以看到当前设备的进程和名称,则证明pc和手机通过frida联通了:

4、关键一步,利用“钩子”将dex脱出来:

以上所做的都是准备工作,下面就是真正的脱壳操作了,这里感谢“看雪”论坛里的大神,提供了可以直接脱壳的js,使得我们直接调用就可以了,献上原文链接:[原创]Frida-Apk-Unpack 脱壳工具-Android安全-看雪论坛-安全社区|安全招聘|bbs.pediy.com

按照大神的做法:frida -U -f {包名} -l dexDump.js --no-pause,就可以dump出dex了!包名可以从前面所说的apktool中反编译出的manifest中得到。而dex文件会生成在/data/data/应用包名/目录下

接下来我们退出shell,通过adb pull将dex文件拉出,再通过jd-gui-osx查看:

当当,源码全都脱出来了!

三、总结

由此可以看出,其实现在这些所谓加固平台的加固,都只是防君子不防“小人”,甚至他们以加固作为App上架的条件,其真实目的不禁让人浮想联翩。而作为开发者,学习反编译的目的,不在于破解别人的App,剽窃别人的成果,而是通过了解其中的原理,更好的保护自己产品。当然啦,我这个也只是浅尝辄止,如果你对反编译或者逆向感兴趣,推荐一个叫做“看雪”论坛的网站,这也是我这两天发现的一个“宝藏”网站。以上。

#Android反编译#零基础脱掉360加固包的“外衣”相关推荐

  1. Android逆向之脱掉“360加固”的壳

    转载自:https://blog.csdn.net/jiangwei0910410003/article/details/51769447 此处仅作为学习记录一用.至于评论问答环节,请去上面地址翻阅四 ...

  2. Android逆向之drizzleDumper脱掉“360加固”的壳

    转载自:http://www.520monkey.com/archives/1062 此处仅作为学习记录一用.至于评论问答环节,请去上面地址翻阅四哥的原文.上面已附上地址. 一.情景分析 程序猿一般都 ...

  3. Android 反编译初探-基础篇

    前言 本文目标: 工具:介绍反编译需要用到的工具 原理:反编译基本原理 实践:替换一个未混淆&未加固apk的启动页面 工具 1.Android Studio 版本:Android Studio ...

  4. 安卓修改大师是如何脱掉“360加固”的壳的?

    一.前言 现在主流的加固平台有:梆梆加固,爱加密,360加固,腾讯加固,安卓修改大师已经实现了脱掉"爱加密"的壳,目前安卓修改大师也实现了脱掉另外一个平台的壳:360加固,因为有了 ...

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

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

  6. Apk脱壳圣战之---脱掉 360加固 的壳

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 一.前言 ...

  7. Android反编译工具的使用(保姆级教程)

    Android反编译工具的使用(保姆级教程) 网上关于Android反编译的文章很多,但是好多都比较杂,就打算自己写一下,顺便也能加深一下印象. 一.常用反编译文件的介绍 apktool apktoo ...

  8. Android 反编译Apk提取XML文件

    Apktool https://ibotpeaches.github.io/Apktool/install/ 下载地址:Apktool https://bitbucket.org/iBotPeache ...

  9. 【Android 安全】DEX 加密 ( 常用 Android 反编译工具 | apktool | dex2jar | enjarify | jd-gui | jadx )

    文章目录 一.apktool 1.apktool 简介 2.直接解压 3.使用 apktool 反编译 4.使用 apktool 重新打包 二.dex2jar 1.dex2jar 简介 2.dex2j ...

最新文章

  1. Django学习笔记之Django ORM Aggregation聚合详解
  2. 《统一沟通-微软-实战》-6-部署-5-边缘服务器-2012-07-12-5
  3. 长沙理工计算机科学与技术考研,2021年长沙理工大学计算机科学与技术(081200)考研专业目录_硕士研究生考试范围 - 学途吧...
  4. 操作系统学习笔记:文件管理
  5. R语言安装包下载和安装
  6. 神奇的魔法师——教你在手机上如何一键创建相册
  7. 【elasticsearch报错】 blocked by: [SERVICE_UNAVAILABLE/1/state not recovered / initialized];
  8. linux网卡team0,team
  9. 甘肃一名高考生偷偷带手机进考场,拍题并上传到网上出钱求答案……
  10. Simulink如何添加模块到Library Browser
  11. Maya - 后缀为xgen文件导出到虚幻引擎
  12. linux云自动化系统运维19(磁盘阵列raid,lvm管理)
  13. 【计算机算法】递归——打印旋转方阵(正转及逆转)
  14. PTA 1031 查验身份证 (c语言)
  15. BackTrack5(BT5)及BT5支持网卡列表
  16. idt公司官网Alt-R HDR设计工具及模板使用说明
  17. Linux下的 command not found错误(解决方法)
  18. java反编译工具(class转java)
  19. 简单使用taglib 自定义标签
  20. 28岁月薪8K,我竟被程序媛老婆强制报班学IT。转行两年后我工资终于比老婆高了……

热门文章

  1. 【TS】ts中的类:class
  2. Luban 鲁班 图片压缩 MD
  3. 孟晚舟归国后首次亮相:一语道出华为真正价值!唯有努力才能赶上祖国变化...
  4. gns3模式与使用csr1000v
  5. 微信视频号怎么开通与发布;视频号运营常见的几大问题丨国仁网络资讯。
  6. 模仿网易云微信小程序
  7. 数字图像处理---空域滤波增强
  8. 做好领导者和管理者的10条法则
  9. Microsoft Excel for Mac v2021 16.45 – 电子表格数据分析工具
  10. 1038 Recover the Smallest Number (30分)