ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Xposed+FDex2 app脱壳 (黑猫投诉app脱壳)

2022-07-27 10:34:07  阅读:300  来源: 互联网

标签:脱壳 rs app Xposed sign ts js sha256


Xposed 安装与 FDex2 安装

Xposed框架是一款可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,通过替换/system/bin/app_process程序控制zygote进程,使得app_process在启动过程中会加载XposedBridge.jar这个jar包,从而完成对Zygote进程及其创建的Dalvik虚拟机的劫持。
基于Xposed框架可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。此外,Xposed框架中的每一个库还可以单独下载使用,如Per APP Setting(为每个应用设置单独的dpi或修改权限)、Cydia、XPrivacy(防止隐私泄露)、BootManager(开启自启动程序管理应用)对原生Launcher替换图标等应用或功能均基于此框架。

现在市场中加固apk的方式一般有两种:
第一种是对源apk整体做一个加固,放到指定位置,运行的时候再解密动态加载。
第二种是对so进行加固,在so加载内存的时候进行解密释放。
主要针对第一种加固方式进行dex文件的获取。

  • 两个链接任选一个都可

安装详情参考链接-1
安装详情参考链接-2

脱壳

开启 FDex2 软件检测添加到黑猫投诉APP

点击黑猫投诉

在 /data/user/0/com.sin.heimao 的文件夹下有脱出的 dex 文件,之后反编译dex文件即可

第三种解包方式

脱壳之后在 /data/app/sina.heimao-1/ 的文件下有 base.apk 的黑猫投诉apk包,将base.apk的包分享到本地重新命名为 base.zip 的zip包,解压之后就是app的的源码文件

抓包数据分析

  • 使用Fiddler抓取模拟器app包, 开启fiddler,配置fidder捕获HTTPS会话和端口连接设置,点击HTTPS,勾选Decrypt HTTPS traffic和Ignore server certificate(unsafe),https设置及connections设置,勾选选择项
    参考链接(按照这个流程配置)

  • 夜神浏览器网络配置之后开启监听才会被fiddler监听抓到包,注意:fidder配置完需要重启,需要在外面的windows查到本机IP




  • 开启fiddler,在模拟浏览器中打开黑猫投诉app,开始抓包


分析源码

用Idea软件打开解压的包文件,在 \assets\dist\views\tousu\tousuDetail.js 路径下找到tousuDetail.js文件,全局查找 signture

根据函数 getUrlParam() 返回的 urlparam 值,查找signature 相关的函数,复原js函数

  • app_demo.js 相关参数函数复原
function randomWord(randomFlag, min, max) {
   var str = "",
       range = min,
       arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
   // 随机产生
   if (randomFlag) {
      range = Math.round(Math.random() * (max - min)) + min;
   }
   for (var i = 0; i < range; i++) {
      var pos = Math.round(Math.random() * (arr.length - 1));
      str += arr[pos];
   }
   return str;
}

function getParam() {
   var ts = new Date().getTime();
   var rs = randomWord(false, 16);
   var token = 'P0tk894Tcxi4t%S$';
   sign = [ts, rs, token].sort().join('');
   return {'ts': ts, 'rs': rs, 'sign': sign};
}

  • get_app_sign.py 调用js文件
import execjs
import hashlib


def get_sha256():
    with open('app_demo.js', 'r', encoding='utf-8') as f:
        js_text = f.read()
    ctx = execjs.compile(js_text)
    ctx_dict = ctx.call('getParam')
    sign_str = ctx_dict['sign']
    rs = ctx_dict['rs']
    ts = ctx_dict['ts']
    sha256 = hashlib.sha256()
    sha256.update(sign_str.encode('utf-8'))
    signature = sha256.hexdigest()
    return {'ts': ts, 'rs': rs, 'signature': signature}


"""
    使用sha256加密算法,返回str加密后的字符串
"""
# s = get_sha256()
# print(s)

标签:脱壳,rs,app,Xposed,sign,ts,js,sha256
来源: https://www.cnblogs.com/wyh0923/p/16523862.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有