找回密码
 立即注册

[辅助] 重楼辅助是怎样炼成的全套教程

  [复制链接]
heeb0957 发表于 2020-9-25 08:57:57 | 显示全部楼层 |阅读模式
<辅助是如何炼成的-基础篇>教程目录
基础篇 -

[第一小节:侧重于CALL的调用以及数组的寻址及模拟构造]
001 -F8找CALL实例ONE 模拟器的讲解
课程内容: 调试模拟器并找到他所调用的CALL.
002 -CALL调用方法的讲解
课程内容: 以几个CALL的反汇编模型讲解CALL的调用方式.
003 -实战,寻找第一个程序选中怪物功能
课程内容: 找到选中怪物目标的功能.
004 -实战寻找第一个程序寻路功能
课程内容: 找到游戏寻路功能.
005 -实战,寻找第一个程序技能释放功能
课程内容: 找到游戏技能释放功能.  
006 -实战,寻找第一个程序普通攻击功能
课程内容: 利用 明文包CALL和 目标ID找到游戏普通攻击功能,并分析封包组的汇编代码.
007 - VC++创建工程以及简单的函数
课程内容: 创建一个空白的工程,并开始写第一个简单函数
008 -函数的机制之栈帧的形成
课程内容: 认识函数在反汇编里的机制以及栈帧的形成.
009 -函数的机制之调用约定的讲解
课程内容: 讲解函数的调用约定.
010 -数据结构篇之数组结构
课程内容: 讲解VC++中数组结构
011 -VC++TAB页的创建和辅助控件类的使用
课程内容: 讲解VC++中TAB页面的创建和辅助专用控件类的使用
012 -VC++键盘钩子注入
课程内容: 编写一个程序将DLL注入到游戏当中并讲解如何调试DLL代码.  
013 -物结构分析(汇编代码分析)
课程内容: 分析怪物结构遍历的汇编代码
014 -第一个程序怪物结构遍历(用程序遍历链表)
课程内容: 用程序遍历怪物结构,讲解VC++TRY异常,调试输出,以及DLL调试.
015 -怪物结构其他成员的寻找
课程内容: 寻找除了ID之外的其他主要成员的偏移.
016 -VC++指针的应用(用结构指针遍历怪物数据结构)
课程内容: 利用自定义结构遍历游戏的数据.
017 -第一个程序背包结构分析
课程内容: 分析第一个程序的背包结构
018 -第一个程序背包结构汇编代码遍历
课程内容: 用汇编代码遍历背包结构
019 -用代码模拟背包结构
课程内容: 用代码模拟背包结构
020 -用自定义结构遍历背包结构
课程内容: 用自定义结构遍历背包结构
021 -第一小节结束

[第二小节:侧重于CALL的寻找及参数的分析,简单数组分析以及简单挂机流程]
022 -第二个程序人物属性分析
课程内容: 用自定义结构遍历背包结构
023 -分析程序发包流程
课程内容: 分析程序的发包模式,以及他的过程.
024 -寻找普通攻击CALL
课程内容: 分析寻找普通攻击CALL封包组成过程以及整个攻击代码流程.
025 -技能CALL的寻找与分析
课程内容: 分析和寻找游戏的技能攻击CALL.
026 -游戏功能框架以及游戏循环攻击功能分析
课程内容: 根据技能和普通攻击分析出游戏大概的循环攻击功能框架.
027 -编写程序读取血量并显示
课程内容: 编写血量等信息的读取.
028 -编写程序调用普通攻击及技能攻击
课程内容: 编写调用普通攻击以及技能攻击的调用.
029 -怪物结构分析
课程内容: 分析程序的怪物结构公式.
030 -怪物结构分析(2)-怪物坐标的分析以及寻路和坐标加密的分析
课程内容: 分析了寻路CALL,和怪物坐标的偏移以及怪物坐标加密的分析.
031 -人物选怪功能和怪物选人功能的分析
课程内容: 分析人物选怪和怪物选人的思路.
032 -用程序遍历怪物
课程内容: 遍历怪物的属性.
033 -冒泡算法得到最近的怪物
课程内容: 选取最近的怪物功能的实现.
034 -从代码分析出目标类型的偏移
课程内容: 从普通攻击入手,分析出目标类型的偏移(是否是怪物).
035 -做一个最简单的自动打怪

