12下一页
返回列表 发新帖

吸星大法抽取代码+安卓编程实现解决MT管理器没有一键注...

[复制链接]

18

主题

164

帖子

532

积分

初中生

Rank: 3Rank: 3

金币
210
好评
1
贡献
0
发表于 2020-9-18 09:43:33 | 显示全部楼层 | 阅读模式
本帖最后由 cuicui 于 2020-9-18 10:58 编辑

从实战的角度说吧,我们经常在破解安卓程序的时候;您是否遇到了以下困扰?
  • 当前分析的.smali文件  或当前的的activity (其实白话就是类似于Windows上看到的当前窗口名) 是否被执行过?  能否执行到?
  • 何时被上一级调用的,又是哪个类调来的? 类名是?
  • 函数返回值是多少?
这些问题呢,其实对于懂安卓开发的来说根本不是个事,注入代码就能解决。

以下是本人从菜鸟的角度思考问题,并实战中发现新问题的解决途径和历程:

我们在论坛上搜索【Toast】,会找到以下几个:我们找经典的几个来说事:


普通的在OnCreate调用的代码如下:

  1. const-string v1 "吾爱破解论坛"
  2. const/4 v2 1
  3. invoke-static {v6,v1,v2} Landroid/widget/Toast;-〉makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;
  4. move-result-object v1
  5. invoke-virtual {v1} Landroid/widget/Toast;-〉show()V
复制代码

这是最初的那种方法,也是最常见的那种。
优点是在当前的OnCreate之下添加,都在一个文件中操作!使用场合启动acivity时添加以来装逼使用。
缺陷:要传递的Vx寄存器不确定,用时菜鸟得自己来改,你得配合前后文来搞,这样才能让其正确的调用
而且当有多个文件想加入时,下面的代码不会被重用
而且这仅仅是弹框 ,并不能输出给DDMS 日志猫使用。
学安卓初期,我错误的看上了这种;认为是不是在随便的代码里都能添加上,完全不是这么一回事啊。


下面的这种是论坛割绳子贴里同学stars-one大神搞的代码

创建一个crack.smali代码如下:

.class public Lcrack;
  1. <div></div><div>.super Ljava/lang/Object;
  2. .source "craker.java"
  3.   
  4. .method public static toast(Landroid/content/Context;)V
  5.     .locals 2
  6.     .prologue
  7.   
  8.         const-string v0, "by stars-one"
  9.   
  10.         const/4 v1, 0x1
  11.   
  12.         invoke-static {p0, v0, v1}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;
  13.   
  14.         move-result-object v0
  15.   
  16.         invoke-virtual {v0}, Landroid/widget/Toast;->show()V
  17.   
  18.         return-void
  19. .end method</div>
复制代码

在onCreate方法里调用的代码
  1. invoke-static {p0}, Lcrack;->toast(Landroid/content/Context;)V
复制代码

以上这种方法,在MT管理器中,可以在dex编辑++模式下,找到文件夹,长按
方法名:你的程序包名(即在MT管理器点apk时看到的第一行)
类名: Crack

优点:如我要调用多次呢,可以复用。


然后我们说,这是”吐丝特“ (Toast)并不是注入的代码啊。
论坛上还有一些高级版的https://www.52pojie.cn/search.php?mod=forum&searchid=1684&orderby=lastpost&ascdesc=desc&searchsubmit=yes&kw=toast
大家可以学习或娱乐下。其实也就装装逼无大用。


