0x00 寻找突破口

打开首页,emm
就一个登录页面,没了
随便写点东西提交看看

天生手欠的我一不小心就多输了一个单引号

WDNMD,除了数字和字母其他都不行?
这叫我怎么测?
刚刚要放弃,就在这时,首页的一个二维码吸引了我
正是安卓端的软件,眼前一亮,仿佛找到了打开新世界的大门

开开心心地把软件下载过来,想反编译找找看有什么可利用的接口

360加固?
fa?!

我以为上帝关上了我的门,还会留个窗给我,结果还是无情地把窗给我锁上了

0x01 zjDroid脱壳

刀不锋利马太瘦,你拿什么工具和我斗。
我们已经知道不论是利用什么方法加固apk
若要让软件要正常运行,就必须让程序最终加载原dex文件,这样的话,如果我能dump出内存中已经加载的dex
就可以无视在加载dex前的一大堆解壳操作
而ZjDroid就可以做到这一点,ZjDroid是一款基于Xposed开发的插件,它可以轻松地hook住所有的activity,并且将软件当前加载的dex写出

在github上fork其源码,进行分析
有进行过Xposed插件开发的大佬们都知道,想让Xposed加载你编写的插件的核心代码
就必须在assest/xposed_init文件内写入你想要加载的核心代码的所在包

进入ReverseXposedModule类

可以看到图中两处红线标记处因为我们的目的是Dump处dex文件,所以先对第二处红线标记处进行分析跟进DexFileInfoCollecter的start方法

通过观察代码可知,第一处红线标记处程序利用反射找到了系统DexFile类的openDexFileNative方法
这个方法和系统加载dex文件有关,这里不深入分析
接着看第二处标记处,程序调用Xposed模块的hookMethod方法hook住了openDexFileNative方法
继续看第三处,在hook完成之后,只要系统调用到了openDexFileNative方法,红线处的代码就会执行
第三处红线处的代码用于获取加载的dex的信息,这里不深入分析
也就是说,只要用户打开某个app,系统调用dex文件的方法就会被执行,那么ZjDroid只需要hook住系统调用dex文件的方法,就可以在软件加载原dex后做任何事情了!
hook加载dex方法的代码已经执行完毕

我们回到ReverseXposedModule类中的第一处红线标记处,进行分析
跟进其调用的initModuleContext方法

查看第一处标记,程序同样的找到了Application类的onCreate方法
开发过app的大佬们都很熟悉这个onCreate方法吧,这是每个软件在启动时默认最先执行的方法
这里ZjDroid同样对系统的Application类的onCreate方法进行了hook,换句话说,只要用户点开任何一个软件,都能被程序hook住
同样的,程序也是利用hookMethod进行的hook操作,hook后的操作在ApplicationOnCreateHook类中,跟进代码

可以看到程序给每个被hook的app注册了一个广播,跟进代码

分析代码可知,当被hook的app接收到含有com.zjdroid.invoke字符的广播时就会进入判断
程序将提取出广播中键为"target"和"cmd"的值
通过图中第二处红线下方的代码可知target就是app的pid号
在获取cmd的值后,cmd的值将被传入CommandHandlerParser类中
跟进代码

观察代码可知cmd的值就是一个json格式的字符串
程序将根据json中的值对应地执行操作
我们需要dump出dex文件,假设我发送的广播进入了ACTION_DUMP_DEXFILE分支
程序将向DumpDexFileCommandHandler类传入指定值,跟进代码

其中红线标记处就是dump dex文件的核心代码了
跟进

查看其中红线处,data成员调用的方法就是dump出内存中dex文件的代码,接着程序将data写出到指定目录
遗憾的是,红线出的代码为native层的代码,而native层的代码作者并没有开源
编译,运行
踩坑注意:这个工具的so文件似乎在5.0以上的安卓系统不起作用,所以我特意刷了一个4.4的安卓再去安装ZjDroid
在手机的Xposed中启用此插件,然后打开需要脱壳的app
adb shell dumpsys activity top查看最顶层活动的PID号
接着发送广播dump出dex

dex被成功dump、

0x02 寻找接口

查看软件的入口
打开指定类
未加壳的dex成功被加载了!
我现在看到的是原dex的代码,而不是壳dex的代码!

可以看到onCreate方法为native层方法,但是接着往下看
getInfo方法中有一个利用post请求调用的登录接口
请求一下看看什么情况

WTF?返回的实体中告诉我无权调用此接口?!
难怪把onCreate方法放在native层里!一定是在onCreate方法中需要进行什么操作才能正常调用此接口
可native层的代码实在是无能为力
本打算就这么放弃了,最后一次在代码中搜索可能存在的接口

其中一处接口让我眼前一亮

WTF?!WTF?!居然可以请求!还没有过滤特殊符号?!
管理员还真是粗心

丢到sqlmap里

