首页
社区
课程
招聘
[原创]iOS LLDB中反反调试分析与实现
发表于: 2019-8-13 20:03 19979

[原创]iOS LLDB中反反调试分析与实现

2019-8-13 20:03
19979

关于反调试和反反调试,已经有很多人分析过了,也有很多解决方案。但是在LLDB中做反反调试还没人做过,这也是我一直想解决的一个方案,毕竟本身就是为了调试,那么在LLDB直接输入一行命令就能反反调试应该相对酸爽。本文将介绍一种基于内存单指令patch的方式进行反反调试的方案,大概意思就是通过直接修改代码段的指令来绕过反调试机制。

这里庆哥写了一遍文章分析了 关于反调试&反反调试那些事

这里简单归纳一下,有如下几种:

这里实际上就大概三种,其他都是基于ptrace的变种。ptrace这个函数是linux就提供的一个接口,常常用作linux系的反调试,本质就是通过26号系统调用来完成的,目前大多反调试都利用该方案。

后面看到庆哥同样提供了一个反反调试的LLDB脚本,不过看了下和我的思路还是不一样的。(

正如文章里面写到通过lldb下断点,然后修改参数,或者直接返回也可以达到反反调试的效果。由于要不断去检查执行状态等,或者程序有定时器定时检测,这个脚本影响性能及变得很卡影响调试体验。不过还是膜庆哥的方案,学习了。

说一下大概思路:

直接将首调指令修改为ret指令

刚开始以为就这样简单就完了,结果实际写代码的时候才发现过程远比想象中复杂。

由于iOS不允许直接将代码段map为写权限,这里调用mach_vm_protectmprotect都会异常。但是类似frida、substitute以及hookzz都能进行指令hook。这样说来,肯定是可以修改代码段的。看了下substitute以及frida中关于这块的实现,才发现可以用一种remap的方式修改代码段。

大致的流程如下:

不过当我写代码测试的时候发现,remap以后整个页数据都变成了0。实在不清楚原因,向Zz求助,Zz直接扔了我他实现这块的代码。我看了以后收益匪浅,只怪之前没分析hookzz的具体实现。后面才知道由于我的设备是iOS12,Zz意思是codesign的问题,hookZz也没支持。于是换了一台iOS9的设备,果然就可以了,向Zz低头。

期间还由于我手残忘记调用mprotect把new改为rx。导致直接执行异常,用memory region查看地址才知道页保护属性为rw

相关代码如下:

1、map new page for patch

2、start patch

3、set new page back to r-x

4、remap the target page

5、clear cache

完整的代码在xia0LLDB里面已经集成:67aK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1j5@1j5$3R3I4x3X3c8&6i4K6u0r3P5r3W2S2x3p5I4x3c8p5t1`.

这里以爱奇艺为例子分析,爱奇艺在main函数里面动态调用了ptrace函数进行反调试。

后台启动方式启动爱奇艺

LLDB挂上以后在main函数下断点以后直接执行debugme命令

下面查看对比下patch前后指令ptrace首指令的变化

Patch之前

Patch之后

可以发现首地址已经变成了ret指令。

执行continue命令,发现爱奇艺已经能够正常调试。

这里只是简单的绕过了ptrace方式的反调试,针对直接用汇编写的反调试我的做法是静态内存搜索匹配svc位置,发现是调用26号系统调用则利用内存patch为nop。或者写一个简单的hook代码,hook所有的svc地址,判断寄存器的值然后进行hook即可,这样就能绕过这些反调试机制,再次向Zz和庆哥低头。

e6aK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4y4@1i4K6u0W2k6$3W2@1K9s2g2T1i4K6u0W2j5$3!0E0i4K6u0r3M7r3W2S2L8$3N6W2M7W2)9J5c8U0c8T1j5e0R3K6k6U0k6S2z5e0f1@1j5X3y4S2x3e0p5K6y4e0l9#2

a5dK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6U0L8$3#2W2P5q4)9J5c8Y4y4#2j5Y4y4@1K9i4c8#2N6r3g2Q4x3V1k6T1L8r3!0T1i4K6u0r3L8h3q4K6N6r3g2J5i4K6u0r3L8r3W2T1i4K6u0r3k6r3q4J5N6$3W2F1i4K6u0r3k6i4S2W2j5$3#2W2L8g2)9J5k6h3x3`.

2ceK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2U0L8$3c8W2M7X3y4@1L8#2)9J5k6h3y4G2L8g2)9J5c8X3q4Q4x3V1j5$3x3K6f1H3y4#2)9J5k6h3S2@1L8h3H3`.

e2eK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6B7L8i4m8W2N6%4y4Q4x3V1k6t1L8$3!0C8h3Y4A6Q4x3V1k6T1L8r3!0T1i4K6u0r3k6r3g2$3i4K6u0r3M7%4u0U0P5s2S2Q4x3V1k6g2M7$3g2J5e0h3!0V1k6g2)9J5c8V1g2^5k6h3y4y4k6h3#2G2M7Y4W2Q4x3V1k6U0L8$3c8W2i4K6u0V1M7r3q4@1j5$3S2Q4x3X3c8@1L8$3!0D9i4K6u0V1k6r3q4J5N6$3W2F1i4K6u0W2j5$3y4Q4x3U0y4x3x3U0j5`.

