吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 19562|回复: 254
上一主题 下一主题
收起左侧

[游戏安全] 来聊聊LOL的换肤是如何实现

    [复制链接]
跳转到指定楼层
楼主
六哥。 发表于 2023-5-18 00:33 回帖奖励

1.游戏介绍

从上图我们可以知道,LOL是MOBA类型的游戏,MOBA类型的游戏分析学会,那么其他MOBA类型的游戏也就非常easy。

进入正题:

2.前戏(需要准备的数据)

皮肤编号
MOBA类型的游戏皮肤都是有自己的ID编号的,一般默认皮肤的ID为0。之后的皮肤按照顺序每次递增1。同理手游的王者荣耀也是moba类型游戏,皮肤ID也同样可以这样,默认的皮肤ID为0,往右边数每次递增1。

检测皮肤的机制
MOBA检测游戏皮肤,会在角色死亡重生之时检测皮肤ID与对应的角色名称,而皮肤ID与名称通过键值对形式存储。说人话就是:男的不能穿女的衣服,女的不能穿男的衣服,不是人的不能穿人的衣服,人不能穿不是人的衣服,每次复活都会重新校验你的皮肤,也是为了防止有人篡改皮肤数据,如下自己画的抽象图(不怎么玩LOL,用同类型王者荣耀做个栗子,皮肤是随便想着写的,并没有按照游戏中皮肤顺序写!)

3.上操作

3.1:查找换肤call可以通过皮肤ID或者是名称进行访问下段调试,如果通过皮肤ID,需要借助换肤插件,原皮搜0,换第二个皮肤搜1,第三个搜2以此类推。或者原皮搜索0,换皮肤搜索变动的,没有换搜索未变动,在0与变动和未变动三者去筛选数据。这里楼主采用名称下端访问。如下图,右键名称地址,查找谁访问了该地址:

00580F12 - 8A 01  - mov al,[ecx]      //这里我们直接看下汇编代码
01378857 - 8B 16  - mov edx,[esi]
0137886D - 8A 06  - mov al,[esi]
00DD9A4B - 80 3E 00 - cmp byte ptr [esi],00
00DD9A51 - 80 3B 00 - cmp byte ptr [ebx],00
00DD9A80 - 8A 06  - mov al,[esi]
01391191 - 8A 07  - mov al,[edi]

我们对此处下断

00580F12 - 8A 01  - mov al,[ecx]



下段之后,ecx保存的是人物名称,循环每次递减,那么此处的代码以及第一个call就是作为校验名称的。我们继续往下走,发现第二个call的参数调用了人物基址与名称,那么我们直接F7跟进第二个call,一直往下走跳过上面的判断,上面都是一些无用的参数,一直走到下面的地址,edi保存的是人物基址,那么换肤call就是在该地址下了,我们F7跟进call(忘记截图了,我把地址粘贴出来)

League of Legends.exe+18CBD5 - 8D 8F 182B0000        - lea ecx,[edi+00002B18]

进入call之后

League of Legends.exe+11CE5E - 8B 46 18              - mov eax,[esi+18] { eax=0,这里是默认的原皮ID }
League of Legends.exe+11CE61 - 8B CB                 - mov ecx,ebx { 这里的ecx保存的就是人物基址,可以往上找ebx的来源 }
League of Legends.exe+11CE63 - 6A 01                 - push 01 { 固定值 }
League of Legends.exe+11CE65 - 89 43 24              - mov [ebx+24],eax { eax是皮肤的ID }
League of Legends.exe+11CE68 - E8 23B2FEFF           - call "League of Legends.exe"+108090 { 换肤call }

这里往上找ebx来源

League of Legends.exe+11CE46 - 8B D9                 - mov ebx,ecx

ebx来源于ecx,到了程序头部,没有找到ecx来源,下段跳出。

发现ecx来源于:

League of Legends.exe+18CBD5 - 8D 8F 182B0000        - lea ecx,[edi+00002B18]

其中edi保存的就是人物地址。那么我们完整的换肤call就找到了。

可以使用注入工具,注入代码执行。也可以HOOK,HOOK的好处就是人物死亡之后,皮肤不会恢复原皮。这里就不演示效果了,把写好的CT代码粘贴出来,你们自行研究。

[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem,2048)        
alloc(id,2048)          //申请内存
label(returnhere)
label(originalcode)
label(exit)
registersymbol(id)  //人造指针

newmem: //this is allocated memory, you have read,write,execute access
//place your code here

originalcode:
push 01
mov eax,[id]          //通过CE添加ID,修改皮肤
mov [ebx+24],eax

exit:
jmp returnhere

"League of Legends.exe"+11CE63:
jmp newmem
returnhere:

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"League of Legends.exe"+11CE63:
push 01
mov [ebx+24],eax
//Alt: db 6A 01 89 43 24

不过还有一个问题,使用换肤call后防御塔以及小兵都会改变皮肤,也就是说防御塔、小兵、人物共同使用一个皮肤call,小兵多次死亡调用会导致游戏崩溃情况,所以需要自行判断edi是否是人物基址,是就执行换肤,不是就跳过。

4.结束

大家还想聊什么,可以回复,视情况而定。还有关于CE不能调试LOL问题,自行下载编码,重新编译DBK64.sys驱动文件,改个名字即可。


免费评分

