- 积分
- 16226
- 威望
- 18
- 魅力
- 19
- 经验
- 9933
- 热心度
- 6
- 注册时间
- 2006-3-5
- 最后登录
- 2025-1-19
- 主题
- 38
- 回帖
- 4640
- 精华
- 2
- 阅读权限
- 150
TA的每日心情 | 无聊 2020-12-10 03:20 |
---|
签到天数: 550 天 连续签到: 3 天 [LV.9]龙巫妖

超级版主
一路狂奔
   
- 积分
- 16226

|
发表于 2019-8-6 16:40:32
|
显示全部楼层
怎么说呢 这个SN:E常用在 UN C或者 SN L调用外部链接后面 相当于函数跳转执行的功能
- !!SN:L^EraPlugins\erm_hooker.era^/?y1 Ay1/^SetHook^/?y2 Ay1/^SetHook^/?y3 Ay1/^SetHook^/?y4 Ay1/^SetHook^/?y5 Ay1/^SetHook^/?y6;
- !!SN:Ey2/1/4455113/33343; 远程单体 复制FU33343函数的值到地址4455113(原远程伤害显示地址)来实现修正伤害信息显示的问题
- !!SN:Ey3/1/4462959/33344; 近战单体
- !!SN:Ey4/1/4462876/33345; 龙息攻击且伤害到两个单位也触发,否则触发近战单体
- !!SN:Ey5/1/4456705/33346; 环击攻击无论伤害到多少单位都触发
- !!SN:Ey6/1/4455759/33347; 毒云攻击无论伤害到多少单位都触发
- !?FU33340; x1表示哪种攻击方式,x2为受伤的堆栈1指针,x3为堆栈1受伤数值地址,x4为受伤的堆栈2指针,x5为堆栈2受伤数值地址
- !!FU&v7550<2/v7550>4:E;
- !!UN:Cx3/4/?y20;
- !!UN&x1=3:Cx5/4/?y21;
- !!UN:C6919200/4/?y1; 获取战场结构基地址
- !!VRy2:Sy1+21708; 获取第0号堆栈的结构地址
- !!UN:Cx2/4/?y30; 获取受伤的堆栈1结构地址
- !!VRy30:-y2;
- !!VRy30::1352; 通过计算得到受伤的堆栈1的堆栈号存储到y30,堆栈结构地址间相差548h字节
- !!UN&x1=3:Cx4/4/?y40; 获取受伤的堆栈2结构地址
- !!VRy40&x1=3:-y2;
- !!VRy40&x1=3::1352; 通过计算得到受伤的堆栈2的堆栈号存储到y40,堆栈结构地址间相差548h字节
- 中间太多了 掠过
- !?FU33343; EDI为受远程攻击的个体堆栈结构指针
- !!SN:X?y1/1;[按原码执行]EDI,定位EDI(受伤堆栈结构地址)的地址
- !!VRy5:Sy1+16; 定位EBX(受伤数值)的地址
- !!FU33340:P1/y1/y5;
- !?FU33344; EDI为受近战攻击的个体堆栈结构指针
- !!SN:X?y1/1;[按原码执行]EDI,定位EDI(受伤堆栈结构地址)的地址
- !!VRy5:Sy1+20; 定位EDX(受伤数值)的地址
- !!FU33340:P2/y1/y5;
- !?FU33345; ESI为攻击单位堆栈结构指针,EDI为龙息第一格伤害到的单位堆栈结构指针,EBX为龙息第二格伤害到的单位堆栈结构指针
- !!SN:X?y1/1;[按原码执行]EDI,定位EDI(第一格受伤堆栈结构地址)的地址
- !!VRy5:Sy1+16; 定位EBX(第二格受伤堆栈结构地址)的地址
- !!VRy6:Sy1+20; 定位EDX(龙息第一格的受伤数值)的地址
- !!VRy7:Sy1+24; 定位ECX(龙息第二格的受伤数值)的地址
- !!FU33340:P3/y1/y6/y5/y7;
- !?FU33346; ESI为受环击伤害的堆栈中当前处理堆栈指针,EBX为当前处理堆栈的受伤数值
- !!SN:X?y1/1;[按原码执行]EDI
- !!VRy2:Sy1+4; 定位ESI(当前处理堆栈地址)的地址
- !!VRy5:Sy1+16; 定位EBX(当前堆栈受伤数值)的地址
- !!FU33340:P4/y2/y5;
- !?FU33347; ECX为受毒云伤害的堆栈中当前处理堆栈指针,EDX为当前处理的堆栈受伤数值
- !!SN:X?y1/1;[按原码执行]EDI
- !!VRy6:Sy1+20; 定位EDX(当前堆栈受伤数值)的地址
- !!VRy7:Sy1+24; 定位ECX(当前处理堆栈地址)的地址
- !!FU33340:P6/y7/y6;
复制代码 以上是调用内存HOOKER修正环击,龙息伤害显示的部分。
- !!SN:L^Era.dll^/?y1 Ay1/^GetGameState^/?y2
- Ey2/0/?v2; 调用外部链接接口y1(加载dll) 获取函数地址y2 调用使用帕斯卡转换储存于y2的函数地址
- !!FU|v2<>v3/v2<>4205280:E;
- [大地图对话框](v2=v3表示没有子对话框)
- 这里v2是游戏状态(v3是子对话框)
- 大地图:4205280
- 英雄界面:5117840
- 英雄交换界面:5957344
- 战场:4662240
- 城镇:6053040
- 如:
- !!SN:L^Era.dll^/?v2
- Av2/^GetGameState^/?v3 Ev3/1/?y98;
- !!FU&y99<>6053040:E;
- [城镇界面且没有子对话框的情况]
复制代码 这里是调用对话框的情况 这里我们都能看出来 SN:E指令的作用就是个传递转换的作用 我个人这块研究有限,大部分都是跟着大佬的后面看函数自己摸索的。涉及内存修改的部分指令还是请教下007跟Xericsin他们两位比较靠谱。我是只知道该怎么用,至于为啥要这么用我就不太明白了。
|
|