课程内容: 编写一个最简单的打怪流程.
036 -完善自动打怪-增加范围挂机
课程内容: 增加范围挂机功能.
037 -跨图寻路CALL的寻找与分析
课程内容:寻找游戏中跨图寻路CALL的分析与寻找..
038 -完善自动打怪-增加地图判断
课程内容:增加对挂机的时候地图判断.
039 -吃药CALL的分析以及背包数组的分析
课程内容: 通过明文包找到吃药CALL,分析吃药CALL的时候发现参数是一个结构,从物品指针+14C传递过来,通过这个物品指针我们找到了背包结构,分析发现+8是物品横坐标+C是物品纵坐标,+4是物品的ID,我们又发现更改物品的ID会导致鼠标放在物品上显示信息的改变,那么我们知道这个显示物品的信息是由这个+4这个ID值改变,监视这个地址,我们找到了读取物品信息的CALL.
040 -背包遍历及数量名字寻找和使用物品CALL的调用
课程内容:首先我们整理了上节课找的背包ID以及背包公式.但是光光是ID值还不够,因为你得知道其他的信息,比如说数量,名字等等,数量我们通过CE可以直接搜索到.而名字我们发现搜索到的名字的指针并没有在我们的背包结构内存中,我们继续通过名字来查找,发现他是来自另外一个结构,那么新的问题出现了这个物品结构是如何匹配物品名字的呢?通过分析我们发现原来那个ID值就是这个结构的下标,接下来我们成功的遍历出名字ID数量.并写出使用物品的CALL.
041 -智能判断吃药的实现
课程内容:今天我们要实现智能加血,什么是智能加血呢,我们要自动判断背包里哪个物品是药,那么如何判断呢,首先我们尝试了类型的判断发现补蓝和补血的类型名字一样,那么排除掉,那样的话我们只好用名字匹配了,幸好这个药品名字不多,那么我们可以直接匹配了2个.但是测试的时候发现出错了,这个时候我们发现使用物品并没有检测这个ID是否为0也就是有没有物品,加入判断后,我们发现已经可以正常加血了.
042 -吃药的完善-增加吃药间隔的判断以及等级判断
课程内容:首先了解下如何通过代码分析出CD和LV的偏移.通过逆向分析代码,我们找到了这个CD和LV的偏移,并且把判断的功能加入了智能吃药,经过不断的调试,我们成功的判断了物品的CD和LV,我们的智能加血更加完美了.
043 -技能结构的分析(1)
课程内容: 今天我们讲解了由名字逆向回结构,发现找到的并不是我们想要的技能结构而是技能信息结构,为什么会找到这样的一个结构,而不是技能结构呢?这是这节课留给大家的作业,请大家好好思考一下!
044 -技能结构的分析(2)
课程内容:我们从上一节课找的鼠标取技能信息的CALL开始寻找我们的技能结构,发现返回到了另外一个模块,没办法我们只好从技能使用CALL开始寻找,我们用快捷键使用技能,逆向到了快捷键结构,当然这不是我们所要找的,我们又用右键使用技能面板的技能,这时候我们遍历到了门派的技能结构.这个是不是我们想要找的呢?
045 -技能结构的分析(3)
课程内容:遍历的时候我们发现,结构中只有当前选中卷宗的技能,那么我们就明白了,这里也并不是真正的技能结构,那么我们又发现切换的同时技能也随之改变,没办法我们只有又开始分析了ID的来源,分析后我们发现他来自一个结构中,而这个结构呢,就是传说中的二叉树.!
046 -二叉树的原理讲解与遍历
课程内容: 二叉树在VC++中的结构的模型,在内存当中的模型,结构的图形,以及框架示意图像.最后我们用递归遍历了整个二叉树结构.
047 -技能结构的分析(4)
课程内容: 上节课我们把二叉树信息遍历出来了,但是发现里面有很多值,那么我们该如何确定那个是技能ID呢?通过代码发现他对比的是心法的ID,那么心法的ID来源是哪里呢?通过分析参数的来源,我们找到了心法的结构,这样我们通过心法的结构就可以准确的找到我们所学的技能.
048 -技能信息结构的分析
课程内容:首先我们按照技能分析1当中分析出了名字的偏移,然后我们开始按照背包找CD的找法去寻找技能的CD,终于按照一步步分析,我们找到了正确的地方,通过代码分析,他通过当前的时间减去记录的时间来判断是否在CD当中,这样我们的CD的偏移也就找到了,是在怪物结构中人物结构指针里.
049 -技能结构的遍历
课程内容: 今天我们来设计技能遍历以及结构,这个游戏的技能结构不像背包一样都在1,2个结构里,这个技能结构经过一个结构,一个二叉树遍历,两个信息属性结构,如果每次都重新遍历的话效率会非常低,这样我们就需要设计一个自定义结构来储存技能,刷新的话只需要刷新几个值就可以了.
050 -技能面板写入技能ID的分析
课程内容: 通过代码写入我们找到了处理技能结构ID的代码,通过分析我们知道他是如何一个过程,对于我们来说无须在去写一次,直接调用游戏内部的代码即可.
051 -技能流程处理(1)
课程内容: 设计自动技能攻击流程.
052 -技能流程处理(2)
课程内容: 讲解了C++宏在辅助中的应用,以及技能流程的调试.
053 -技能流程处理(3)
课程内容: 通过输出CD和上次使用时间我们发现上次使用时间变量当中储存的并不是最后一次使用时间,而是下一次使用的时间,那么通过改变代码,我们成功的修复了使用技能造成的崩溃,并加上了自动补蓝功能.
054 -HOOK的应用-行为监测
课程内容: 首先我们讲解了下HOOK的原理,然后我们找到行为CALL,HOOK了他的头部,成功后,我们自定义消息输出了行为动作,并分析了攻击行为和移动行为.
055 -坐标加密后续以及挂机捡取思路
课程内容: 修复不同地图坐标值错误,以及讲解了挂机捡取流程.
056 -第二小节结束语
课程内容: 第二小节结束语.