f22K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6Y4k6r3u0A6L8X3W2@1i4K6u0r3M7X3g2S2k6r3#2W2L8g2)9J5c8X3u0D9L8$3u0Q4x3V1k6E0j5i4y4@1k6i4u0Q4x3V1k6J5k6h3q4V1L8h3g2E0i4K6u0r3L8h3q4A6L8W2)9J5k6h3x3`.

fe5K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6X3M7X3W2V1j5g2)9J5c8X3k6J5K9h3c8S2i4K6u0V1k6%4g2E0i4K6u0r3j5X3I4G2j5W2)9J5c8X3#2S2M7%4c8W2M7W2)9J5c8X3N6#2L8g2)9J5c8X3u0S2j5$3E0W2L8X3c8Q4x3X3c8V1j5i4u0%4K9h3&6Q4x3V1k6E0j5h3y4Z5k6i4S2U0i4K6u0W2K9l9`.`.

ceeK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3&6W2N6$3!0K6P5r3u0G2L8$3E0Q4x3X3g2U0L8$3#2Q4x3V1k6K6M7X3y4Q4x3X3g2B7L8q4)9K6c8Y4c8J5k6h3g2Q4x3@1c8^5L8Y4g2Q4x3U0k6S2L8i4m8Q4x3@1u0X3K9h3I4W2i4K6y4p5i4K6u0r3L8r3W2T1M7%4W2K6j5$3q4D9L8q4)9J5c8X3#2S2j5$3S2Q4x3V1k6E0j5h3y4Z5i4K6g2X3N6X3#2Q4x3X3g2U0

cc2K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6p5j5f1E0F1e0$3u0Q4x3V1k6E0k6h3#2K6j5$3q4F1i4K6u0r3j5X3I4G2j5W2)9J5c8X3#2S2M7%4c8W2M7W2)9J5c8X3#2S2K9h3&6Q4x3X3g2E0L8b7`.`.

921K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3W2G2M7%4u0W2i4K6u0W2j5$3!0E0i4K6u0r3N6q4)9J5c8Y4c8G2M7r3W2U0i4K6u0r3z5o6p5%4z5b7`.`.

 
 
 
 
 

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

最后于 2019-8-13 20:04 被xia0编辑 ,原因:
收藏
免费 3
支持
分享
最新回复 (24)
雪    币: 914
活跃值: (3554)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
2
“于是换了一台iOS9的设备”
向土豪低头
2019-8-13 20:11
0
雪    币: 1577
活跃值: (779)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3

非要我放截图吗

