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

公众号: 奋飞安全
• 阅读 1441

一、目标

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

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

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

今天的新朋友是 BlackDex

https://github.com/CodingGay/BlackDex

  • 脱壳
  • 延时Hook

二、步骤

BlackDex脱壳

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

分析下

根据上次的分析结果,赶紧去到 com.besxxxhotel.app.whnetcomponent.utils.SignUtil 看看。

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

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

啥也不说了,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);

这次没问题了,

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

三、总结

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

frida被搞的时候记得试试 XcubeBase

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

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

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

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

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
公众号:  奋飞安全
公众号: 奋飞安全
Lv1
奋飞,国家高级信息系统项目管理师,独立安全研究员。 http://91fans.com.cn/
文章
60
粉丝
4
获赞
44