[第三小节:不同的方式寻找与分析CALL和结构,学会分析代码]
057 -魔法之门明文包的分析以及喊话CALL的调用
课程内容: 通过代码分析我们从封包数据指针开始寻找,找到了他的来源以及分析出了整个发包的流程,通过关键的地方我们找到了数据指针写入的地方,但是我们发现却没有发现明文的地方,于是我们继续寻找,最终我们找到了加密的地方以及真正的明文包的函数.
058 -喊话内容的一次逆向分析过程
课程内容: 我们从喊话内容查找到了喊话编辑框里储存的内容,通过分析我们发现这个是一个控件结构的内 容偏移.然后我们继续分析喊话所储存的内容,找到了清除编辑框内容的代码.
课程重点:
1.NOP的在分析数据中的作用
2.NOP的时候所要注意的地方
3.为何找喊话内容会找到结构呢,因为我们查找的是控件中的值.
4.通过结构我们可以遍历所有的控件.
5.读取以及访问的区别
6.调用CALL时,如果参数的数量正确数值正确,但又崩溃了原因可能是传递的参数是结构体.
059 -选择怪物功能分析-从明文包入手
课程内容: 从明文包返回到功能代码并不难,这节课的重点是通过代码分析到CALL的参数的构造.
课程重点:
1.通过NOP代码我们可以确认代码的功能.
2.结构也是有可能作为参数传入的.
3.重要的参数是有可能作为结构的某个成员所传递.
060 -选择怪物功能分析-从目标入手
课程内容: 用CE搜索到目标的值,通过这个值我们找到了选怪功能的CALL.这对于我们来说是一个很简单,但是我们所要了解的并非仅仅是找到,而是分析和猜测汇编代码指令他所包含的含义.
课程重点:
1.CE搜索技巧
2.汇编代码结合数据了解代码所包含的意义
3.如何分析目标的数据类型
061 -分析跳的CALL-从明文包入手
课程内容: 首先我们了解了跳的这一过程所发生的动作,通过明文包我们很快的定位了跳这个CALL并成功的调用.
课程重点:
1.参数的来源位置
2.栈参数的个数确认
3.写调用CALL的顺序
062 -跳的CALL的代码分析
课程内容: 今天我们分析了跳的代码,找到了执行动作的CALL和发包的CALL,并无意中实现了飞天的功能.可以猜测发送非正常的坐标可以达到飞天功能.
课程重点:
1.NOP代码的堆栈平衡细说
2.通过NOP代码来猜测CALL所表达的含义
3.通过修改参数来定位参数的作用.
063 -跳的坐标来源分析
课程内容: 上一节课我们分析了本地执行跳的功能代码,里面有一个坐标那么这个坐标值是从哪里来的呢?
课程重点:
1.栈参数的来源分析(类似[ESP+**][EBP+**])
064 -对话NPC功能的分析-从明文包入手
课程内容: 今天我们找了跟NPC对话的功能CALL,并且分析了他的代码.
课程重点:
1.如何猜测代码的作用;
065 -接受和放弃任务的分析-从明文包入手
课程内容: 从明文包找到接受和放弃任务的代码.
课程重点:
1.学会分析RETN不带数字尾部没有手动平衡CALL的参数数量
2.学会分析从内部分析参数的数量
066 -使用物品的调用与背包结构的分析
课程内容: 经过上面几节课大家应该很简单的知道如何去调用这个CALL,那么我们今天的重点就放在分析CALL的代码上,我们经过测试发现参数是一个背包的位置,那么我们该从哪里去分析背包结构呢?以前我们都是从调用CALL前面分析,今天我们分析下从CALL里面分析,为何?因为我们发现发包的时候一些物品的值,这些值不可能凭空生产,那么最有可能的就是调用发包CALL前面的代码所遍历出来的.
课程重点:
1.任何一个数据都不会无缘无故的出现
2.测试数据最好的方法就是更改他的值
3.值的改变导致了结果改变,那么结果跟值肯定会有关联
067 -使用物品的分析-从物品数量入手
课程内容: 今天我们从物品的数量跳转到使用物品CALL的代码,但是我们发现返回上去后并不是我们想要的数据看来对于这个游戏我们想要从物品数量找到使用物品的CALL是不行了.
课程重点:
1.继续对代码分析进行一个学习
2.参数来源逆向分析
课后思考:
为何无法从物品的数量返回?
为何有些游戏可以有些游戏不行?
068 -打开怪物背包以及捡取CALL-从明文包入手
课程内容: 今天我们来找下打开怪物背包以及捡取的功能,经过上面几节课我相信同学对于找CALL应该不是太难,所以这节课还是侧重于对代码的分析以及数据来源的分析.
课程重点:
1.数据来源的分析
2.参数作用的判断
3.代码的分析
069 -技能CALL的分析与调用-从明文包入手
课程内容: 今天我们从明文包分析技能CALL,分析出每一层他经历的CALL后,我们还原了游戏技能框架结构,并且找到了适合的CALL.
课程重点:
1.游戏技能框架的分析与还原
2.参数的来源的分析
070 -收包明文包的寻找
课程内容: 今天我们讲解了收包明文包的寻找,首先我们通过代码访问找到了处理封包的地方,然后经过参数判断我们找到了解密的过程,最后找到了我们想要找的明文包,其实收包的明文包就是解密后的封包,以及封包分解归类的功能函数
课程重点:
1.数据读取的应用
2.CALL参数的分析
071-CALL的经验总结篇
课程内容:什么是CALL?栈的平衡.CALL的参数.参数的传递.参数的构造方式.CALL的返回值.CALL的表现形式.
072-编程逆向及数据分析.
课程内容:数据分析的几个方面的经验总结.
073-背包结构之结构内存形态的辨析及成员作用的分析.
课程内容: 今天我们以背包结构讲解了数组在内存中的表现形态,以及以成员为索引取出其他信息,并分析了游戏显示物品信息的代码
课程重点
1.数组在内存的形态
2.结构成员的含义
3.物品信息代码的分析
074-任务结构之结构成员及相关代码的分析.
课程内容: 从任务的数量分析,我们找到了数量成员的结构,但是发现他并没有其他的信息,靠分析我们找到了任务信息整理的代码,通过分析我们了解了这个游戏的任务结构框架.
课程重点:
1.寻找结构成员作为突破点.
2.分析结构中成员的作用.
3.分析CALL的作用.
4.数据的逆向追踪
075-快捷键结构之结构成员指针和结构分析.
课程内容: 今天我们找的是快捷键结构,从快捷键存放的技能ID中我们分析出了临时存放的内存数据地址,从这个地址我们找到了快捷键技能ID的来源以及快捷键的结构.
课程重点:
1.确定找到中数据来源以及作用
2.数值的回逆
3.结构公式的分析
076-明文包寻找与分析.
课程内容: 某游戏的明文包的分析.
课程重点:
1.找到明文包重要的参数.
077-与NPC对话功能代码的分析.
课程内容: 分析对话功能代码,找到NPC结构,角色结构,游戏计算距离的函数以及坐标数据.
课程重点:
1.学会分析重要的跳转
2.学会从一般功能分析数据
078-NPC对话列表结构的分析.
课程内容:分析了NPC对话框列表结构.
课程重点:
1.结构分析的步骤讲解
2.结构成员的内存定位
3.数据来源的分析讲解
4.ID计算公式的分析.
079-如何开阔思路分析结构数据.
课程内容:通过血量分析到物品信息结构,在通过物品结构指针逆向到吃药所读取的CALL以及他保存结构指针的二叉树.并且最后分析到了,整个控件的结构,通过分析我们得到了,生活技能,宠物技能,聊天表情等数据.
课程重点:
1.结构的分析并非由一定要由结构成员去做突破点
2.学会开阔思路.
3.信息指针可能由多个结构保存.
4.每个保存的结构他的作用可能都不同.
080-从提示CALL到技能结构
课程内容:从上一节课中的提示CALL,分析出技能结构。
课程重点:
1.目标方向的分析
2.条件判断的分析
081-NPC商店物品列表结构的分析
课程内容:搜索物品的名称我们找到了很多个地址,那么哪个是正确的呢?通过改变内容的值我们找到了真正的地址,并通过分析我们分析出了他的结构.
课程重点:
1.定位结构内存
2.参数的来源




