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

一、目标

之前我们介绍过 某酒店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 看看。

hotel.png

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

啥也不说了,hook它。

1var signCls = Java.use("com.besxxxhotel.app.whnetcomponent.utils.SignUtil"); 2console.log(TAG + "signCls: " + signCls); 3signCls.getSignString.implementation = function(a1,a2,a3,a4,a5,a6){ 4 var result = this.getSignString(a1,a2,a3,a4,a5,a6); 5 console.log(TAG + "a1 = " + a1); 6 console.log(TAG + "a2 = " + a2); 7 console.log(TAG + "a3 = " + a3); 8 console.log(TAG + "a4 = " + a4); 9 console.log(TAG + "a5 = " + a5); 10 console.log(TAG + "a6 = " + a5); 11 console.log(TAG + "sign rc = " + result); 12 13 return result; 14} 15 16signCls.getAppCode.implementation = function(a1,a2,a3,a4){ 17 var result = this.getAppCode(a1,a2,a3,a4); 18 console.log(TAG + "a1 = " + a1); 19 console.log(TAG + "a2 = " + a2); 20 console.log(TAG + "a3 = " + a3); 21 console.log(TAG + "a4 = " + a4); 22 console.log(TAG + "AppCode rc = " + result); 23 24 return result; 25 26} 27 28signCls.decodeASCII.implementation = function(a){ 29 var result = this.decodeASCII(a); 30 console.log(TAG + a.entrySet().toArray()); 31 console.log(TAG + "decodeASCII: " +result); 32 return result; 33} 34

挂上心爱的frida跑一下。

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

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

再试试老版本,一样crash

延时Hook

深呼吸,冷静一下。

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

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

1function main() { 2 Java.perform(function () { 3 var threadef = Java.use('java.lang.Thread'); 4 var threadinstance = threadef.$new(); 5 6 // ...... xxxHook code ...... 7 }); 8} 9 10setTimeout(main, 1000); 11// setImmediate(main);

这次没问题了,

rc.png

三、总结

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

frida被搞的时候记得试试 XcubeBase

ffshow.jpeg

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

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

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

点赞
收藏

评论区

加载中...

相关推荐

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

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )