首页
社区
课程
招聘
[原创]对某旅行APP的检测以及参数计算分析【新手向-准备篇】(一)
发表于: 2023-8-29 14:01 19719

[原创]对某旅行APP的检测以及参数计算分析【新手向-准备篇】(一)

2023-8-29 14:01
19719

第二篇来了 对某旅行APP的检测以及参数计算分析【新手向-Simplesign篇】(二)

本文预计共会写3到4篇文章,总结学习过程中遇到的问题与解决的思路。
涉及到的so主要有两个,一个是libmsaoaidsec.so 另一个是scmain.so
版本为今年过年期间的版本。
本篇主要会涉及到anti frida、socket抓包定位、simpxxxxxx参数的前置准备。
frida 版本: 16.1.0

f.a()

继续深入,到一个接口类,可以用frida来查找实现类,也可以在jadx中搜索:impelements f.b

继续点,最后到这里

刚才我们说过,先看参数内容,发现第一个参数是一个函数,查看

到此,我们基本定位好收发包的大体流程了。下一步对GzipUtil、SecurityUtil等类进行hook就可以把参数拼接过程找到,此app还用了protobuf,不过这些都可以自行解决了。Request也可以用此方式定位的到,包括压缩、解压、异或运算等。抓包内容到此告一段落,主要就是多hook,多分析就能找到。

将此代码放到r0capture的script.js中,hook init_array中以spawn启动.

IDA 7.7
Library : libscmain.so
Frida Stalker
Frida Hook Libart : hook_RegisterNatives.js
Target Parm : simpleSign

本篇文章暂时不对生成过程的细节做分析学习,先了解如何分析,怎么分析。

第一次发分享内容,有一些东西可能有疏漏,欢迎指出。
下一篇分享分析simplesign 75位结果的前32位的生成过程。

function nop(addr) {
  Memory.patchCode(ptr(addr), 4, code => {
      const cw = new Arm64Writer(code, { pc: ptr(addr) });
      cw.putNop();
      cw.putNop();
      cw.putNop();
      cw.putNop();
      cw.flush();
  });
}
function antiPthread_create(){
  let module = Process.findModuleByName("libmsaoaidsec.so")
  nop(module.base.add(0x17FC8))
  nop(module.base.add(0x16EF4))
  nop(module.base.add(0x16A74))
}
function nop(addr) {
  Memory.patchCode(ptr(addr), 4, code => {
      const cw = new Arm64Writer(code, { pc: ptr(addr) });
      cw.putNop();
      cw.putNop();
      cw.putNop();
      cw.putNop();
      cw.flush();
  });
}
function antiPthread_create(){
  let module = Process.findModuleByName("libmsaoaidsec.so")
  nop(module.base.add(0x17FC8))
  nop(module.base.add(0x16EF4))
  nop(module.base.add(0x16A74))
}
if (Process.pointerSize == 4) {
  var linker = Process.findModuleByName("linker");
} else {
  var linker = Process.findModuleByName("linker64");
}
 
var addr_call_function = null;
var addr_g_ld_debug_verbosity = null;
var addr_async_safe_format_log = null;
if (linker) {
  var symbols = linker.enumerateSymbols();
  for (var i = 0; i < symbols.length; i++) {
    var name = symbols[i].name;
    if (name.indexOf("call_function") >= 0) {
      addr_call_function = symbols[i].address;
    }
    else if (name.indexOf("g_ld_debug_verbosity") >= 0) {
      addr_g_ld_debug_verbosity = symbols[i].address;
 
      ptr(addr_g_ld_debug_verbosity).writeInt(2);
 
    } else if (name.indexOf("async_safe_format_log") >= 0 && name.indexOf('va_list') < 0) {
 
      addr_async_safe_format_log = symbols[i].address;
 
    }
 
  }
}
if (addr_async_safe_format_log) {
  Interceptor.attach(addr_async_safe_format_log, {
    onEnter: function (args) {
      this.log_level = args[0];
      this.tag = ptr(args[1]).readCString()
      this.fmt = ptr(args[2]).readCString()
      if (this.fmt.indexOf("c-tor") >= 0 && this.fmt.indexOf('Done') < 0) {
        this.function_type = ptr(args[3]).readCString(), // func_type
          this.so_path = ptr(args[5]).readCString();
        var strs = new Array(); //定义一数组
        strs = this.so_path.split("/"); //字符分割
        this.so_name = strs.pop();
        this.so_base_addr = Module.findBaseAddress(this.so_name);
        if (this.so_name.indexOf("libmsaoaidsec.so") != -1) {
          console.log("start hook!");
          //此处添加nop方法,后续我们对so进行frida trace也要在此处。
        }
      }
    },
    onLeave: function (retval) {
    }
  })
}
if (Process.pointerSize == 4) {
  var linker = Process.findModuleByName("linker");
} else {
  var linker = Process.findModuleByName("linker64");
}
 
var addr_call_function = null;
var addr_g_ld_debug_verbosity = null;
var addr_async_safe_format_log = null;
if (linker) {
  var symbols = linker.enumerateSymbols();
  for (var i = 0; i < symbols.length; i++) {
    var name = symbols[i].name;
    if (name.indexOf("call_function") >= 0) {
      addr_call_function = symbols[i].address;
    }
    else if (name.indexOf("g_ld_debug_verbosity") >= 0) {
      addr_g_ld_debug_verbosity = symbols[i].address;
 
      ptr(addr_g_ld_debug_verbosity).writeInt(2);
 
    } else if (name.indexOf("async_safe_format_log") >= 0 && name.indexOf('va_list') < 0) {
 
      addr_async_safe_format_log = symbols[i].address;
 

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2024-2-25 10:58 被我是红领巾编辑 ,原因:
上传的附件:
收藏
免费 7
支持
分享
最新回复 (16)
雪    币: 199
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
lz方便展开讲讲去花的过程么
2023-8-29 19:16
0
雪    币: 110
活跃值: (1555)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
wx_太阳花田向日葵 lz方便展开讲讲去花的过程么
有时间会针对这个so讲一下
2023-8-30 17:35
1
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
关注,后续没有更新了吗
2023-9-27 11:00
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
请问是测试的什么版本,frida能正常hook吗,frida是什么版本?
2023-9-27 11:02
0
雪    币: 110
活跃值: (1555)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
mb_nqzvgcge 请问是测试的什么版本,frida能正常hook吗,frida是什么版本?
最近在找工作,没来得及更新,后续会按前32位和后32位算法还原更新,frida用的16,目标app是8.55.6
2023-10-11 11:08
0
雪    币: 400
活跃值: (775)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Da_
7
大佬你好,请问bncode字段有看过嘛,什么时候能出篇文章,到时拜读
2023-10-23 16:41
0
雪    币: 1
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
你好,可以付费求教不?
2023-11-1 11:39
0
雪    币: 2328
活跃值: (10364)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
请问一下:龙哥的花指令教程,能给个地址吗,新人不知道龙哥是谁。。。
2023-12-7 11:00
0
雪    币: 400
活跃值: (775)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Da_
10
你瞒我瞒 请问一下:龙哥的花指令教程,能给个地址吗,新人不知道龙哥是谁。。。
https://bbs.kanxue.com/thread-278932.htm 这帖子最上面就是龙哥的星球
2023-12-8 18:41
0
雪    币: 2328
活跃值: (10364)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
Da_ https://bbs.kanxue.com/thread-278932.htm 这帖子最上面就是龙哥的星球
3q
2023-12-11 09:12
0
雪    币: 220
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
12
可以付费咨询,留个联系方式吧
2023-12-22 11:02
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13
是哪个App呢?
2024-2-19 17:52
0
雪    币: 0
活跃值: (452)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
学习了,能否分享app
2024-3-2 19:22
0
雪    币: 80
活跃值: (95)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
可以付费咨询,能留个联系方式吧
2024-3-30 12:13
0
雪    币: 1
活跃值: (276)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
求付费咨询
2024-4-1 10:57
0
雪    币: 28
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
17
 大佬附件还能给个新的下载链接吗
2024-4-1 11:22
0
游客
登录 | 注册 方可回帖
返回
//