后来,我发现了更加高明的玩法:https://www.52pojie.cn/thread-743758-1-1.html

  1. .class public Lcom/hook/testsmali/InjectLog;
  2. .super Ljava/lang/Object;
  3. .source "InjectLog.java"


  4. # direct methods
  5. .method public constructor <init>()V
  6.     .locals 0

  7.     .prologue
  8.     .line 3
  9.     invoke-direct {p0}, Ljava/lang/Object;-><init>()V

  10.     return-void
  11. .end method

  12. .method public static PrintFunc()V
  13.     .locals 6

  14.     .prologue
  15.     .line 7
  16.     invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;

  17.     move-result-object v0

  18.     .line 8
  19.     .local v0, "cur_thread":Ljava/lang/Thread;
  20.     invoke-virtual {v0}, Ljava/lang/Thread;->getStackTrace()[Ljava/lang/StackTraceElement;

  21.     move-result-object v1

  22.     .line 9
  23.     .local v1, "stack":[Ljava/lang/StackTraceElement;
  24.     const-string v2, "InjectLog"

  25.     new-instance v3, Ljava/lang/StringBuilder;

  26.     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V

  27.     const/4 v4, 0x3

  28.     aget-object v4, v1, v4

  29.     invoke-virtual {v4}, Ljava/lang/StackTraceElement;->toString()Ljava/lang/String;

  30.     move-result-object v4

  31.     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

  32.     move-result-object v3

  33.     const-string v4, "["

  34.     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

  35.     move-result-object v3

  36.     invoke-virtual {v0}, Ljava/lang/Thread;->getId()J

  37.     move-result-wide v4

  38.     invoke-virtual {v3, v4, v5}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;

  39.     move-result-object v3

  40.     const-string v4, "]"

  41.     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

  42.     move-result-object v3

  43.     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

  44.     move-result-object v3

  45.     invoke-static {v2, v3}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

  46.     .line 10
  47.     return-void
  48. .end method
复制代码



下面是调用的代码:
  1. invoke-static {},Lcom/hook/testsmali/InjectLog;->PrintFunc()V
复制代码



这样ddms中,我们就能看日志了


使用过一段时间后,我发现以上的代码也有缺陷,你输出的日志中,满眼都是 InjectLog青一色啊
于是又在一个好友Smile1110大佐的指引下认识了论坛大神 连晋
我的要求是 InjectLog+序号 修改下程序源代码,结果大神就编了个Java,然后编译生成了以下apk,提取到下面的代码;这是发生在前几年的故事。
时间过的好快,时间都到哪里去了?!

  1. .class public Lcom/hook/testsmali/InjectLog;
  2. .super Ljava/lang/Object;
  3. .source "InjectLog.java"


  4. # static fields
  5. .field public static count:Ljava/lang/Integer;


  6. # direct methods
  7. .method static constructor <clinit>()V
  8.     .registers 1

  9.     .line 6
  10.     const/4 v0, 0x0

  11.     invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

  12.     move-result-object v0

  13.     sput-object v0, Lcom/hook/testsmali/InjectLog;->count:Ljava/lang/Integer;

  14.     return-void
  15. .end method

  16. .method public constructor <init>()V
  17.     .registers 1

  18.     .line 5
  19.     invoke-direct {p0}, Ljava/lang/Object;-><init>()V

  20.     return-void
  21. .end method

  22. .method public static PrintFunc()V
  23.     .registers 6

  24.     .line 9
  25.     sget-object v0, Lcom/hook/testsmali/InjectLog;->count:Ljava/lang/Integer;

  26.     sget-object v0, Lcom/hook/testsmali/InjectLog;->count:Ljava/lang/Integer;

  27.     invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I

  28.     move-result v0

  29.     add-int/lit8 v0, v0, 0x1

  30.     invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

  31.     move-result-object v0

  32.     sput-object v0, Lcom/hook/testsmali/InjectLog;->count:Ljava/lang/Integer;

  33.     .line 10
  34.     invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;

  35.     move-result-object v0

  36.     .line 11
  37.     .local v0, "localThread":Ljava/lang/Thread;
  38.     invoke-virtual {v0}, Ljava/lang/Thread;->getStackTrace()[Ljava/lang/StackTraceElement;

  39.     move-result-object v1

  40.     .line 12
  41.     .local v1, "arrayOfStackTraceElement":[Ljava/lang/StackTraceElement;
  42.     new-instance v2, Ljava/lang/StringBuilder;

  43.     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

  44.     const-string v3, "InjectLog"

  45.     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

  46.     sget-object v3, Lcom/hook/testsmali/InjectLog;->count:Ljava/lang/Integer;

  47.     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

  48.     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

  49.     move-result-object v2

  50.     new-instance v3, Ljava/lang/StringBuilder;

  51.     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V

  52.     const/4 v4, 0x3

  53.     aget-object v4, v1, v4

  54.     invoke-virtual {v4}, Ljava/lang/StackTraceElement;->toString()Ljava/lang/String;

  55.     move-result-object v4

  56.     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

  57.     const-string v4, "["

  58.     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

  59.     invoke-virtual {v0}, Ljava/lang/Thread;->getId()J

  60.     move-result-wide v4

  61.     invoke-virtual {v3, v4, v5}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;

  62.     const-string v4, "]"

  63.     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

  64.     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

  65.     move-result-object v3

  66.     invoke-static {v2, v3}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

  67.     .line 13
  68.     return-void
  69. .end method
复制代码

我们可以看到ddms中 按序号输出了调用信息和一定的顺序。不过两种也有不足,比如这是给LogCat看的;要么你手机连上电脑用ddms调试;要么到vmos里用开发助手的类似ddms的调试功能;或者手机在root的情况下直接使用ddms。而没有死的日志文件的输出。所以。。。


最近在学习过程中,我发现了在安卓手机上有个叫NP管理器的,它有一个一键注入代码 并生成log 写到sdcard的功能
代码如下:


  1. .class public Lnp/NPInjectLog;
  2. .super Ljava/lang/Object;
  3. .source "NPInjectLog.java"

  4. # direct methods
  5. .method public constructor <init>()V
  6.     .registers 1

  7.     .line 9
  8.     invoke-direct {p0}, Ljava/lang/Object;-><init>()V

  9.     return-void
  10. .end method

  11. .method public static NPPrintFunc()V
  12.     .registers 9

  13.     .line 12
  14.     invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;

  15.     move-result-object v0

  16.     .line 13
  17.     .local v0, "cur_thread":Ljava/lang/Thread;
  18.     invoke-virtual {v0}, Ljava/lang/Thread;->getStackTrace()[Ljava/lang/StackTraceElement;

  19.     move-result-object v1

  20.     .line 14
  21.     .local v1, "stack":[Ljava/lang/StackTraceElement;
  22.     new-instance v2, Ljava/lang/StringBuilder;

  23.     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

  24.     const/4 v3, 0x3

  25.     aget-object v3, v1, v3

  26.     invoke-virtual {v3}, Ljava/lang/StackTraceElement;->toString()Ljava/lang/String;

  27.     move-result-object v3

  28.     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

  29.     const-string v3, "["

  30.     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

  31.     invoke-virtual {v0}, Ljava/lang/Thread;->getId()J

  32.     move-result-wide v3

  33.     invoke-virtual {v2, v3, v4}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;

  34.     const-string v3, "]"

  35.     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

  36.     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

  37.     move-result-object v2

  38.     .line 15
  39.     .local v2, "log":Ljava/lang/String;
  40.     const-string v3, "NPInjectLog"

  41.     invoke-static {v3, v2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

  42.     .line 16
  43.     const-string v3, "true"

  44.     .line 17
  45.     .local v3, "isNeedWrite":Ljava/lang/String;
  46.     const-string v4, "true"

  47.     invoke-virtual {v3, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

  48.     move-result v4

  49.     if-eqz v4, :cond_69

  50.     .line 18
  51.     const-string v4, "/storage/emulated/0/log.txt"

  52.     .line 19
  53.     .local v4, "logPath":Ljava/lang/String;
  54.     new-instance v5, Ljava/text/SimpleDateFormat;

  55.     const-string v6, "yyyy-MM-dd  HH:mm:ss.SSS"

  56.     invoke-direct {v5, v6}, Ljava/text/SimpleDateFormat;-><init>(Ljava/lang/String;)V

  57.     .line 20
  58.     .local v5, "aDate":Ljava/text/SimpleDateFormat;
  59.     new-instance v6, Ljava/util/Date;

  60.     invoke-direct {v6}, Ljava/util/Date;-><init>()V

  61.     invoke-virtual {v5, v6}, Ljava/text/SimpleDateFormat;->format(Ljava/util/Date;)Ljava/lang/String;

  62.     move-result-object v6

  63.     .line 21
  64.     .local v6, "time":Ljava/lang/String;
  65.     new-instance v7, Ljava/lang/StringBuilder;

  66.     invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V

  67.     invoke-virtual {v7, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

  68.     const-string v8, "\t"

  69.     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

  70.     invoke-virtual {v7, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

  71.     const-string v8, "\n"

  72.     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

  73.     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

  74.     move-result-object v7

  75.     invoke-static {v4, v7}, Lnp/NPInjectLog;->logOnSdcard(Ljava/lang/String;Ljava/lang/String;)V

  76.     .line 23
  77.     .end local v4  # "logPath":Ljava/lang/String;
  78.     .end local v5  # "aDate":Ljava/text/SimpleDateFormat;
  79.     .end local v6  # "time":Ljava/lang/String;
  80.     :cond_69
  81.     return-void
  82. .end method

  83. .method private static logOnSdcard(Ljava/lang/String;Ljava/lang/String;)V
  84.     .registers 6
  85.     .param p0, "fileName"  # Ljava/lang/String;
  86.     .param p1, "content"  # Ljava/lang/String;

  87.     .line 32
  88.     const/4 v0, 0x0

  89.     .line 34
  90.     .local v0, "writer":Ljava/io/FileWriter;
  91.     :try_start_1
  92.     new-instance v1, Ljava/io/File;

  93.     invoke-direct {v1, p0}, Ljava/io/File;-><init>(Ljava/lang/String;)V

  94.     .line 35
  95.     .local v1, "file":Ljava/io/File;
  96.     invoke-virtual {v1}, Ljava/io/File;->getParentFile()Ljava/io/File;

  97.     move-result-object v2

  98.     invoke-virtual {v2}, Ljava/io/File;->exists()Z

  99.     move-result v2

  100.     if-nez v2, :cond_17

  101.     .line 36
  102.     invoke-virtual {v1}, Ljava/io/File;->getParentFile()Ljava/io/File;

  103.     move-result-object v2
复制代码

调用的代码:
  1.   invoke-static {}, Lnp/NPInjectLog;->NPPrintFunc()V
复制代码

然后在sdcard卡上就会生成新的  .log文件,里边就是这个安卓程序,前后调用的顺序;比如你故意触发一个付费请求,那。。。


最近我就在想,为啥我不搞个程序,弥补mt管理器没有一键注入代码的烦恼呢? 那个np管理器真的好卡顿啊。
接下来,我们用Delphi写个浮动笔记分类的工具,完成点击插入复制到剪贴板的功能

编得差不多之后,就可以转成安卓的代码了,这样就会吐出一个APK来,从而自己动手,解决问题。
还得那句老话,求人难啊,求人难啊~~



AutoHotkey没有类似于按键精灵界面化的问题,最终还是自己编了个程序(《信手拈来按键帮你来》)完美的解决了问题,还弄到了无数的小粉丝也是一个道理。
就像这个贴子https://bbs.pediy.com/thread-261942.htm
ninebell新版本的x64dbg不怎么样,&nbsp;EasyLabelView.dp64 插件直接费了,每次升级都有插件夭折;什么开源的好!就像地球人都能随便编译出来一样,论坛好容易有高人编了一个出来, ...
编译不难的,编译GUI稍微麻烦点,配置好QT环境也不难,以前CTRL+1/2功能是我自己fork了一份改,然后嫌烦了有了新思路才直接弄插件里。至于更新导致插件不能用是可能的,以前官方有次commit导致搜索中文不能用了,我赶紧让作者改回来了。BUG多有能力的话欢迎提交pr或者怎么解决的issue给作者哟,作者还是挺负责的,但是光提问题没解决方案的话那issue可能就永远挂起了。。
您说的太对了。我也曾经提交过bug和问题。

       最早试的最多的插件莫过于下断点的,能试的我都试过来了。
后来发现这东西太不靠谱了,一升级不是完蛋就是挂了,下载了几十个版本都这个熊样儿,当然也有极少的版本兼容。难道每次都要去自我升级和修复?或提交问题让他人解决?这也太坑爹了。
       最后索性,借鉴了OD的那个浮动工具栏,用Delphi编了一个外挂EXE式的来解决,软件名叫《Ollydbg/x32dbg/x64dbg贴心伴侣》,集众论坛精华和X32dbg/x64dbg内置命令、汇编破解思路总结于一身而成,目前仍在升级和改造中。。。至少这次都听我号令了吧?解决问题的办法众多,为啥要编自己不擅长的插件方式解决呢?易于维护与升级,0成本低精力损耗才是王道。





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
已有1人评分好评 金币 理由
北辰没有林安 + 1 + 1 在做了

查看全部评分 总评分:好评 +1  金币 +1 

回复

使用道具 举报

34

主题

734

帖子

2743

积分

大学生

Rank: 5Rank: 5

金币
525
好评
26
贡献
0
QQ
发表于 2020-9-18 10:01:33 来自手机  | 显示全部楼层
沙发。。。
回复

使用道具 举报

162

主题

2115

帖子

6494

积分

硕士生

Rank: 6Rank: 6

金币
579
好评
43
贡献
0
发表于 2020-9-18 10:02:33 来自手机  | 显示全部楼层
说那么多还不是因为MT管理器没有的NP管理器都有
回复

使用道具 举报

42

主题

1067

帖子

3793

积分

大学生

Rank: 5Rank: 5

金币
858
好评
55
贡献
0
发表于 2020-9-18 10:07:45 来自手机  | 显示全部楼层
这...我只能看懂少许...
回复

使用道具 举报

7

主题

2335

帖子

6218

积分

硕士生

Rank: 6Rank: 6

金币
749
好评
1
贡献
0
发表于 2020-9-18 10:34:00 来自手机  | 显示全部楼层
谢谢分享
回复

使用道具 举报

18

主题

164

帖子

532

积分

初中生

Rank: 3Rank: 3

金币
210
好评
1
贡献
0
发表于 2020-9-18 10:39:31 | 显示全部楼层
jK 发表于 2020-9-18 10:02
说那么多还不是因为MT管理器没有的NP管理器都有

勾引导演关注和解决的更好。
回复

使用道具 举报

0

主题

836

帖子

2857

积分

大学生

Rank: 5Rank: 5

金币
942
好评
0
贡献
0
发表于 2020-9-18 10:43:30 来自手机  | 显示全部楼层
谢谢分享
回复

使用道具 举报

162

主题

2115

帖子

6494

积分

硕士生

Rank: 6Rank: 6

金币
579
好评
43
贡献
0
发表于 2020-9-18 10:45:29 来自手机  | 显示全部楼层
cuicui 发表于 2020-9-18 10:39
勾引导演关注和解决的更好。

希望是能这样,看不懂你字面意思应该是开发者吧
回复

使用道具 举报

133

主题

2073

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

金币
75043
好评
638
贡献
48

MT论坛元老MT论坛优秀教师2018MT论坛优秀成员

QQ
发表于 2020-9-18 10:49:58 来自手机  | 显示全部楼层
jK 发表于 2020-9-18 10:02
说那么多还不是因为MT管理器没有的NP管理器都有

MT管理器没有拉屎功能它有么
回复

使用道具 举报

133

主题

2073

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

金币
75043
好评
638
贡献
48

MT论坛元老MT论坛优秀教师2018MT论坛优秀成员

QQ
发表于 2020-9-18 10:51:47 来自手机  | 显示全部楼层
有计划在Dex编辑器++中添加代码模板以及自动化处理功能,不过排得比较后,最近开发Arsc++花太多时间了,后面还得先做下Android11的兼容
回复

使用道具 举报

162

主题

2115

帖子

6494

积分

硕士生

Rank: 6Rank: 6

金币
579
好评
43
贡献
0
发表于 2020-9-18 10:58:43 来自手机  | 显示全部楼层
Bin 发表于 2020-9-18 10:49
MT管理器没有拉屎功能它有么

这个问题啊,完全是要靠你个人开发出来,功能强大直射火力
回复

使用道具 举报

158

主题

5621

帖子

4万

积分

博士后

Rank: 8Rank: 8

金币
6058
好评
36
贡献
0

考神MT论坛最佳新人MT论坛帅哥MT论坛活跃会员MT论坛灌水老大

发表于 2020-9-18 12:32:03 来自手机  | 显示全部楼层
冥界三大法王
回复

使用道具 举报

15

主题

2301

帖子

8527

积分

硕士生

Rank: 6Rank: 6

金币
129
好评
14
贡献
0

MT论坛最佳新人考神MT论坛活跃会员

QQ
发表于 2020-9-18 13:12:43 来自手机  | 显示全部楼层
冥界法王大佬,出现了出现了
回复

使用道具 举报

2

主题

334

帖子

1001

积分

高中生

Rank: 4

金币
271
好评
0
贡献
0
发表于 2020-9-21 23:31:55 | 显示全部楼层
不明觉厉
回复

使用道具 举报

53

主题

1947

帖子

6078

积分

硕士生

萌新

Rank: 6Rank: 6

金币
943
好评
40
贡献
0

考神MT论坛帅哥MT论坛最佳新人MT论坛活跃会员

QQ
发表于 2020-9-21 23:34:54 来自手机  | 显示全部楼层
法王也来了呀,欢迎欢迎
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表