首页
社区
课程
招聘
[原创]绕过爱奇艺新版libmsaoaidsec.so Frida检测
2024-3-3 22:20 16095

[原创]绕过爱奇艺新版libmsaoaidsec.so Frida检测

2024-3-3 22:20
16095
收藏
点赞23
打赏
分享
最新回复 (48)
雪    币: 122
活跃值: (1400)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
koflfy 1 2024-3-8 10:28
26
0
linkin5epk 我们看这一行[pid 15576] [000000751926c008] exit_group(0 ,显示15576线程是在0x751926c008地址处调用exit_group退出的,通过proc/ ...
他的意思是exit退出这个函数并不在libc.so的地址范围内,说明这个exit的代码很可能是动态申请的,所以才会关注后面的mmap动态申请内存的函数,而这个mmap申请的返回值基址是0x751926c000,正好0x751926c008在这里面,说明exit退出这个函数代码就是在这段动态申请的地址里。
雪    币: 577
活跃值: (363)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yyy123 2024-3-8 12:57
27
0
linkin5epk 我们看这一行[pid 15576] [000000751926c008] exit_group(0 ,显示15576线程是在0x751926c008地址处调用exit_group退出的,通过proc/ ...
动态释放代码:通过mmap申请内存,把exit_group系统调用的汇编指令写到这段内存中,然后执行。此时如果用strace查看exit_group系统调用的地址就在前面mmap申请内存的空间范围里。
雪    币: 577
活跃值: (363)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yyy123 2024-3-8 12:59
28
0
jueqingqiai Log 如何打印的 id 和 ThreadId?
  static log(msg: string) {
      let pid = Process.id
      let tid = Process.getCurrentThreadId()
      msg = pid + '-' + tid + ' ' + msg
      console.log(`${msg}`)
    }
  }
雪    币: 30
活跃值: (360)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
linkin5epk 2024-3-8 14:43
29
0
yyy123 动态释放代码:通过mmap申请内存,把exit_group系统调用的汇编指令写到这段内存中,然后执行。此时如果用strace查看exit_group系统调用的地址就在前面mmap申请内存的空间范围里。

大佬太强啦懂了懂了...我一开始理解成动态释放内存了....现在我的理解是系统调用的汇编代码是动态释放执行的吧...所以安卓系统调用只能通过libc库实现?或者直接执行汇编?exit_group的执行地址不在libc.so中,所以是动态释放的汇编代码来执行?(但是我ida查看libc.so也没有exit_group的导出函数?这是为什么呢?)

最后于 2024-3-8 14:57 被linkin5epk编辑 ,原因:
雪    币: 30
活跃值: (360)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
linkin5epk 2024-3-8 14:56
30
0
koflfy 他的意思是exit退出这个函数并不在libc.so的地址范围内,说明这个exit的代码很可能是动态申请的,所以才会关注后面的mmap动态申请内存的函数,而这个mmap申请的返回值基址是0x751926 ...
嗯嗯嗯,思路转过来了....我的我的,太辣了我
雪    币: 275
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
Damn7Kx 2024-3-8 15:53
31
0
我是把这个文件删掉
雪    币: 146
活跃值: (1200)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
曹无咎 1 2024-3-14 11:12
32
0
牛逼,学习了
雪    币: 268
活跃值: (411)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
AunCss 2024-3-14 14:06
33
0
学习了,新的思路
雪    币: 11
活跃值: (981)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
artake 2024-3-14 16:00
34
0
请教一下:
[pid 15576] [000000751926c008] exit_group(0 <unfinished ...>  这行前面还有一个exit(0),怎么忽略了呢?感觉这个exit(0)也很重要啊,exit_group是svc退出吗?strace能够监控svc退出吗?
雪    币: 130
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_xsfdfkko 2024-3-14 23:19
35
0

用的确实是arm64的包,15.2.5版本,

目前百度手机助手还是没有更新,爱奇艺 百度手机助手 15.2.5版本,ARM64位的

< hook mmap打印一下调用栈 if(parseInt(length, 16) == 28)  >

为啥我这里这个判断一直进不去呀?进去之后一直获取不到 前线程的回溯 和符号(函数名、类名),并且程序视乎被暂停了

最后于 2024-3-15 01:36 被mb_xsfdfkko编辑 ,原因:
雪    币: 577
活跃值: (363)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yyy123 2024-3-15 14:51
36
0
Damn7Kx 我是把这个文件删掉[em_86]
牛逼,这个好使
雪    币: 30
活跃值: (360)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
linkin5epk 2024-3-15 19:20
37
0
mb_xsfdfkko 用的确实是arm64的包,15.2.5版本,目前百度手机助手还是没有更新,爱奇艺 百度手机助手 15.2.5版本,ARM64位的&lt;&nbsp;hook&nbsp;mmap ...
确实,我复现的时候也是进不去
雪    币: 220
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_gtynwihg 2024-3-23 14:19
38
0
手机怎么装 readelf
雪    币: 831
活跃值: (112)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
gr4v8l. 2024-4-4 10:06
39
1
不知道是什么原因,复现失败了,strace中可以观察到同样的mmap 28参数调用,但frida却无法hook到该条28参数的mmap,有哪位大佬能推测下可能是什么原因导致的嘛?
雪    币: 0
活跃值: (452)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Analysts1981 2024-4-5 19:41
40
0
????????????????????????????
雪    币: 189
活跃值: (1125)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
苦瓜tim 2024-4-8 23:41
41
0
大佬,附件的strace如何使用啊,谢谢。
雪    币: 29
活跃值: (561)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
aizhiqun 2024-4-10 15:21
42
0
牛逼,感谢大佬分享,我好好学习学习
雪    币: 102
活跃值: (356)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
青蓝梦 2024-4-11 14:58
43
0
strace 可以跟踪到svc么大佬
雪    币: 47
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_mzboxhri 2024-4-11 16:25
44
0
666
雪    币: 1
活跃值: (77)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ymswx 2024-4-15 13:08
45
0
好像这个方案被公布后,人家修改了检测逻辑,后边的人又要等新的方案了。函数换成了munmap,应该是版本更新了
雪    币: 3182
活跃值: (2307)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
WangONC 2 2024-4-15 15:32
46
0
linkin5epk 我们看这一行[pid 15576] [000000751926c008] exit_group(0 ,显示15576线程是在0x751926c008地址处调用exit_group退出的,通过proc/ ...
代码不是静态的,是通过解密或者什么方式,动态下发释放到内存中,然后执行,你看一下那块代码就知道了,exit__group不是libc调的

下面那个问题,mmap申请了一块内存,exit_group在申请等得那块内存附近执行,说明是先申请内存,后执行代码,把代码释放到了申请的内存中然后执行的
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
onwyc123 1天前
47
0
strace -e trace=process,memory -i -f -p 25947
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
onwyc123 1天前
48
0
strace -e trace=process,memory -i -f -p 25947
请问这个 pid是从哪来的呢,这个搜索的是什么应用的pid呢?
雪    币: 232
活跃值: (1502)
能力值: ( LV5,RANK:73 )
在线值:
发帖
回帖
粉丝
falconnnn 1天前
49
0
学习了,谢谢分享
游客
登录 | 注册 方可回帖
返回