辅助是如何炼成的(代码脚本实例篇)教程详细目录
实例篇
001-界面及框架设计.
课程内容: 设计一个辅助的框架以及界面的设计
课程重点:
1.界面设计
2.辅助类的使用
3.代码框架设计
002-角色结构分析以及宏的介绍
课程内容:介绍了宏的概念,分析了角色的结构偏移,以及基址的分析,并且显示出来
课程重点:
1.宏的介绍
2.宏的应用
3.窄字符串和宽字符串的转换
4.基址来源的分析
5.结构偏移的分析
6.内存访问与内存写入查找的区别
003-配置读取框架设计以及人物在线的判断
课程内容:设计一个自动读取角色当前配置的框架
课程重点:
1.人物在线的判断分析
2.配置框架的读取判断
3.调试错误信息的应用
4.代码错误的调试方法
004-命名规则讲解
课程内容:变量命名规则简单讲解.
005-寻路CALL的分析
课程内容:用寻路标志分析出寻路CALL,并分析他的参数以及用程序调用
课程重点:
1.参数的构造
2.错误的排除
006-发包流程的分析以及选中怪物封包CALL的调用
课程内容:数据的来源并非凭空生成,所以我们可以从send入手去寻找他的来源.
课程重点
1.数据来源的分析过程
2.封包CALL的调用
007-用代码实现封包的定义以及选中功能的调用
课程内容:如何用VC定义封包,以及调用发包CALL
课程重点
1.封包的定义
2.错误的调试方法
008-自动任务@接受放弃任务功能的分析与实现
课程内容:用封包构造来实现接受任务和放弃任务
课程重点:
1.CALL的调用
2.封包的构造
3.结构的对齐
009-自动任务@遍历周围人物信息
课程内容:从选中怪物的代码入手,我们寻找ID的来源找到了人物的数组信息,然后通过搜索字符串字节集搜索到了任务的偏移,最后我们用代码遍历出了NPC的信息。
课程重点:
1.数据的来源逆向
2.用代码分析出数组的大小
3.字符串偏移的分析
4.用代码遍历数组
010-LUA基础应用
课程内容:讲解了C++如何取出脚本里函数的参数以及脚本里调用C++的函数并得到他的返回值。
课程重点:
1.LUA脚本调用C++函数
2.LUA脚本取出C++返回值
3.C++得到LUA脚本的参数

