【首发】LOL换肤的功能的制作原理及其实现解析

社区服务
高级搜索
猴岛论坛LOL英雄联盟【首发】LOL换肤的功能的制作原理及其实现解析
发帖 回复
倒序阅读 最近浏览的帖子最近浏览的版块
8个回复

【首发】LOL换肤的功能的制作原理及其实现解析

楼层直达
小枫工作组

ZxID:17878826

等级: 上尉
举报 只看楼主 使用道具 楼主   发表于: 2014-06-11 0
修改皮肤的原理:
在游戏的目录里文件Game\Logs\Game - R3d Logs
可以查看到如以下2行关键字

Spawning champion (英雄名称) with skinID 皮肤编号 on team 队伍分类 for clientID 游戏ID and summonername (召唤师名称)

(is 玩家或AI判断)

Hero 英雄名称(皮肤编号) created for 召唤师名称

这时候用IDA静态反汇编主程序寻找以上关键字,可以得知由以下CALL引用:
658E90(召唤师名称, 英雄名称, 皮肤编号, 队伍分类, 未知参数, 游戏编号, 未知参数, 未知参数, 判断是否为对战或AI, 未知参数)


其中队伍分类只分成蓝、紫方分別为100和200
游戏编号是英雄在队伍里的编号,10位召唤师编号0~9

特征码(Array Of Byte):57 FF 73 13 8D BB 97 00 00 00 8B D7 E8
以下是寻找到的参数调用
mov eax,[ebx+09]
mov [ecx],eax
lea ecx,[esp+0000024C]
cmp dword ptr [esp+00000260],10
lea eax,[esp+00000218]
push eax
cmovae ecx,[esp+00000250]
mov eax,00000064
cmp byte ptr [ebx+0F],00
cmovne edi,eax
push edi
push [ebx+13]
lea edi,[ebx+00000097]
mov edx,edi
call 00258E90

esp+24C = ecx = 召唤师名称
队伍分类预设值是200
检查 [ebx+F] 是否为1
是1的话将队伍分类改为100  

[ebx+13] = 皮肤编号
[ebx+97] = 英雄名称

总结 %后为格式化字符串:
  1. ecx     = 召唤师名称
  2. ebx+5   = (DWORD) ObjID    %d
  3. ebx+9   = (DWORD) clientID %i
  4. ebx+D   = (BYTE)  NodeID    %d
  5. ebx+F   = 0(200) or 1(100) 队伍判断(蓝 or 紫)
  6. ebx+10h = (BYTE) 有值为召唤师,不然就是AI
  7. ebx+13h = (BYTE) skinID       %d
  8. ebx+97h = 英雄名称               %s


PATCH掉658E90 (不一定就是658E90 ,游戏更新便有几率变化) 后以如下方式进行参数替换:
__asm
{
  mov summonername,ecx
  pushad
  lea edi,[ebx+97h]
  mov champion,edi
  call Get_champion_skinID //根据英雄名字取预先设置好的皮肤ID,可事先做好map,或直接赋值[ebx+13h] ,当然,编号必须与英雄是对应的。英雄与皮肤是一对多关系。
  cmp NameCheck,0
  je Normal
  mov NameCheck,0
  cmp skinID,0
  je Normal
  mov eax,skinID
  mov [ebx+13h],eax
Normal:
  popad
  push [ebx+13h]
  lea edi,[ebx+97h]
  jmp [originalPatchAddress]
}
以上虽为台服LOL换肤做法,其实在国服的实现方法也是一模一样的。方法也不止这一种。
[ 此帖被小枫工作组在2014-06-11 15:43重新编辑 ]
小枫工作组

ZxID:17878826

等级: 上尉
举报 只看该作者 沙发   发表于: 2014-06-11 0
沙发自己坐。
1171652882

ZxID:17480306

等级: 上校
举报 只看该作者 板凳   发表于: 2014-06-12 0
小白不懂
Myth小男人

ZxID:20495733

等级: 上尉
举报 只看该作者 地板   发表于: 2014-06-13 0
路过
哎,我想要当孙悟空,
嘿.嘿.

ZxID:17257729

等级: 上尉
举报 只看该作者 4楼  发表于: 2014-06-13 0
不懂帮顶 大神能制作个工具吗...

际遇之神

奖励

一袋金币砸在嘿.嘿.头上,赚了2DB

存丶殇

ZxID:49998331

等级: 列兵
举报 只看该作者 5楼  发表于: 2014-06-13 0
回 楼主(小枫工作组) 的帖子
不明觉厉
2232217873

ZxID:52357735

等级: 新兵
举报 只看该作者 6楼  发表于: 2014-08-08 0
看了此贴一过月了吧,还是找不到call啊,求楼主赐教
本帖提到的人: @小枫工作组

际遇之神

奖励

用手机上论坛被老师发现,没想到老师是猴岛版主,获得5DB

2232217873

ZxID:52357735

等级: 新兵
举报 只看该作者 7楼  发表于: 2014-08-08 0
回 1楼(小枫工作组) 的帖子
希望楼主看到回复联系联系我嘛,真心向楼主学习,QQ:857271370
本帖提到的人: @小枫工作组
2232217873

ZxID:52357735

等级: 新兵
举报 只看该作者 8楼  发表于: 2014-08-09 0
楼主不在吗?
本帖提到的人: @小枫工作组
« 返回列表
发帖 回复