你们谁可以把英雄联盟快捷方式没了的快捷方式发给我,只要快捷方式 TCLS/英雄联盟快捷方式没了.exe

英雄联盟快捷方式怎么打不开 是什么原因 应该怎么弄?_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
英雄联盟快捷方式怎么打不开 是什么原因 应该怎么弄?
我有更好的答案
从游戏所在盘重新弄快捷方式
找人或去网吧考一个就行,我就是这么解决的
Client.exe这个指游戏的登录程序,可以打开文件夹:N(系统盘)//英雄联盟//TCLS,看看有没有这个文件。有的话建立一个快捷方式就行,没有的话可能要重新下载游戏。
没有这个文件,难道要重新下,我的是刚安装的。
那你有移动过游戏文件目录吗?如果移动过可能是移动过程中出现了差错。如果你的安装包还在可以尝试重新安装,如果还不行就应该是下载的文件有损坏,应该只能重新下载了。不好意思并不是特别懂,就只能这样了。
你的游戏文件可能移动过了吧。
其他1条回答
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包查看: 378|回复: 2
好友主题正能量0 名气0 威望0 注册时间在线时间0 小时
[LV.1] PCMgr Alpha, 积分 1, 距离下一级还需 49 积分
英雄联盟能登陆到pvp界面 如下图!但是在这个界面停留超过一分钟就掉线了.然后就告诉我出现未知错误!&&也重新下游戏了!也调节IE浏览器了&&各种方法都试了 .但是还是不行!&&麻烦帮下忙管家版本:8.3.
好友主题正能量969 名气88 威望21 注册时间在线时间526 小时
帖子彩盾1678
1.这类问题,一般我们都是再多尝试登陆几次,有时在尝试多次后是可以进去的;
2.如果你自己的电脑没有在占用网络,就要等到你的网络环境流畅了再登陆,可能是有人在下载等占用带宽;
3.未知错误经常出现在客户端或网络异常的情况下,所以你可以到官网看下服务器是否维护,或者是当地网络是否正常,很多时候是游戏服务器的问题,可以尝试换个专区登陆试试;
4如果你在游戏中多次途故意或无意退出了都会受到受惩罚的,会暂时被封号。但一般来说,如果你不是真正恶意逃跑的话(难于界定哦),一天之内会被解封;少数中途退出时再登陆会先给出警告的,此时你就要注意了。严重的会被永久封号。
5.打开IE浏览器,点击上方的“工具”菜单,单击“Internet 选项”,再单击“连接”选项卡,点击下面的“局域网设置”,取消里面的“自动检测设置”和下面的代理服务器(如果有的话一定要取消):
SIGNATURE-------------------------------------------------------------------------
如果上述没有解决您的问题---&请工程师在线为您解决问题
好友主题正能量262 名气15 威望1 注册时间在线时间38 小时
喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵喵
[LV.5] PCMgr Enhance, 积分 1837, 距离下一级还需 163 积分
帖子彩盾319
方案一:修复网络
1. 打开【电脑管家】&【工具箱】&【流量监控】:
2. 选择【下载速度】&选中数据较大的量&右键【结束程序】:
3. 打开【电脑管家】&【工具箱】&【DNS优选】:
4. 点击【重新检测】&在平均值最低点【启用】:
方案二:使用电脑管家清理浏览器缓存
1. 打开【电脑管家】→【工具箱】→【清理垃圾】:
2. 在【上网产生的垃圾】中,勾选所有浏览器→点击【开始扫描】:
3. 扫描完成后,点击【立即清理】:
方案三:注册IE组件
1. 点击【开始】菜单→在搜索框中输入&cmd&→按键盘enter(回车)键:
2. 在弹出的黑色窗口中,按顺序输入以下内容,按键盘enter(回车)键,再逐一完成以下全部部件注册(也可以cmd中运行“for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1 ”)
regsvr32 atl.dllregsvr32 shdocvw.dllregsvr32 urlmon.dllregsvr32 browseui.dllregsvr32 oleaut32.dllregsvr32 shell32.dllregsvr32 jscript.dllregsvr32 vbscript.dllregsvr32 mshtmled.dllregsvr32 CLBCATQ.DLLregsvr32 cscui.dllregsvr32 MLANG.dllregsvr32 stobject.dllregsvr32 WINHTTP.dllregsvr32 msxml3.dllregsvr32 query.dllregsvr32 jscript9.dllregsvr32 hlink.dll
方案四:重置IE
1. 打开IE浏览器 → 点击【工具】→【Internet 选项】2. 点击【高级】→点击【重置】→勾选【删除个性化设置】→点击【确定】→【确定】:
方案五:取消设置代理服务器
1. 打开IE浏览器 → 点击【工具】→【Internet 选项】2. 点击【连接】→【局域网设置(L)】:
3. 取消所有勾选,点击【确定】→【确定】:
方案六:如果接入方式是“路由器+MODEM”的话,先尝试直接使用MODEM拨号上网,路由器先不要接,测试一下是否由于路由器的问题所影响的。如果与其他人共享上网的话,不排除由于网络不稳定的情况所导致的。
方案七:卸载英雄联盟客户端,再登录游戏下载页面/download.shtml下载安装最新版本的完整客户端。
方案八:查看分辨率是否设置正常。
方案九:登录游戏补丁下载页面/download.shtml下载安装最新版本的手动更新包,更新完成后用电脑桌面生成的快捷方式进入游戏。
方案十:删除桌面的英雄联盟快捷方式,在英雄联盟安装路径上找到:“英雄联盟\TCLS\Client.exe”应用程序 生成桌面的快捷方式,使用这个快捷方式进入游戏。
方案十一:使用加速器,下载地址
方案十二:设置查看电脑时间是否与当前时间一致。
本回答如有不清楚或其他疑问,请继续追问
如果我的答复没能解决您的问题,请点击这个链接:
填写QQ号码后点击“工程师远程协助”按钮。我们的工程师收到您的请求后,会在2小时内给你发出QQ好友请求,请保持QQ可加好友状态,并留意消息提示。
收听下又不会怀孕啦~
电脑诊所·初级分析师
愿意协助解答电脑问题的好人
电脑诊所顾问
电脑诊所专家互助团管理员
孤零零的楼主,没有伴侣,也没人回复
发帖在1000以上的活跃管饭
Powered by当前位置:
→ 英雄联盟lol正在连接服务器进不去、不动了怎么办
英雄联盟lol正在连接服务器进不去、不动了怎么办
英雄联盟lol正在连接服务器进不去怎么办?相信应该有不少英雄联盟都曾经在游戏过程中遇到提示正在连接服务器,然后界面不动了、进不去的问题吧,接下来小编就给大家介绍一下英雄联盟lol正在连接服务器进不去不动了解决方法。
英雄联盟lol正在连接服务器进不去、不动了怎么办?相信应该有不少英雄联盟都曾经在游戏过程中遇到提示正在连接服务器,然后界面不动了、进不去的问题吧,接下来小编就给大家介绍一下英雄联盟lol正在连接服务器进不去、不动了解决方法。 1、清理IE浏览器缓存并关闭第三方游戏,重新登录游戏!2、到官网手动下载最新补丁进行更新3、删除桌面快捷方式,找到“英雄联盟TCLS\Client.exe”发送桌面快捷方式来登录游戏试试看4、重装客户端,注意一定要是最新完整版客户端
读完这篇文章后,您心情如何?
游戏攻略推荐
游戏攻略排行榜
单机游戏排行榜
1 7.4类型: 射击游戏语言: 中文大小: 2.7 GB
2 5.5类型: 动作冒险语言: 中文大小: 7.6 MB
3 7.2类型: 模拟经营语言: 中文大小: 34.3 MB
4 7.8类型: 角色扮演语言: 中文大小: 240.3 MB
5 7.2类型: 射击游戏语言: 中文大小: 414.2 MB
6 8.3类型: 动作冒险语言: 中文大小: 101.6 MB
7 6.7类型: 休闲益智语言: 中文大小: 233.0 MB
8 8.5类型: 角色扮演语言: 中文大小: 76.2 MB
9 4.8类型: 动作冒险语言: 中文大小: 1.6 GB
10 6.8类型: 休闲益智语言: 中文大小: 53.7 MB
1 7.5类型: 赛车游戏语言: 中文大小: 439.6 MB
2 7.2类型: 模拟经营语言: 中文大小: 34.3 MB
3 7.4类型: 射击游戏语言: 中文大小: 2.7 GB
4 6.7类型: 休闲益智语言: 中文大小: 233.0 MB
5 7.6类型: 角色扮演语言: 中文大小: 2.0 MB
6 7.8类型: 角色扮演语言: 中文大小: 297.8 MB
7 7.2类型: 射击游戏语言: 中文大小: 414.2 MB
8 6.1类型: 策略游戏语言: 中文大小: 18.0 MB
9 8.5类型: 角色扮演语言: 中文大小: 76.2 MB
10 6.5类型: 模拟经营语言: 中文大小: 213.8 MB
1 7.4类型: 射击游戏语言: 中文大小: 2.7 GB
2 7.2类型: 模拟经营语言: 中文大小: 34.3 MB
3 7.2类型: 休闲益智语言: 中文大小: 83.5 MB
4 6.7类型: 休闲益智语言: 中文大小: 233.0 MB
5 7.5类型: 赛车游戏语言: 中文大小: 439.6 MB
6 8.0类型: 即时战略语言: 中文大小: 1.1 GB
7 6.7类型: 动作冒险语言: 中文大小: 1.2 GB
8 7.5类型: 动作冒险语言: 中文大小: 1.4 GB
9 7.2类型: 射击游戏语言: 中文大小: 414.2 MB
10 5.5类型: 动作冒险语言: 中文大小: 7.6 MB
超多下载基地 当游网()
越当越快乐
版权所有 浙ICP备号为什么英雄联盟文件夹必须放在桌面上才能登入_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
为什么英雄联盟文件夹必须放在桌面上才能登入
英雄联盟的文件夹 我以前在桌面上的 后来放到D盘了 妆面上的英雄联盟图标(快捷方式)说 .....已改变 是否删除快捷方式, 当我把英雄联盟文件夹移动到桌面上时 快捷方式 又能用了 怎么回事啊
我有更好的答案
好好学习天天向上,原来的快捷方式 当然找不到了! 如果移动到D盘,可以删除原来的桌面快捷方式,然后在D盘的文件里 在创建一个LOL快捷方式 移动到桌面,然后点击 开撸!目测 楼主是个小朋友快捷方式 就是一个路径
他记录的目的地是桌面的文件夹, 然后你把文件夹移到D盘
采纳率:13%
因为你在桌面的文件路径依然是桌面的,你只要在桌面的无效快捷方式上右键属性把D盘主文件设置上去就可以了
文件夹移动过之后,容易产生路径识别错误,建议再重新生成一遍快捷方式图标,应该就能解决。另推荐用“英雄联盟大脚”,可以直接指定路径用插件登陆也能解决类似问题。[1]
这个因为当初快捷方式默认地址就是在桌面上,所以路径只在桌面。你重新安装此客户端在D盘。桌面就会有新的了。推荐使用英雄联盟大脚哦![1]
那是因为说你你移动了文件夹,快捷方式的指定路径变更导致的。你可以先把游戏移动到D盘,然后打开英雄联盟,找到“**:\英雄联盟\TCLS文件夹的Client.exe”在client.exe上点右键,创建快捷方式到桌面即可另外推荐你使用“英雄联盟大脚”可以直接从“英雄联盟大脚”里面启动游戏,不需要再担心找不到路径的问题了。另外“英雄联盟大脚”还有打野计时.眼睛计时,英雄皮肤更换还有查看英雄出装,视频等..非常好用![1]
你放到D盘就删了桌面上的快捷方式然后从文件夹里的启动文件发送快捷方式到桌面就行了
其他4条回答
为您推荐:
其他类似问题
英雄联盟的相关知识
换一换
回答问题,赢新手礼包【原创源码】LOL英雄联盟启动器的分析过程,以及实现源码 - 『编程语言区』
- 吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|
后使用快捷导航没有帐号?
只需一步,快速开始
请完成以下验证码
请完成以下验证码
查看: 41572|回复: 356
【原创源码】LOL英雄联盟启动器的分析过程,以及实现源码
阅读权限20
本板块禁止发布 “电子书资料” ,此类主题请发布至。
本板块禁止发布讨论和求助帖,此类主题请发布至。
本板块禁止发布 “视频教程” ,此类主题请发布至或。
本帖最后由 cfc4n 于
11:33 编辑
大家好,我是新人,请多多关照。好几年前,我有过52pojie的帐号,一直都是潜水,从来不说话。也是因为自己破解水平低,而且从业的是编程业务,工作上很少接触破解,久而久之,成了几年不能录的死号。然后被清理掉了。然后,就没有然后了。。。
这次,决定发篇文章,留个档案,脱离死号的警戒线,不至于以后被清理掉,再者,最近正好做android方便的游戏研究,借此宝地,想认识一下二进制破解的前辈,学习一下。
关于这边文章的主题,去年年底时,我在我的blog上发过,但没有公布源码,这次黑米兄赐号,我总得拿点新鲜货出来,故把源码共享出来,供其他朋友学习研究,节省时间。 以下为正文:
我算个LOL玩家吧,虽然是郊区白银段位的,虽然能1打5个电脑,但瘾不小。每次想打LOL,都找不到PC电脑,看着OSX却不能玩国服,只能玩美服、韩服。而外服的网络延迟比较大,根本没法打,跳帧严重,野怪都打不过。每次瘾来了时,总是想在OSX上也能玩,次数多了,决定试试,看看能否在OSX上玩国服。
15年10月份对LOL英雄联盟录像做过解析器在mac osx上看lol国服ob录像的技术分析,文中最后提到过关于LOL客户端架构的组成,以及在OSX上打LOL国服还是有可能的。
现状分析,League of legends有mac版本,在riot拳头运营的地区中,有韩服、美服、欧服之类国外服务器。而腾讯运营国服版,却没有OSX版本。上次的录像分析中,是腾讯运营的windows版本产生的录像文件,可以在OSX版本的美服上解析、渲染、播放,也就以为着协议是相通的,也就意味着用riot运营的OSX客户端,连接腾讯运营的服务器,应该可以正常通讯,正常游戏的。
先来看下国服League of legends英雄联盟的目录结构
Air目录为LolClient.exe所在目录,即游戏大厅目录,air的,也就是flash as的,意味着反编译比较简单…Config目录确定Cross目录为腾讯游戏必装的各种乱七八糟目录Game目录为game进程League of legends.exe所在目录log目录,我也不知道这是记录啥日志的,一直是空的logs目录,这是launcher启动器记录通讯数据的目录TCLS目录是腾讯登录SSO的客户端程序目录TQM目录,腾讯自己的,跟游戏无关
先来对比Windows跟osx上区别,riot运营的(以下以美服代表)游戏,是先选地区,再进入登录界面,再进入游戏。而腾讯运营的是先登录,再选择大区,再进入游戏。显然,腾讯运营的选大区,可以理解为riot运营的选地区,之后再进入游戏。区别是riot先选区,再登录;腾讯(以下简称国服)的先登录,再选区。先看国服在windows上流程,快捷方式打开的是TCLS\Client.exe,内嵌登录的DLL,登录之后,选大区,直接开启LolClient.exe进入对应大区游戏。而美服的登录窗口是在LolClient.exe中完成的,不难看出区别是美服手动登录,国服自动登录。显然,是LolClient.exe启动时,CLI参数包含了一些KEY,来实现了自动登录。
也就是说,问题在登录认证部分,只要我在OSX上能实现LolClient.exe的自动登录就可以…当然要在windows上获取登录的Game Signature Key,先来看下win上的进程启动信息:
果然是CLI中参数带有signature key,参数如下:
[Bash shell] 纯文本查看 复制代码Air\LolClient.exe -runtime .\ -nodebug META-INF\AIR\application.xml .\ -- 8393 gameSignatureLength=120
szGameSignature=DBF2EF3C9F53FFD8DFCD6B08C8291ED9FEA0395EEF92E1CCF80D0A76AC4B6DD4E039DB9D2B84EAC0AB881FFFCD32CCED53C44DCF698E9CD636EE732F5EC2B077F5D6006824FAA5EFF8
cltkeyLength=16 cltkey=h4.ac}w)gsq53_6Y uId= --host=hn1-new-feapp. --xmpp_server_url=hn1-new-ejabberd.
--lq_uri=https://hn1-new-login.:8443 --getClientIpURL=http://183.60.165.214/get_ip.php
可以看出,除了Air运行时参数外,还有8393数字,认证的KEY,当前大区服务器域名,xmpp聊天服务器地址,登录服务器地址之类。另外,在看下LolClient.exe的进程树:
如上图,游戏大厅进程LolClient.exe跟game进程League of legends.exe都是lol.launcher_tencent.exe的子进程。
这里的8393数字其实是LolClient.exe要连接的TCP端口,也就是lol.launcher_tencent.exe进程监听的端口, lol.launcher_tencent.exe进程再fork起LolClient.exe进程,进入游戏大厅。
游戏开局匹配时,都是在LolClient.exe中进行的,匹配完成之后 ,lol.launcher_tencent.exe又createprocess出Game\League of Legends.exe进入游戏。
那么,只要我在osx上实现一个launcher的功能,就能在osx上玩League of legends英雄联盟的国服了,感觉很兴奋的样子,继续往下看……
LolClient.exe进程进入游戏后,lol.launcher_tencent.exe进程是如何知道的呢?它又是如何决定启动League of Legends.exe进程的?在上篇在mac osx上看lol国服ob录像的技术分析中,提到过,game进程启动时,命令行参数有个端口8394,先查看进程监听列表
[Bash shell] 纯文本查看 复制代码
C:\Users\chenchi&tasklist|find &lol.launcher_tencent.exe&
lol.launcher_tencent.exe
5416 Console
C:\Users\chenchi&netstat -anto |find &5416&
127.0.0.1:8393
127.0.0.1:8393
127.0.0.1:2552
ESTABLISHED
127.0.0.1:8394
127.0.0.1:8395
从结果中,可以看到进程lol.launcher_tencent.exe监听了本地的、8395端口,而且,LolClient.exe已经连接了8393端口,也就是其启动时命令行参数中的对应数值。那么另外两个端口也应该是其他进程来连接的咯。抓本地数据包,看看他们之间有没有通讯,如看看他们通讯了什么内容:(在windows上,wireshark抓不到回环地址通讯包,可以用rawcap来抓包)
[Bash shell] 纯文本查看 复制代码
E:\crt_download\ProcessMonitor&RawCap.exe 127.0.0.1 localhost-.pcapng
Sniffing IP : 127.0.0.1
: localhost-.pcapng
之后,wireshark打开这个文件,可以看到如下TCP数据包:
[C] 纯文本查看 复制代码
00 00 00 01 00 00 00
04 00 00 00 00 00 00 00 ........ ........
00 00 00 01 00 00 00
04 00 00 00 00 00 00 00 ........ ........
00 00 00 01 00 00 00
05 00 00 00 00 00 00 00 ........ ........
00 00 00 01 00 00 00
00 00 00 00 34 00 00 00 ........ ....4...
34 2e 31 37 2e 32 33
2e 39 34 20 35 31 35 36 14.17.23 .94 5156
51 62 77 41 34 73 6f
42 38 4a 71 37 43 4f 45
QbwA4so B8Jq7COE
2b 31 78 63 34 67 3d
3d 20 34 30 30 36 33 31 Q+1xc4g= = 400631
从协议包结果上来看,对比发送、接收的4个包作为例子,不难看出,他们的数据包格式拆分为前8bytes10 00 00 00 01 00 00 00为固定值(暂且认为是固定值);后面4bytes04 00 00 00、05 00 00 00为一段;再后面的4bytes00 00 00 00、34 00 00 00为另一段;最后一部分的Nbytes长度31 34 2e 31 37 2e 32 33 2e 39 34 20 35 31 35 36 20 51 62 77 41 34 73 6f 42 38 4a 71 37 43 4f 45 51 2b 31 78 63 34 67 3d 3d 20 34 30 30 36 33 31 39 32 33 32为最后一段;以第4个通讯包来看,第三段的对应数值是0x34,显然是LittleEndian小端字节序,显然后面的 – 部分数据长度也是0x34个,也就是说,协议通讯格式的第三段表示后面消息包长度的含义,第四段就是主体消息正文。第一段、第二段都是消息头的部分。第二段多数为command指令。暂且这么假设,那么通讯协议包格式确定了,接下来就要确认下每个command对应的业务含义了。先看下LolClient.exe进程发给launcher,跟League of legends.exe发给launcher进程的TCP数据包,初步确认下我对协议包格式的判断是否正确
如何查找command的类型一共有多少种?如何确认每种command的意义?记得最初LOL目录结构里提到大厅客户端LolClient.exe是flash air的,反编译比较方便,入口文件是LolClient.swf,跟下去是mod/win/ClientWindow.dat,然后加载了&^*($#@#,as代码太乱了,而且,都分布在各个小的flash中,目录还不统一,拓展名还都是dat的,还得手动改成swf,反编译工具才能选它,as代码也不好理解,检索麻烦,索性直接反编译lol.launcher_tencent.exe进程吧。
的导入lol.launcher_tencent.exe进程后,在imports中看到 Maestro_Remove、…等来自RiotLauncher这个library
再静态分析RiotLauncher.dll,在Exports里看到Maestro_MessageTypeToString函数
跟进,看到MAESTROMESSAGETYPE_GAMECLIENT_CREATE等字样
[C] 纯文本查看 复制代码
signed int __cdecl Maestro_MessageTypeToString(int a1, char *a2, rsize_t a3)
char *v4; // [sp-8h] [bp-8h]@2
switch ( a1 )
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_CREATE&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_STOPPED&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_CRASHED&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_ABANDONED&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_LAUNCHED&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_VERSION_MISMATCH&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_CONNECTED_TO_SERVER&;
v4 = &MAESTROMESSAGETYPE_CLOSE&;
v4 = &MAESTROMESSAGETYPE_HEARTBEAT&;
v4 = &MAESTROMESSAGETYPE_REPLY&;
v4 = &MAESTROMESSAGETYPE_LAUNCHERCLIENT&;
v4 = &MAESTROMESSAGETYPE_CHATMESSAGE_TO_GAME&;
v4 = &MAESTROMESSAGETYPE_CHATMESSAGE_FROM_GAME&;
v4 = &MAESTROMESSAGETYPE_PLAY_REPLAY&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_CREATE_VERSION&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_INSTALL_VERSION&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_CANCEL_INSTALL&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_INSTALL_PROGRESS&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_INSTALL_PREVIEW&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_CANCEL_PREVIEW&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_PREVIEW_PROGRESS&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_UNINSTALL_VERSION&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_CANCEL_UNINSTALL&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_UNINSTALL_PROGRESS&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_UNINSTALL_PREVIEW&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_CANCEL_UNINSTALL_PREVIEW&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_PREVIEW_UNINSTALL_PROGRESS&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_ENUMERATE_INSTALLED_VERSIONS&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_CREATE_CLIENT_AND_PRELOAD&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_UPDATE_PRELOADED_GAME_WITH_CREDENTIALS&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_INITIAL_PRELOAD_COMPLETE&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_UPDATE_PLAYER_CONNECTION&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_PLAY_PRELOADED_GAME&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_GAME_LOADING_COMPLETE&;
v4 = &MAESTROMESSAGETYPE_KILL_GAMECLIENT_PROCESS&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_ENUMERATE_UNINSTALLABLE_VERSIONS&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_ENUMERATE_LATEST_VERSIONS&;
v4 = &MAESTROMESSAGETYPE_GAMECLIENT_INSTALLED_GAME_VERSION_SIZE&;
v4 = &MAESTROMESSAGETYPE_INVALID&;
sub_, a3, v4);
至此,可以看到lol launcher的协议指令类型都在这里。再看看哪里调用了Maestro_MessageTypeToString函数:
[C] 纯文本查看 复制代码
signed int __cdecl MaestroMessageAgent_SendMessage(int a1, int a2, const char *a3)
unsigned int v4; // [sp+24h] [bp-28Ch]@2
char v5; // [sp+28h] [bp-288h]@12
char v6; // [sp+168h] [bp-148h]@12
v4 = strlen(a3);
if ( !*(_DWORD *)(a1 + 16) )
Maestro_Log(2, &Cannot send messages when the MessageAgent isn't started.\n&);
sub_1001FE7A(*(_DWORD *)(a1 + 12));
if ( !sub_) || a3 && !sub_) )
sub_10027FBA();
sub_10027FBA();
if ( *(_DWORD *)(a1 + 36) == 1 || a2 != 4 && a2 != 5 )
Maestro_MessageTypeToString(a2, &v5, 0x140u);
sub_10027D05(&v6, 320, &SendMessage [%s]\n&, &v5);
Maestro_Log(0, &v6);
再看看MaestroMessageAgent_SendMessage的调用处:
[C] 纯文本查看 复制代码
signed int __cdecl MaestroGameController_SendGameConnectedToServerMessage()
if ( dword_ )
result = MaestroMessageAgent_SendMessage(**(_DWORD **)dword_, 10, NULL);
Maestro_Log(2, &MaestroGameControllerStruct is not yet initialized.\n&);
result = 0;
从MaestroGameController_SendGameConnectedToServerMessage函数名的字面含义上理解,此函数为『当游戏连接到服务器时,发送消息』,继续跟进…可是,我静态分析水平比较弱,越是继续跟进,我的思路越混乱,决定另辟蹊径。
在文中最初的LOL目录结构中,有个Logs目录,这个目录下Maestro Logs目录中的maestro-server.log、maestro-game_client.log中有一些日志,是开发人员用来排查调试程序执行结果的信息,大约如下:
[C] 纯文本查看 复制代码INFO: maestro [server] initializing...
INFO: New thread go!
INFO: Starting Process Thread Spinning
INFO: Using registered HWND:
to launch the air client.
INFO: StartProcess [MAESTROPROCESSTYPE_AIR] successful
INFO: Launcher init of maestro completed.
INFO: ReceiveMessage [MAESTROMESSAGETYPE_GAMECLIENT_CREATE]
INFO: New thread go!
INFO: Starting Process Thread Spinning
INFO: StartProcess [MAESTROPROCESSTYPE_GAME] successful
INFO: ReceiveMessage [MAESTROMESSAGETYPE_GAMECLIENT_LAUNCHED]
INFO: SendMessage [MAESTROMESSAGETYPE_GAMECLIENT_LAUNCHED]
INFO: ReceiveMessage [MAESTROMESSAGETYPE_GAMECLIENT_CONNECTED_TO_SERVER]
INFO: SendMessage [MAESTROMESSAGETYPE_GAMECLIENT_CONNECTED_TO_SERVER]
INFO: ReceiveMessage [MAESTROMESSAGETYPE_CHATMESSAGE_FROM_GAME]
INFO: SendMessage [MAESTROMESSAGETYPE_CHATMESSAGE_FROM_GAME]
INFO: ReceiveMessage [MAESTROMESSAGETYPE_CHATMESSAGE_TO_GAME]
INFO: SendMessage [MAESTROMESSAGETYPE_CHATMESSAGE_TO_GAME]
INFO: ReceiveMessage [MAESTROMESSAGETYPE_CHATMESSAGE_TO_GAME]
INFO: SendMessage [MAESTROMESSAGETYPE_CHATMESSAGE_TO_GAME]
INFO: ReceiveMessage [MAESTROMESSAGETYPE_GAMECLIENT_ABANDONED]
INFO: SendMessage [MAESTROMESSAGETYPE_GAMECLIENT_ABANDONED]
INFO: [MaestroMessageAgent_ReadFromSocketInternal] 操作成功完成。
WARNING: Received 0 bytes on Maestro socket when data was expected.
INFO: ReceiveMessage [MAESTROMESSAGETYPE_CLOSE]
INFO: SendMessage [MAESTROMESSAGETYPE_CLOSE]
INFO: maestro exiting...
这里确实可以对应着launcher协议中,某些command被接收后,会被记录到这里。如何确认每个日志记录指令对应是哪个TCP包发送后的结果呢?如何利用这些日志信息呢?如果windows上有类似linux的strace查看系统调用的工具就好了,你还别说,还真有一款功能类似的,就是ProcessMonitor,有了这工具,我就可以看到lol.launcher.tencent.exe进程在何时发送TCP数据包,发送后写了哪个文件数据,写了什么内容,先写日志还是先发TCP数据包。。。
如上图,可以看到先发TCP包,还是先写日志文件,哪个进程发,哪个进程写。但还有一点要确认的是,发的TCP包的内容如何跟写的日志内容配对问题,显然,ProcessMonitor工具里有些更有用的信息,你可能没注意到进程每次发包后,会记录发的包大小;进程每次写入文件数据时,会记录写时的offset以及写入文件长度,根据launcher进程写日志时,获取的offset位置,可以找到对应maestro-server.log文件的offset,再根据写入文件时的length数值,可以确定写入内容是什么。那么,机智的你不难看出,写入日志内容的字面含义,很容易确认了TCP数据包中对应的command代表的含义,也明白了command代表的业务逻辑。
好了,lol.launcher_tencent.exe的功能大约理清楚了,再来回顾下League of Legends的客户端架构,以及猜测下服务端架构,根据我的理解,我画了一副图
架构图中的虚线部分,为服务器之间节点通讯,是我的猜测,并不是想客户端部分那样,按照分析客户端通讯得来的架构图。可能不准确。
匹配请求处理服务器,用来处理客户端的登录认证、符文、天赋修改、英雄列表,进入战斗的匹配请求等。匹配服务器,应该是整个大区用同一个,这里会预算所有与大区玩家相关的数据,战斗力匹配,寻找想匹配对手,划分到对应服务器中。这是核心点,也是瓶颈点。房间管理服务器,应该要独立拆分出来,与匹配服务器解耦,与战场服务器解耦。当匹配服务器完成后,只要将匹配结果的10名玩家,玩家的符文、天赋配置等发送给房间管理服务器,然后由房间管理服务器去创建对战进程,再获取对战服务器的IP PORT 以及每个人的加密KEY(也应该是认证该角色的凭证),比如“14.17.23.94 5156 QbwA4soB8Jq7COEQ+1xc4g== ”发送给每一个客户端。客户端拿到消息,再发送给lol.launcher.tencent.exe,再有它启动游戏进程。房间管理服务器都是可以横向扩展的,尤其是游戏服务器,更是可以横向扩展,单个游戏进程,只跟本次游戏中的10个玩家有关。
port范围,也就是说单台服务器最多开500个端口,也就是500场战斗,以每场战斗10个人来算,单台服务器是5000人的承载。实际上可能要依赖服务器的性能承载。15年初网上消息LOL同时在线750W,时隔1年,国服现在同时在线有多少人?能承载多少玩家同时在线?匹配服务器虽然是很难拆分的节点,但业务比较单一,CPU密集型,应该大概也许可能不难解决。其他节点,拓展起来就更方便了,堆堆服务器应该可以解决。当然,我没坐过类似的客户端游戏架构,只是基于页游、手游的经验猜。
回到正题,LOL launcher的业务确定了,与另外两个进程通讯的协议格式也确定了,看看实现时,我要怎么做
监听系统信号的线程监听TCP 8393端口,等待LolClient.exe连接监听TCP 8394端口,等待League of legends.exe连接监听TCP 8395端口?暂时不监听了,目前不知道这端口是干啥的启动client的线程保持与client的心跳线程启动game的线程保持跟game的心跳线程接收来自game消息的心跳线程处理client消息转发到game的线程处理game消息转发到client的线程
解析协议数据包,获取command,数据包长度,数据包内容
[Golang] 纯文本查看 复制代码
type Header struct {
uint32 //默认0x10
uint32 //默认0x01
pCommand uint32 //默认0x00
uint32 //默认0x00
func (head *Header) Read(buf []byte) {
head.pHead0 = binary.LittleEndian.Uint32(buf[:4])
head.pHead1 = binary.LittleEndian.Uint32(buf[4:8])
head.pCommand = binary.LittleEndian.Uint32(buf[8:12])
head.pLength = binary.LittleEndian.Uint32(buf[12:16])
type LolLauncherPacket struct {
pHead Header
pData []byte
分析command,心跳包直接回复。与game无关消息包,直接回复MAESTROMESSAGETYPE_REPLY类型已收到该消息。
[Golang] 纯文本查看 复制代码
func (this *LolLauncherClientCallback) OnMessage(c *gotcp.Conn, p gotcp.Packet) bool {
packet := p.(*LolLauncherPacket)
data := packet.GetData()
commandType := packet.GetCommand()
switch commandType {
case MAESTROMESSAGETYPE_GAMECLIENT_CREATE:
// 0x00 存储data数据,此数据为League of legends 启动参数
c.AsyncWritePacket(NewLolLauncherPacket(MAESTROMESSAGETYPE_REPLY, []byte{}), 0)
log.Println(&LOGIN KEY:&, string(data))
////启动游戏进程
this.PacketSendChanToMain &- packet
case MAESTROMESSAGETYPE_CLOSE:
//0x03 游戏进程退出
this.PacketSendChanToMain &- packet
case MAESTROMESSAGETYPE_HEARTBEAT:
//0x04 回复收到心跳
c.AsyncWritePacket(NewLolLauncherPacket(MAESTROMESSAGETYPE_REPLY, []byte{}), 0)
case MAESTROMESSAGETYPE_REPLY:
//0x05 不处理(一般不会有这种消息)
case MAESTROMESSAGETYPE_CHATMESSAGE_TO_GAME:
//0x0b 来自游戏大厅的消息,需要转发至游戏进程
this.PacketSendChanToMain &- packet
//MAESTROMESSAGETYPE_INVALID
log.Println(&Client-&OnMessage-&MAESTROMESSAGETYPE_INVALID:&, commandType, & -- &, packet.pHead, & -- &, data)
部分消息需要转发给game进程,走chan转发,比如进入游戏后,好友还是可以在游戏大厅发消息到正在游戏中的玩家的,聊天消息转发MAESTROMESSAGETYPE_CHATMESSAGE_TO_GAME 就是从client发到launcher,再有launcher转发至game的。
处理client消息转发到game的线程、处理game消息转发到client的线程
[Golang] 纯文本查看 复制代码//监听客户端通道消息
go func() {
packet := &-clientPacketChan.packetSendChanToMain
data := packet.GetData()
commandType := packet.GetCommand()
switch commandType {
case proto.MAESTROMESSAGETYPE_GAMECLIENT_CREATE:
//获取参数,启动游戏进程
go lolCommands.LolGameCommand(strconv.Itoa(int(lolgame_port)), string(data))
//消息发送至game客户端
case proto.MAESTROMESSAGETYPE_CLOSE:
// 0X03 游戏关闭
case proto.MAESTROMESSAGETYPE_HEARTBEAT:
//0x04 回复收到心跳
case proto.MAESTROMESSAGETYPE_REPLY:
//0x05 确认收到消息包的回复(可以不做处理)
case proto.MAESTROMESSAGETYPE_CHATMESSAGE_TO_GAME:
//0x0b 来自游戏大厅的消息,需要转发至游戏进程(在ClientCallback中实现)
gamePacketChan.packetReceiveChanFromMain &- packet
//MAESTROMESSAGETYPE_INVALID
log.Println(&Client(main)-&OnMessageFromMain-&MAESTROMESSAGETYPE_INVALID:&, commandType, & -- &, packet.GetHeader(), & -- &, data)
当然,还得再启动两个线程来接收launcher转发来的消息,
[Golang] 纯文本查看 复制代码func (this *LolLauncherClientCallback) OnMessageFromMain(c *gotcp.Conn) {
packet := &-this.PacketReceiveChanFromMain
data := packet.GetData()
commandType := packet.GetCommand()
switch commandType {
case MAESTROMESSAGETYPE_GAMECLIENT_ABANDONED:
c.AsyncWritePacket(packet, 0)
case MAESTROMESSAGETYPE_GAMECLIENT_LAUNCHED:
c.AsyncWritePacket(packet, 0)
case MAESTROMESSAGETYPE_GAMECLIENT_CONNECTED_TO_SERVER:
//0XOA 连接到服务器
c.AsyncWritePacket(packet, 0)
case MAESTROMESSAGETYPE_CHATMESSAGE_TO_GAME:
//0x0b 来自游戏大厅的消息,需要转发至游戏进程(在ClientCallback中实现)
c.AsyncWritePacket(packet, 0)
case MAESTROMESSAGETYPE_CHATMESSAGE_FROM_GAME:
c.AsyncWritePacket(packet, 0)
//MAESTROMESSAGETYPE_INVALID
log.Println(&Client-&OnMessageFromMain-&IGNOREMESSAGE:&, commandType, & -- &, packet.pHead, & -- &, data)
等等等等,一系列代码写完后,本以为终于可以在osx上玩LOL国服了,没想到,我还是太年轻,想的太简单了。程序启动LolClient.exe之后就假死了,一番排查后,发现是TCP粘包问题
尼玛,是LolClient.exe发送给launcher.exe的TCP数据包分了两个TCP包发送的,尼玛,100个字节都不到,还分两个字节,尼玛。。累不累?
一系列代码写完后,本以为终于可以在osx上玩LOL国服了,没想到,我还是太年轻,想的太简单了。我写的lol launcher启动Lolclient.exe没问题,符文、天赋编辑也都没问题。但启动League of legends.exe时,却进程崩溃退出了,而我却百思不得其解,为什么?通信协议一样的,发送command时机一样的,为什么会崩溃呢?这突然的失败,让我思路中断,思绪全无,不知道如何进行下去。。。。。。冥冥中,我记得在静态分析lol.launcher.tencent.exe时,看到了一个特殊的函数名
再回到ProcessMonitor中看看League of legends.exe启动时的环境变量是什么
显然是__COMPAT_LAYER=ElevateCreateProcess
在OSX上,也找下环境变量是什么获取LeagueOfLegends.app进程执行时的环境变量,去除系统默认的几个,剩下的,就是游戏自己添加的
[Bash shell] 纯文本查看 复制代码cfc4n@cnxct:~$ ps -ef|grep League
4:37下午 ??
0:00.55 /Applications/League of Legends.app/Contents/LoL/RADS/solutions/lol_game_client_sln/releases/0.0.0.193/deploy/LeagueOfLegends.app/Contents/MacOS/LeagueofLegends 8394 LoLPatcher /Applications/League of Legends.app/Contents/LoL/RADS/projects/lol_air_client/releases/0.0.0.210/deploy/bin/LolClient 182.162.122.113 5102 yvqljG4isLEGWoQS4WEEUA==
cfc4n@cnxct:~$ ps -wwE -p 3955
0:24.44 /Applications/League of Legends.app/Contents/LoL/RADS/solutions/lol_game_client_sln/releases/0.0.0.193/deploy/LeagueOfLegends.app/Contents/MacOS/LeagueofLegends 8394 LoLPatcher /Applications/League of Legends.app/Contents/LoL/RADS/projects/lol_air_client/releases/0.0.0.210/deploy/bin/LolClient 182.162.122.113 5102 yvqljG4isLEGWoQS4WEEUA==
LOGNAME=cfc4n SHELL=/bin/bash USER=cfc4n riot_launched=true SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.8MjNgu5Xfd/Listeners XPC_SERVICE_NAME=com.riotgames.MacContainer.67552 HOME=/Users/cfc4n __CF_USER_TEXT_ENCODING=0x1F5:0x19:0x34 TMPDIR=/var/folders/dn/qvv6vmxd6c5g8bf6t0dtwwcw0000gn/T/ PATH=/usr/bin:/bin:/usr/sbin:/sbin Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.ZBoYrDDTEF/Render XPC_FLAGS=0x0
//对其格式,如下
LOGNAME=cfc4n
SHELL=/bin/bash
USER=cfc4n riot
launched=true
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.8MjNgu5Xfd/Listeners
XPC_SERVICE_NAME=com.riotgames.MacContainer.67552
HOME=/Users/cfc4n
__CF_USER_TEXT_ENCODING=0x1F5:0x19:0x34
TMPDIR=/var/folders/dn/qvv6vmxd6c5g8bf6t0dtwwcw0000gn/T/
PATH=/usr/bin:/bin:/usr/sbin:/sbin
Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.ZBoYrDDTEF/Render
XPC_FLAGS=0x0
[Golang] 纯文本查看 复制代码func (this *launcher_commands) LolGameSetenv() {
var LolEnvKeys = [12]string{&LOGNAME&, &SHELL&, &USER&, &SSH_AUTH_SOCK&, &XPC_SERVICE_NAME&, &HOME&, &__CF_USER_TEXT_ENCODING&, &TMPDIR&, &PATH&, &Apple_PubSub_Socket_Render&, &XPC_FLAGS&, &riot_launched&}
var LolEnvs map[string]string
LolEnvs = make(map[string]string)
for _, v := range LolEnvKeys {
switch v {
case &riot_launched&:
LolEnvs[v] = &true&
case &XPC_SERVICE_NAME&:
LolEnvs[v] = &com.riotgames.MacContainer.67552&
LolEnvs[v] = os.Getenv(v)
os.Clearenv()
for k1, v1 := range LolEnvs {
os.Setenv(k1, v1)
一系列代码写完后,本以为终于可以在osx上玩LOL国服了,没想到,我还是太年轻,想的太简单了。除了程序执行时的环境变量外,还有一个程序执行时的当前目录:
[Bash shell] 纯文本查看 复制代码cfc4n@cnxct:~$ ps -ef|grep League
4:34下午 ??
0:04.64 /Applications/League of Legends.app/Contents/LoL/RADS/system/UserKernel.app/Contents/MacOS/UserKernel updateandrun lol_launcher LoLLauncher.app
4:34下午 ??
0:00.32 /Applications/League of Legends.app/Contents/LoL/RADS/projects/lol_launcher/releases/0.0.0.170/deploy/LoLLauncher.app/Contents/MacOS/LoLLauncher
4:34下午 ??
0:00.24 /Applications/League of Legends.app/Contents/LoL/RADS/projects/lol_patcher/releases/0.0.0.42/deploy/LoLPatcher.app/Contents/MacOS/LoLPatcher
4:34下午 ??
0:02.26 /Applications/League of Legends.app/Contents/LoL/RADS/projects/lol_air_client/releases/0.0.0.210/deploy/bin/LolClient -runtime .\ -nodebug META-INF\AIR\application.xml .\ -- 8393
4:37下午 ??
0:00.55 /Applications/League of Legends.app/Contents/LoL/RADS/solutions/lol_game_client_sln/releases/0.0.0.193/deploy/LeagueOfLegends.app/Contents/MacOS/LeagueofLegends 8394 LoLPatcher /Applications/League of Legends.app/Contents/LoL/RADS/projects/lol_air_client/releases/0.0.0.210/deploy/bin/LolClient 182.162.122.113 5102 yvqljG4isLEGWoQS4WEEUA==
4:34下午 ttys000
0:00.00 grep League
cfc4n@cnxct:~$ lsof -a -d cwd -p 3828
TYPE DEVICE SIZE/OFF
UserKerne 3828 cfc4n
/Applications/League of Legends.app/Contents/LoL/RADS/projects/lol_launcher/releases/0.0.0.170/deploy
cfc4n@cnxct:~$ lsof -a -d cwd -p 3847
TYPE DEVICE SIZE/OFF
LoLLaunch 3847 cfc4n
/Applications/League of Legends.app/Contents/LoL/RADS/projects/lol_launcher/releases/0.0.0.170/deploy
cfc4n@cnxct:~$ lsof -a -d cwd -p 3848
TYPE DEVICE SIZE/OFF
LoLPatche 3848 cfc4n
/Applications/League of Legends.app/Contents/LoL/RADS/projects/lol_patcher/releases/0.0.0.42/deploy
cfc4n@cnxct:~$ lsof -a -d cwd -p 3871
TYPE DEVICE SIZE/OFF
LolClient 3871 cfc4n
/Applications/League of Legends.app/Contents/LoL/RADS/projects/lol_air_client/releases/0.0.0.210/deploy/bin
cfc4n@cnxct:~$ lsof -a -d cwd -p 3955
TYPE DEVICE SIZE/OFF
LeagueofL 3955 cfc4n
/Applications/League of Legends.app/Contents/LoL/RADS/solutions/lol_game_client_sln/releases/0.0.0.193/deploy
记得要chdir一下,这么改进后,本以为终于可以在osx上玩LOL国服了,没想到,它确实在windows上登录国服,终于运行起来了
它也在OSX上登录美服,成功运行起来了
那么我只要把OSX上启动LolClient的命令行参数改为国服的参数,就可以登录国服,玩国服游戏咯,尝试一下
果然可以,我情不自禁的开始佩服我的聪慧,机智,下一步就开房间,匹配打国服了?然而,我还是太年轻,想的太简单了。程序启动League of Legend.app时出错了,进不去,日志中记录
[Bash shell] 纯文本查看 复制代码|
0.0000kb added| ALWAYS| r3dRenderLayer::RecreateOwnedResources
0.0000kb added| ALWAYS| r3dRenderLayer::InitResources exit successfully
0.0000kb added| ALWAYS| Waiting for client ID
0.0000kb added| ALWAYS| {&messageType&:&riot__game_client__connection_info&,&message_body&:&Hard Connect&}
0.0000kb added| ALWAYS| Received client ID
0.0000kb added| ALWAYS| Set focus to app
0.0000kb added| ALWAYS| Input started
0.0000kb added| ALWAYS| Query Status Req started
0.0000kb added| ALWAYS| Query Status Req ended
0.0000kb added| ALWAYS| Waiting for server response...
之后,游戏进程就报错退出了。我太年轻了,想的太简单了……可是,我好像已经不年轻了……
这到底是为什么,玩个游戏怎么这么难,这么难?我只是想玩个游戏而已,为什么这么难?腾讯LOL项目组的朋友,能不能告诉我,你们还验证了什么?很明显不是版本号,是不是操作系统?是不是拒绝了OSX的登录? 曾经,我曾尝试过从协议上入手,看看LOL游戏协议能不能搞定,可难度比较大,花了好几个星期的空余时间,大约确认了是UDP Enet协议格式,后来,也在网上搜到相关信息,确认了。但网上公开的协议格式,是4.23以前的,现在都6.*的版本,早就改了….唉,以后再说吧…
最后,OSX上,美服启动成功。国服启动失败。WINDOWS上,国服启动成功,美服未测。
代码地址: LOL启动器的github地址 :/cfc4n/lol_launcher
求认识android 逆向反编译的大神,谢谢。
国服和美服游戏版本不同步&
/thread-694-1-1.html
看看跟你写的一样么..&
好帖子,不能沉下去&
搞不懂他有什么用,,,但感觉好牛逼&
离lol全屏秒杀 透视已经不远了 大神继续努力&
吾爱币 +219
热心值 +190
我很赞同!
谢谢@Thanks!
谢谢@Thanks!
吾爱破解论坛有你更精彩!
我果然还是太年轻了,还要回炉再造几年!
用心讨论,共获提升!
收藏慢慢研究。
用心讨论,共获提升!
一脸萌比的进来一脸萌比的出去。
一脸萌比的进来一脸萌比的出去
ID很牛:‘又让我看行李’
热心回复!
我很赞同!
热心回复!
看起来很厉害的样子
看不懂,但貌似很牛b
我很赞同!
楼主可以尝试一下替换外服的league of legends.exe文件
用心讨论,共获提升!
用心讨论,共获提升!
用心讨论,共获提升!
鼓励转贴优秀软件安全工具和文档!
我看不懂,但是感觉好流弊
用心讨论,共获提升!
我的舍友问我为什么要跪着看电脑
我很赞同!
果然我还是太年轻了
我很赞同!
我很赞同!
我很赞同!就是没看懂
楼主可以告诉下我你的联系方式吗,我有点东西想咨询你
感谢发布原创作品,吾爱破解论坛因你更精彩!
用心讨论,共获提升!
感谢发布原创作品,吾爱破解论坛因你更精彩!
太牛了,年轻的大神,请收下我的膝盖
让我跪一会。。。
别费劲了。。装虚拟机吧
别问我为什么跪着玩电脑,让我静静的跪一会
+1+1+1+1+1+1+1+1+1
热心回复!
我特地登录账号上来评个分
欢迎分析讨论交流,吾爱破解论坛有你更精彩!
看得我瓜子都掉了
楼主已经很厉害了
我很赞同!
我太年轻了,想的太简单了……这句话太经典了
大神请收下我的膝盖,虽然我看不懂
虽然看不懂,但是好像很牛B的样子
好猛的技术 评分不给你我都过意不去
TP加载检测。
看起来很牛逼
这是我的膝盖!
用心讨论,共获提升!
用心讨论,共获提升!
建议你可以用用Ezbot
看看看他是什么原理
热心回复!
谢谢@Thanks! 那么牛逼咋不去鹅厂上班 我已经帮你艾特了运营组了
TM全屏蘑菇指日可待
你这个没有考虑一下TX的大TP耗资源系统吗
用心讨论,共获提升!OS:虽然我一点都看不懂 不过好厉害
用心讨论,共获提升!
我也想学,可是.....
妈妈问我为什么跪着玩电脑
国服有TP的...所以...
感谢你思路,让我得到了不少启示。
不明觉厉。。。
我很赞同!
膜拜大神!
虽然我看不懂,但是感觉很厉害的样子。
我很赞同!
其实我也蛮年轻的,就是没楼主那么吊罢了,楼主加油
鼓励转贴优秀软件安全工具和文档!
谢谢@Thanks!
看起来好厉害的样子,简直是在看天书。。。
真的是强大啊,看来我还是太年轻了
我很赞同!
感谢发布原创作品,吾爱破解论坛因你更精彩!
腾讯有tptptptptptptpt!!
我已经看到德玛的大招变成全屏的了
谢谢@Thanks!
反正我是没看懂
很厉害就是了
总之,看不懂的贴就是好贴
谢谢大神的分享,让我对目前困扰的LOL特权限制问题有新的思路,让我眼前一.
佩服!虽败尤胜!!
谢谢@Thanks!
热心回复!
感谢发布原创作品,吾爱破解论坛因你更精彩.
大神都这么玩LOL的
本帖被以下淘专辑推荐:
& |主题: 192, 订阅: 45
& |主题: 74, 订阅: 11
& |主题: 26, 订阅: 7
& |主题: 6, 订阅: 0
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限30
直接把我看成了懵逼。。
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
好长的文档,先回复,再拜读
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
厉害,感谢分享~
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限25
卧槽,大神这么屌,我虽然看不懂,但是我要前排出售瓜子饮料矿泉水
我要喝雪碧。
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限20
我草,牛逼,我代表腾讯LOL事业部欢迎楼主如此牛逼的操作教程
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
虽然看不懂 但是觉得很牛逼
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
看不懂,但是感觉很厉害的样子。
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
小白表示看不懂,但赶脚很牛逼啊
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
看不懂的路过
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
叼叼叼,牛逼
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
免责声明:吾爱破解所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。
( 京ICP备号 | 京公网安备 87号 )
Powered by Discuz!
Comsenz Inc.

我要回帖

更多关于 英雄连闪电战快捷方式 的文章

 

随机推荐