参与人数 81吾爱币 +75 热心值 +67 收起 理由
aaaaaoen + 1 + 1 我很赞同!
shaow + 1 + 1 谢谢@Thanks!
TrumanZero + 1 热心回复!
sanbuqianjin + 1 + 1 谢谢@Thanks!
elizabethliu + 1 我很赞同!
racham123 + 1 谢谢@Thanks!
simpletree2023 + 1 谢谢@Thanks!
Phantaminuam. + 1 我很赞同!
steven666 + 1 + 1 我很赞同!
x3e5 + 1 + 1 我很赞同!
LZS2002 + 1 我很赞同!
GGboys + 1 + 1 用心讨论,共获提升!
zdd151816 + 1 我很赞同!
xiaodu7070 + 1 + 1 谢谢@Thanks!
wscq823 + 1 热心回复!
Yu20230313 + 1 + 1 我很赞同!
lcymzzZ + 1 + 1 我很赞同!
抱薪风雪雾 + 1 + 1 谢谢@Thanks!
chyduck + 1 + 1 我很赞同!
xuna2009 + 1 + 1 谢谢@Thanks!
yxpp + 1 谢谢@Thanks!
breezegyln + 1 谢谢@Thanks!
ae5j + 1 + 1 热心回复!
Hmily + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
lunaticpang + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
xjliwenhao + 1 热心回复!
woshik + 1 + 1 我很赞同!
irx26 + 1 我很赞同!
NoooomoRe + 1 + 1 我很赞同!
dadao815 + 1 + 1 用心讨论,共获提升!
tvrcfdfe + 1 + 1 我很赞同!
mhaitao + 1 + 1 我很赞同!
chenJn + 1 + 1 谢谢@Thanks!
MSz4466 + 1 + 1 用心讨论,共获提升!
Jien + 1 我很赞同!
Daby + 1 + 1 热心回复!
Issacclark1 + 1 谢谢@Thanks!
423 + 1 + 1 谢谢@Thanks!
UncleYao + 1 + 1 谢谢@Thanks!
cyc1307 + 1 + 1 热心回复!
暗中观察 + 1 谢谢@Thanks!
lsxon + 1 + 1 谢谢@Thanks!
汤姆和托尼 + 1 我很赞同!
诸葛文诚 + 1 + 1 谢谢@Thanks!
YunLong3rice + 1 + 1 我很赞同!
Aegean0376 + 1 + 1 热心回复!
Lago + 1 + 1 我很赞同!
心里只有学习 + 1 能搞手游吗
JinxBoy + 1 谢谢@Thanks!
xdongxing + 1 + 1 已经处理,感谢您对吾爱破解论坛的支持!
13783867676 + 1 谢谢@Thanks!
酒柒 + 1 不封脚本专封换肤
canty胖胖 + 1 + 1 热心回复!
CrazyNut + 3 + 1 我很赞同!
ccchpig + 1 + 1 我很赞同!
ad910 + 1 + 1 确实厉害!
afo2023 + 1 + 1 杠杠滴
Lsygood + 1 + 1 用心讨论,共获提升!
Spacecraft + 1 我很赞同!
lxy0309 + 1 马服封换肤不封挂
kingwl + 1 + 1 用心讨论,共获提升!
Boly + 1 谢谢@Thanks!
lcw8876 + 1 真牛啊!!!
0106yingzi + 1 + 1 热心回复!
13026366163 + 1 用心讨论,共获提升!
才不是弱受 + 1 + 1 不封脚本专封换肤
zhouTz + 1 + 1 我很赞同!
xxxlsy + 1 + 1 我很赞同!
steel565342 + 1 + 1 我很赞同!
闪的好快啊 + 1 可惜换肤查的严
一笑懸命桑 + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
拥白吃黑 + 1 + 1 我很赞同!
random1 + 1 + 1 用心讨论,共获提升!
laodan + 1 + 1 鼓励转贴优秀软件安全工具和文档!
yyb414 + 1 + 1 热心回复!
hello学习 + 1 + 1 谢谢@Thanks!
花盗睡鼠 + 1 热心回复!
为之奈何? + 1 + 1 我很赞同!
3404071 + 1 热心回复!
ixiao999 + 1 + 1 谢谢@Thanks!
woyucheng + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
brightming 发表于 2023-5-18 00:55
我知道用换肤软件会被封号 但开挂的一般不会封
推荐
jws6994 发表于 2023-5-22 08:49
推荐
2842752363 发表于 2023-5-18 08:07
qupide 发表于 2023-5-18 06:38
厉害,厉害!换皮肤大概率会被鹅厂封号

来台服,台服不封,爽的雅痞
推荐
abodadi 发表于 2023-5-18 00:47
人才,明天来鹅场上班
4#
fldslkxs 发表于 2023-5-18 06:20
以前用挂件工具还有自娱自乐皮肤小工具,现在都当做外挂封了
5#
qupide 发表于 2023-5-18 06:38
厉害,厉害!换皮肤大概率会被鹅厂封号
6#
blindcat 发表于 2023-5-18 07:45
学习了,感谢大佬分享
7#
蛋蛋的傻 发表于 2023-5-18 07:55
之前换肤是一直较为稳定的,去年下半年开始就封换肤了
8#
daoye9988 发表于 2023-5-18 07:56
没有网络不能玩,要有单机版就好了
9#
hello学习 发表于 2023-5-18 07:58
这个厉害了
10#
jaxfeng 发表于 2023-5-18 08:04
以前的R3nzSkin,一个开源的,弄得很好。奈何实在看不懂啊。
https://github.com/R3nzTheCodeGOD/R3nzSkin
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-21 17:07

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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