收工!

ps:具体细节不做演示,本文仅限圈内技术交流禁止用于非法用途!

360加固一键脱壳工具2020_如何脱壳加固过的Apk并利用其API“走近数据库”相关推荐

  1. 【APP逆向】了解加固基本原理-FDex2_1.1脱壳工具使用

    目录 一.加固后的APK包 1)为什么要加固? 2)加固方式? 3)查看app是否被加固 二.了解加固后的app启动流程 三.FDex2脱壳工具使用 1.打开xposed模块下面的FDex2 2.选择 ...

  2. 基于dalvik模式下的Xposed Hook开发的某加固脱壳工具

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/77966109 这段时间好好的学习了一下Android加固相关的知识和流程也大致把A ...

  3. Frida-Dexdump 脱壳工具下载使用以及相关技术介绍

    Frida-Dexdump 脱壳工具下载使用以及相关技术介绍 文章目录 Frida-Dexdump 脱壳工具下载使用以及相关技术介绍 前言 一.查壳.反编译.APK工具推荐 二.查壳 1.方式1 2. ...

  4. 脱壳工具:dumpDex的使用详解

    一. dumpDex概述 dumpDex: 一个开源的 Android 脱壳插件工具,需要xposed支持.可以用来脱掉当前市场上大部分的壳.(360加固.腾讯乐固.梆梆加固.百度加固均可脱壳) 支持 ...

  5. [原创]基于frida的脱壳工具

    frida-unpack 基于Frida的脱壳工具 0x0 frida环境搭建 frida环境搭建,参考frida官网:frida. 0x2 原理说明 利用frida hook libart.so中的 ...

  6. ZjDroid工具介绍及脱壳详细示例

    前提条件: 1.Root手机一部 2.需要通过Xposed installer(http://dl.xposed.info/latest.apk)安装Xposed Framework; 一.ZjDro ...

  7. 逆向工具之脱壳神器反射大师(附脱壳环境搭建、脱壳实战)

      相信点击进入这篇博客的小伙伴都知道并且搞过App逆向,不过有时候会遇到各种加壳的App,不让你反编译.但是道高一尺,魔高一丈,有正向加密,就有逆向解密.此篇博客博主带大家搭建脱壳环境,并且手动脱一 ...

  8. android 脱壳工具

    现在的apk,很多都加了壳,例如360加壳.邦邦加壳 现在分享一款工具,用于脱壳. 下载地址为: http://download.csdn.net/download/feixiangsmile/101 ...

  9. 脱壳工具:Youpk的使用详解

    一. Youpk概述 Youpk基于ART的主动调用的脱壳机,主要针对dex整体加固和各式各样的dex抽取加固. 目前 Youpk 只支持 pixel 1代.所以必须需要 pixel 1代手机,而且需 ...

最新文章

  1. 将项目通过git上传到bitbucket仓库 (附图)
  2. android搭建opencv开发环境,Android Studio搭建opencv开发环境
  3. Android一个Activity多个Handler时,Message消息是否会混乱?
  4. CentOS5.4安装libpng提示--configure: error: ZLib not installed
  5. 设计模式(7)——适配器模式
  6. WIN7打开远程桌面连接设置
  7. 动词不定式 to do 和 动名词 V-ing 的区别(infinitive vs gerund)
  8. L1-061 新胖子公式 (10 分)
  9. 用Python自制随机点名程序,压迫感来了~
  10. 帝国插件自动采集文章主动推送给搜索引擎自动安装目录
  11. 【工具】Hosts文件详解
  12. 自学php多久可以工作_php自学要多久,学php难吗,多久能学会?
  13. 全名k歌自定义图文链接(卡片)
  14. 技术方向决策的几点思考
  15. edxp已激活模块_edxposed框架模块
  16. java基于springboot的股票交易模拟系统
  17. 身体知道酸奶富含LGG益生菌,被称为肠道内的清道夫?
  18. 微信小程序天气查询功能--使用高德开放平台接口
  19. 黄冈师范学院教育管理的论文选题
  20. JS面试中常见的算法题

热门文章

  1. linux修改隐藏文件生效,在Linux传统文件系统下隐藏属性的修改-linux修改文件名...
  2. php 元素插入数组指定位置,数组任意位置插入元素,删除特定元素的实例
  3. centos mysql 启动_MYSQL在centos上首次启动
  4. Party at Hali-Bula UVA - 1220(树形dp)
  5. redis的那种目录结构能新建么_Serverless 解惑——函数计算如何访问 Redis 数据库...
  6. 数学--数论--数论定理--欧拉定理
  7. windows下搭建hadoop+eclipse开发环境
  8. [机器学习] --- 参数优化与模型选择
  9. Leetcode刷题 33.搜索旋转排序数组
  10. 外设位宽为8、16、32时,CPU与外设之间地址线的连接方法