某酒店App sign、appcode签名解析(二) 脱壳分析

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 某酒店App sign、appcode签名解析(二) 脱壳分析

一、目标


之前我们介绍过 某酒店App sign、appcode签名解析(一) 带壳分析 r0tracer


带壳分析也是迫不得已,谁不希望零距离接触呀。


App升级了 5.3.3,我们的工具也升级了。


今天的新朋友是 BlackDex


github.com/CodingGay/B…

  • 脱壳
  • 延时Hook


二、步骤

BlackDex脱壳


  • 安装BlackDex
  • 在显示的进程列表中选择 com.platexx.boxxoota
  • 是的,壳已经脱好了,脱壳后的文件在 /sdcard/Android/data/top.niunaijun.blackdexa32/dump/com.platexx.boxxoota


分析下


根据上次的分析结果,赶紧去到

com.besxxxhotel.app.whnetcomponent.utils.SignUtil 看看。888.png

热泪盈眶呀,看到源代码的感觉真好。


啥也不说了,hook它。

var signCls = Java.use("com.besxxxhotel.app.whnetcomponent.utils.SignUtil");
console.log(TAG + "signCls: " + signCls);
signCls.getSignString.implementation = function(a1,a2,a3,a4,a5,a6){
        var result = this.getSignString(a1,a2,a3,a4,a5,a6);
        console.log(TAG + "a1 = " + a1);
        console.log(TAG + "a2 = " + a2);
        console.log(TAG + "a3 = " + a3);
        console.log(TAG + "a4 = " + a4);
        console.log(TAG + "a5 = " + a5);
        console.log(TAG + "a6 = " + a5);
        console.log(TAG + "sign rc = " + result);
        return result;
}
signCls.getAppCode.implementation = function(a1,a2,a3,a4){
        var result = this.getAppCode(a1,a2,a3,a4);
        console.log(TAG + "a1 = " + a1);
        console.log(TAG + "a2 = " + a2);
        console.log(TAG + "a3 = " + a3);
        console.log(TAG + "a4 = " + a4);
        console.log(TAG + "AppCode rc = " + result);
        return result;
}
signCls.decodeASCII.implementation = function(a){
        var result = this.decodeASCII(a);
        console.log(TAG + a.entrySet().toArray());
        console.log(TAG + "decodeASCII: " +result);
        return result;
}


挂上心爱的frida跑一下。

[Redmi 6A::platexx.boxxoota]-> Process crashed: Illegal instruction


怎么会挂呢,没道理呀,我们是好朋友呀。上一个版本都还愉快的玩耍过?


再试试老版本,一样crash


延时Hook


深呼吸,冷静一下。


. 老版本也Crash,说明不是新版本升级了防护策略 . spawn模式下会Crash,attach模式下正常


那就好办了,spawn模式下我们可以加个延时试试。

function main() { 
    Java.perform(function () {
        var threadef = Java.use('java.lang.Thread');
        var threadinstance = threadef.$new();
      // ...... xxxHook code ......
    });   
}         
setTimeout(main, 1000);
// setImmediate(main);


这次没问题了,


999.png


三、总结


分析脱壳软件的时候,可以考虑hook 壳代码里面的 attachBaseContext getApplicationContext 函数来找到hook真实代码的时机。


frida被搞的时候记得试试 XcubeBase000.png


尼采说过,杀不死你的东西会让你变得更加强大,但他没说清楚的是,那东西差点杀死你。


TIP: 本文的目的只有一个就是学习更多的逆向技巧和思路,如果有人利用本文技术去进行非法商业获取利益带来的法律责任都是操作者自己承担,和本文以及作者没关系,本文涉及到的代码项目可以去 奋飞的朋友们 知识星球自取,欢迎加入知识星球一起学习探讨技术。有问题可以加我wx: fenfei331 讨论下。


关注微信公众号: 奋飞安全,最新技术干货实时推送


相关文章
|
2月前
|
机器学习/深度学习 数据采集 存储
时间序列预测新突破:深入解析循环神经网络(RNN)在金融数据分析中的应用
【10月更文挑战第7天】时间序列预测是数据科学领域的一个重要课题,特别是在金融行业中。准确的时间序列预测能够帮助投资者做出更明智的决策,比如股票价格预测、汇率变动预测等。近年来,随着深度学习技术的发展,尤其是循环神经网络(Recurrent Neural Networks, RNNs)及其变体如长短期记忆网络(LSTM)和门控循环单元(GRU),在处理时间序列数据方面展现出了巨大的潜力。本文将探讨RNN的基本概念,并通过具体的代码示例展示如何使用这些模型来进行金融数据分析。
309 2
|
27天前
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
|
2月前
|
存储 SQL 分布式计算
湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
【10月更文挑战第7天】湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
125 1
|
3月前
|
移动开发 Android开发 数据安全/隐私保护
移动应用与系统的技术演进:从开发到操作系统的全景解析随着智能手机和平板电脑的普及,移动应用(App)已成为人们日常生活中不可或缺的一部分。无论是社交、娱乐、购物还是办公,移动应用都扮演着重要的角色。而支撑这些应用运行的,正是功能强大且复杂的移动操作系统。本文将深入探讨移动应用的开发过程及其背后的操作系统机制,揭示这一领域的技术演进。
本文旨在提供关于移动应用与系统技术的全面概述,涵盖移动应用的开发生命周期、主要移动操作系统的特点以及它们之间的竞争关系。我们将探讨如何高效地开发移动应用,并分析iOS和Android两大主流操作系统的技术优势与局限。同时,本文还将讨论跨平台解决方案的兴起及其对移动开发领域的影响。通过这篇技术性文章,读者将获得对移动应用开发及操作系统深层理解的钥匙。
|
3月前
|
存储 缓存 自然语言处理
深度解析ElasticSearch:构建高效搜索与分析的基石
【9月更文挑战第8天】在数据爆炸的时代,如何快速、准确地从海量数据中检索出有价值的信息成为了企业面临的重要挑战。ElasticSearch,作为一款基于Lucene的开源分布式搜索和分析引擎,凭借其强大的实时搜索、分析和扩展能力,成为了众多企业的首选。本文将深入解析ElasticSearch的核心原理、架构设计及优化实践,帮助读者全面理解这一强大的工具。
230 7
|
2月前
|
安全 网络安全 Android开发
深度解析:利用Universal Links与Android App Links实现无缝网页至应用跳转的安全考量
【10月更文挑战第2天】在移动互联网时代,用户经常需要从网页无缝跳转到移动应用中。这种跳转不仅需要提供流畅的用户体验,还要确保安全性。本文将深入探讨如何利用Universal Links(仅限于iOS)和Android App Links技术实现这一目标,并分析其安全性。
306 0
|
3月前
|
安全
【Azure App Service】App service无法使用的情况分析
App Service集成子网后,如果子网网段中的剩余IP地址非常少的情况下,会在App Service实例升级时( 先加入新实例,然后在移除老实例 )。新加入的实例不能被分配到正确的内网IP地址,无法成功的访问内网资源。 解决方法就是为App Service增加子网地址, 最少需要/26 子网网段地址。
|
3月前
|
监控 安全 网络安全
恶意软件分析:解析与实践指南
【8月更文挑战第31天】
209 0
|
4月前
|
开发框架 缓存 .NET
【App Service】在Azure App Service中分析.NET应用程序的性能的好帮手(Review Stack Traces)
【App Service】在Azure App Service中分析.NET应用程序的性能的好帮手(Review Stack Traces)
|
23天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
60 2

推荐镜像

更多