最后于 2019-8-14 13:23 被xia0编辑 ,原因:
2019-8-13 20:16
0
雪    币: 977
活跃值: (435)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
4
xia0 非要我放截图吗
修改没有用 我已经看到了 大佬之间的互相伤害
最后于 2019-8-14 14:01 被上海刘一刀编辑 ,原因:
2019-8-14 14:01
0
雪    币: 614
活跃值: (888)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
2019-8-14 14:07
0
雪    币: 48
活跃值: (4044)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
看大佬撕逼
2019-8-14 14:38
0
雪    币: 1577
活跃值: (779)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
7
上海刘一刀 xia0 非要我放截图吗 修改没有用 我已经看到了 大佬之间的互相伤害
完了,暴露了葫芦娃上海第一豪的身份
2019-8-14 15:21
0
雪    币: 2512
活跃值: (672)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
8
task_get_exception_ports,这个方法不能用的,会误报。
2019-8-14 15:41
0
雪    币: 1577
活跃值: (779)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
9
暗夜盗魔 task_get_exception_ports,这个方法不能用的,会误报。
嗯,一般也没怎么用。iOS大多还是用ptrace
2019-8-14 16:44
0
雪    币: 138
活跃值: (550)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
Zz 有一套反反调试的代码, 基于hookzz, xia0LLDB 直接集成是不是更省事些?
当然 这从研究的角度来说 还是自己撸一遍原理来的透彻些,  给xiao0 点个赞
2019-8-15 09:18
0
雪    币: 1577
活跃值: (779)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
11
Nermor Zz 有一套反反调试的代码, 基于hookzz, xia0LLDB 直接集成是不是更省事些? 当然 这从研究的角度来说 还是自己撸一遍原理来的透彻些, 给xiao0 点个赞[em_63]
这里并没有重复造轮子,原因在于LLDB中的代码限制很大,不可能集成一个hookzz这样的框架。虽然hookzz已经算轻量级hook框架了,但在这里也显得太重了,而且也没必要。这里并不需要一个通用的hook框架。后面我对于SVC指令hook的思路也仅仅是判断寄存器简单操作,不然还会涉及污染寄存器等考虑因素。所以基于以上原因,我就自己实现了一遍,应该算最轻的一种hook方案。
最后于 2019-8-15 10:34 被xia0编辑 ,原因:
2019-8-15 10:34
0
雪    币: 138
活跃值: (550)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
xia0 Nermor Zz 有一套反反调试的代码, 基于hookzz, xia0LLDB 直接集成是不是更省事些? 当然 这从研究的角度来说 还是自己撸一遍原理来的 ...
原来如此, 感谢大佬指点。
2019-8-15 11:28
0
雪    币: 145
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
Kill antiDebug by xia0:error: Execution was interrupted, reason: EXC_BAD_INSTRUCTION (code=1, subcode=0x0).
The process has been returned to the state before expression evaluation.
请问大佬这样的情况该如何排除呢?
2019-8-16 01:40
0
雪    币: 1577
活跃值: (779)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
14
TinHsieh Kill antiDebug by xia0:error: Execution was interrupted, reason: EXC_BAD_INSTRUCTION (code=1, subcod ...
设备和系统版本是多少
2019-8-16 12:13
0
雪    币: 145
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
MacOS: 10.14.6
iphone iOS: 12.4 
Xcode: 10.3
2019-9-14 00:01
0
雪    币: 1577
活跃值: (779)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
16
TinHsieh MacOS: 10.14.6 iphone iOS: 12.4 Xcode: 10.3
iOS12之前有问题(文章也提到了)最新的已经修复了,请用最新的debugme试下
2019-9-14 18:37
0
雪    币: 145
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
xia0 iOS12之前有问题(文章也提到了)最新的已经修复了,请用最新的debugme试下
(lldb) debugme
[*] start patch ptrace funtion to bypass antiDebug
[+] success ptrace funtion to bypass antiDebug
[*] start patch svc ins to bypass antiDebug
[-] failed to get text segment:["error: warning: got name from symbols: header\nerror: Can't run the expression locally: Interpreter doesn't handle one of the expression's opcodes\n"]
[x] happy debugging~ kill antiDebug by xia0@2019
2019-9-18 00:20
0
雪    币: 145
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
TinHsieh (lldb) debugme [*] start patch ptrace funtion to bypass antiDebug [+] success ptrace funtion to by ...
[*] start patch ptrace funtion to bypass antiDebug
[+] success ptrace funtion to bypass antiDebug
[*] start patch svc ins to bypass antiDebug
[-] failed to get text segment:["error: use of undeclared identifier '_dyld_get_image_header'\nerror: use of undeclared identifier '_dyld_get_image_vmaddr_slide'\n"]
[x] happy debugging~ kill antiDebug by xia0@2019
2019-9-18 00:23
0
雪    币: 145
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
TinHsieh (lldb) debugme [*] start patch ptrace funtion to bypass antiDebug [+] success ptrace funtion to by ...
[*] start patch ptrace funtion to bypass antiDebug
[+] success ptrace funtion to bypass antiDebug
[*] start patch svc ins to bypass antiDebug
Error [IRForTarget]: Rewriting an Objective-C constant string requires CFStringCreateWithBytes
[-] failed to get text segment:['error: The expression could not be prepared to run in the target\n']
[x] happy debugging~ kill antiDebug by xia0@2019

2019-9-18 00:24
0
雪    币: 145
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
TinHsieh (lldb) debugme [*] start patch ptrace funtion to bypass antiDebug [+] success ptrace funtion to by ...
会出现各种不一样的问题,都是同一个app
2019-9-18 00:24
0
雪    币: 145
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
TinHsieh (lldb) debugme [*] start patch ptrace funtion to bypass antiDebug [+] success ptrace funtion to by ...
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/usr/local/Cellar/python@2/2.7.15_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 52, in <module>
    import weakref
  File "/usr/local/Cellar/python@2/2.7.15_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/weakref.py", line 14, in <module>
    from _weakref import (
ImportError: cannot import name _remove_dead_weakref
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'sys' is not defined
2019-9-18 00:30
0
雪    币: 145
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
TinHsieh (lldb) debugme [*] start patch ptrace funtion to bypass antiDebug [+] success ptrace funtion to by ...
是不是因为这些错误,导致出了一些问题?
2019-9-18 00:30
0
雪    币: 1577
活跃值: (779)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
23
TinHsieh 是不是因为这些错误,导致出了一些问题?
什么app我这边测试一下,我看日志的话ptrace这种反调试已经成功patch了,svc指令patch好像出问题了
2019-9-18 12:39
0
雪    币: 36
活跃值: (1161)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
24
mark,感谢大佬分享
2019-9-18 14:37
0
雪    币: 707
活跃值: (1301)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
25
mark,感谢大佬分享
2021-4-29 14:31
0
游客
登录 | 注册 方可回帖
返回