在论坛潜水学习许久,我终于鼓起勇气,尝试用自己尚显稚嫩的技术与有限的表达,在这里发了帖子。若内容有疏漏、错误之处,恳请各位大佬不吝赐教,感激不尽 。
LOL动态换肤原理不用过多赘述了,调用换肤CALL即可实现。
换肤CALL查找:
1.确认英雄名
随便找个英雄进入游戏,确认所选英雄英文名,我这边选的是刀妹对应的为Irelia,不知道的可以到百度百科上查
Irelia
2.CE 启动
CE字符串搜索Irelia 3244个结果不要怕,我们只需要看最下面的十几个地址就行。
Irelia查找
选择第一个,查看什么访问了这个地址,计数为6,Irelia 的长度也为6那么这个可能就是我们要找的地址
Irelia访问
进入汇编,这里就是对 Irelia 每个字符的确认,确认完成之后就是换肤了
名字汇编
那么下面的CALL就是换肤CALL了
一共5个参数:
-----------------
r8: 换肤ID
rax:1416BA198
r9: 0
rdx: 人物名称
rcx:人物地址
------------------
换肤 call 14028c190
有了这些地址就能调用了
换肤CALL
以下是deepseek写的CALL代码
[C++] 纯文本查看 复制代码 //通用CALL
typedef uintptr_t(__stdcall* UniversalCall_t)(uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t);
uintptr_t UniversalCall(uintptr_t functionAddress, uintptr_t arg1, uintptr_t arg2, uintptr_t arg3, uintptr_t arg4, uintptr_t arg5) {
UniversalCall_t callFunction = (UniversalCall_t)functionAddress;
return callFunction(arg1, arg2, arg3, arg4, arg5);
}
调用
[Asm] 纯文本查看 复制代码 UniversalCall(MODELFUNC,Read64(PLAYERBASE), Read64(PLAYERBASE)+ NAMEOFFERST,SKINID,0,RAX)
我用的是劫持dll的方式,工具:AheadLib , 劫持DLL名称:version.dll
|