011-LUA基础应用2
课程内容
UA中的函数,逻辑,以及变量和表达式
课程重点:
1.LUA脚本语法规则


012-LUA脚本应用之堵塞寻路函数
课程内容:让寻路走到目标后在退出函数.
课程重点:
1.无

013-LUA脚本应用之任务脚本流程
课程内容:设计任务脚本框架雏形
课程重点:
1.LUA基础知识的应用
2.任务脚本的框架设计

014-LUA表(数组)的概念及应用
课程内容UA数组的概念,以及基础应用
课程重点:
1.LUA一维数组的赋值,遍历,读取
2.LUA多维数组的赋值,遍历,读取


015-任务结构信息的分析
课程内容: 首先我们通过数量分析,发现我们无法通过任务的物品数量来分析出任务结构,接着我们用任务描述来找到并分析出任务的结构
课程重点:
1.结构遍历代码的分析

016-任务结构信息的遍历
课程内容: 用VC++代码遍历出任务结构信息课程重点:
1.调试错误信息
2.编写遍历数组代码

017-任务完成判断以及任务脚本准备
课程内容: 任务完成判断的分析以及一些代码的修改
课程重点:
1.辅助运行的判断
2.脚本运行完毕后的处理
3.任务判断代码的流程

018-自动任务脚本框架建立
课程内容:任务脚本框架的设计
课程重点:
1.自动任务框架设计
2.意外中断处理机制

019-编写自动任务脚本1-对话完成类任务
课程内容: 用上一节课的框架来编写自动任务脚本.


020-编写自动任务脚本2-对话框关闭分析处理

课程内容:NPC对话框打开的时候无法寻路,那么如何处理呢?
课程重点:
1.分析关闭NPC CALL

021-编写自动任务脚本3-打怪任务编写
课程内容:编写自动选中最近的怪物.
课程重点:
冒泡选中自动最近的怪物.


022-编写自动任务脚本4-打怪任务编写课程内容:编写循环打怪

023-编写自动任务脚本5-打怪任务编写
课程内容UA完成打怪任务
课程重点:
1.判断如何跳出打怪循环

024-编写自动寻图-寻图算法讲解
----------------------------------------------------------------------------------------
课程内容:广度优先算法特点的讲解

025-编写自动寻图-脚本代码实现算法
----------------------------------------------------------------------------------------
课程内容:用lua脚本代码编写广度优先算法寻图

026-编写自动寻图-BUG排除
----------------------------------------------------------------------------------------
课程内容:排除脚本里的BUG

027-寻图算法要点以及LUA表的其他应用
----------------------------------------------------------------------------------------
课程内容:寻图算法重要的一些要点,以及表在自动任务中的应用

028 挂机流程1-状态模式讲解
----------------------------------------------------------------------------------------
课程内容:讲解了状态模式的大概流程以及他的优点.
课程重点:
1.C++的封装,继承和虚函数的应用.





文件名:  密码: sjr6 状态: 未购买  售价:6 (原价:6)淘币
人气指数:32298
文件大小:
发布者:heeb0957
下载权限: 新手上路
[购买VIP免费下载]   [充值淘币]  

已下载 0 次


takashi79 发表于 2020-9-25 09:46:08 | 显示全部楼层
真是难得给力的帖子啊。
回复

使用道具 举报

meidou. 发表于 2020-9-25 13:04:48 | 显示全部楼层
无回帖,不论坛,这才是人道。
回复

使用道具 举报

lengweijun 发表于 2020-9-25 22:47:29 | 显示全部楼层
感恩无私的分享与奉献
回复

使用道具 举报

liushuich 发表于 2020-9-27 00:34:14 | 显示全部楼层
感恩无私的分享与奉献
回复

使用道具 举报

dc80 发表于 2020-9-28 11:29:48 | 显示全部楼层
我只是路过打酱油的。
回复

使用道具 举报

1092427021 发表于 2020-9-28 21:00:33 | 显示全部楼层
太生气了,无法HOLD啦 >_<......
回复

使用道具 举报

liyunde 发表于 2020-9-29 04:22:27 | 显示全部楼层
看到这帖子真是高兴!
回复

使用道具 举报

ismiao 发表于 2020-9-29 07:49:56 | 显示全部楼层
感恩无私的分享与奉献
回复

使用道具 举报

dhxmeidou 发表于 2020-9-29 20:22:25 | 显示全部楼层
真是难得给力的帖子啊。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|游戏淘宝湾

GMT+8, 2024-12-4 16:40 , Processed in 0.053505 second(s), 52 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024, Oddpp Cloud.

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