吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 4107|回复: 85

[原创逆向图文] 0基础学习逆向基本知识教学第六章

  [复制链接]
夜看星空 发表于 2019-7-31 20:03 | 显示全部楼层 |阅读模式

第六章 触发器和编程
    附上前5章的超链接:
    附上第一章的超链接:https://www.52hb.com/thread-43193-1-1.html
    附上第二章的超链接:https://www.52hb.com/thread-43196-1-1.html
    附上第三章的超链接:https://www.52hb.com/thread-43286-1-1.html
    附上第四章的超链接:https://www.52hb.com/thread-43459-1-1.html
    附上第五章的超链接:https://www.52hb.com/thread-43545-1-1.html
    这一章非常重要,如果物编和地图配置还不懂那需要先熟练不要急于求成,一步一个脚印才是笨鸟先飞的硬道理。
    先发一段密码本:
//全局变量声明:array 排列(数组)
//Ability      技能
//Boolean      布尔值               
//Boolexpr     布尔表达式               
//Button       对话框按钮
//Breakabletype可破坏物类型
//Destructable 可破坏物
//Dialog       对话框
//Point        点
//Effect       特效
//Force        玩家组
//Fogmodifier  可见度
//Gamecache    游戏缓存
//Group        单位组
//Integer      整数
//Item         物品
//Itemtype     物品类型
//Player       玩家
//Panel        面板
//Real         实数
//Region       矩形区域
//Rect         不规则矩形区域
//String       字符串
//Sound        声音
//Timer        计时器
//Timerdialog  计时器窗口
//Text         字符串(文本)
//Trigger      触发器
//Task         任务
//TechType     科技类型
//Unit         单位
//UnitType     单位类型
//Weathereffect天气效果


shd         地形文件
doo         地图装饰物文件
war3map.w3u 单位
war3map.w3t 物品
war3map.w3a 技能
war3map.w3h 魔法特效
war3map.w3q 升级
war3map.w3b 可破坏的
war3map.w3d 地形装饰物
war3map.wts 文字
war3map.wtg 触发器
war3map.w3e 地形资料
war3map.shd 地层资料
war3map.mmp 物件
war3map.j   jass数据库

已经有中英文对照了,意思就是中文的意思,以后只要涉及魔兽地图就需要,不论是网易还是联机,除非重新汇编引擎。
    接下来怎么玩触发器,先从最简单的玩法开始,创建一个单位:
    topjass001
topjass001.png
    开场的事件一定要,没有事件系统就不知道什么时候需要做这件事情。
    其它的选项也可以自己去试了玩,总之八九不离十,触发器俗称T,是适合新手的框架基本不会出错,而且能够把效率达到最高。T的类型标准和编程语言的易语言相同,采用了中文编译,输出为jass语言。跟易语言相比j的局限性还是很多的,不过基本的功能还是应有尽有的,照样可以生成病毒、补丁、数据等等。
    在这里我只讲T,对jass有兴趣只能自行学习。t会按照j的格式走,不会乱写一通,脱离t看j也很容易。
    变量和常量。常量是不可变化的只一样东西就是一样东西,变量是随时随地可以变化,只需要给它赋值就可以使用。
    topjass002
topjass002.png
    编辑器声明全局变量的地方,变量的名称只要不是中文可以自己随便命名,初学我建议是按照我的本本对照着来写,熟练以后在随便命名让看见代码的人想杀了你的心都有。数组就是排列,1-6000的数字(这个上限不是整数具体多少我忘了)建议都带上数组。
    我拿了雪地求生的T做例子
    topjass003
topjass003.png
    变量-动作-设置变量。变量的名字就是常量(在前面设置的变量名称是死的),等号就是赋值,赋予的值就是变量(需要让这个变量等于谁),可以把相同类型,不同名字的东东都可以用变量来代替。在全局角度看这些都是变量,而不是常量原因就是他们只需要赋值就可以变化,常量是不可以变化的。
    了解变量以后,就大概能够知道码本的英中对照是什么意思了。都是变量名称,在j中代表了函数的类型。其它语言应该也是一样,有固定的码本类型,知道这些码本的中文意思就可以基本明白一个代码段所表达的意思。
    除了要知道变量和常量以外,还需要知道固定的参数,固定参数是几乎所有引擎都需要的数值,例如:计时器、循环数、对话框、初始项、结束项等等……
    这些都是固定的值,如果记不住只能靠多动手了。没有什么逻辑和概念的地方我也不举例子,真的只需要多操作多练习就晓得。
    触发器的基本流程:
    事件-
    条件-
    动作-
    也很好理解,平时写记叙文的时候也是起因-经过-结果。这个逻辑的难点在于怎么去判断什么是起因,什么是经过,结果是什么。生活中往往伴随连锁反应和超常结果,光光用这个逻辑来拼接生活难度略大。
想要彻底理解应用因果逻辑概念,首先,要有一个冷静的头脑;其次,需要敏锐的观察;最后,一个分析的过程。
举个例子:
起因/事件:小明今天要到水果市场去买水果。
经过/条件:小明走了一个小时。
结果/动作:小明买到了水果,然后回家。

再举一个例子:
起因/事件:你口渴了。
经过/条件:拿起水杯。
结果/动作:喝水。

理论上还是比较容易听懂的,加入元素就不一定了。
拿第一个例子:
起因/事件:小明今天要到水果市场去买水果。
经过/条件/if:小明走了一个小时。
结果/动作/then:小明买到了水果,然后回家。
else:小明买不到水果。

起因/事件:小明今天要到水果市场去买水果。
经过/条件/if:突然下雨了。
结果/动作/then:小明买不到水果
else:小明买到了水果,然后回家。

这样的逻辑能够体现计算机系统的严密性,计算机的错误率真的可以忽略不计。当产生一个条件判断的时候,必然会有2种结果,这里只说2种不接受钢精。条件=1做什么动作,条件=0做什么动作,就是根据处理器的原理进行的汇编。
如果if-则then-否则else,用法一块带过了,还是不理解就到此打住,多找几样东西试试。完全理解明白在继续,否则你写的东东真的没法看。
    知道了这个就开始自己练习,学习的模式必须自己会教程只能做到这些。

    练习一下,触发器的计时器是怎么玩的。动作,运行计时器,一次/循环,x秒。事件,计时器到期。
    对话框,和对话框按钮要怎么设置。
    开始可以先用魔兽自带的函数做,先考虑怎么做出来不要想着做好,慢慢来。

    完成以后开始采用函数,制作高性能的地图。这里我只放雪地求生的源码,大家可以仿照着写一写,不要怕自己辛辛苦苦写的东西被人窃取,魔兽引擎是几百年的东西,拿这个很难做到商业价值。如果出售给网易这些平台,这种人不仅会遭到封杀,而且网易不会给他维权,别太高看网易。这样的人肯定存在,要对付这样的人也很容易,把你的地图优先发布到u9和其它大型网站,同时备份你的源码接下来我会说的。现在腾讯服务器关闭,未来肯定会有私服,因此不用担心地图会没人玩,只要不像我这样的骂声一片就可以了。很多年以后看见还有玩家在玩自己的初作也是很开心的一件事情。
    TOPxd01
TOPxd01.png
    我采用计时器0秒事件配置整个地图设置,设置玩家联盟、敌对,设置单位等等……
    0秒配置有的时候比初始化还慢,按理来说程序是先运行初始化,在走0秒计时的,为什么会出现这样情况,我也不晓得
    TOPxd02
TOPxd02.png
    设置难度,我拿了最简单的一段,只有判断和循环数,让程序根据点自动运行,非常随机化。
    我觉得什么方法都可以做,我设计之初加入了一个加密方案在里面,你要看不懂数字运算你就改不了地图。
    topxd03
topxd03.png
    设置计时器,为什么我不把计时器放在第一个讲,刚刚弄完计时器在看计时器印象会更好。不然,现在是学习阶段不是让你去选择用那个,学习自然而然见啥学啥,挑三拣四的学个锤子。
    逆天计时器和系统计时器的区别也是非常大的,逆天计时器为我们省去了很多时间和步骤,系统计时器太呆板效率还不高。但是逆天计时器不是随便乱用的,用的要求特别高。这里我不说有那些要求,自己去钻研一哈。
    topxd04
topxd04.png
    设置验证,作者验证,地图会员那些同理。
    魔兽引擎会在本地创建目录和文件,文件内就包涵了加密算法的得出的文件,因此,只需要在测试地图的时候创建文件,然后将创建的代码删除,嘿嘿独一无二的验证文件就产生了。如果读取不到本地的文件夹会直接跳过,那就没有后面的事情喽。
    topxd05
topxd05.png
    设置技能,用触发器做技能一定要考虑排泄,什么是排泄,每一次调用函数比如单位组、点、特效、矩形、声音、对话框、触发器、计时器,都会暂存内存中。因此需要手动清除,有些叼人设置的音效,不及时清除一直存在魔兽内存里,重启魔兽才能清除。我说的只是非常常见的类型,还有许多不常见的,只要是运行引擎以外创建的就会占据内存,数量过多轻则卡死,重那就不说了。
    各种各样的华丽技能需要用j配合做,触发器能做的非常局限,能用好t再弄编程也不难。
    基本上就是这些内容讲的非常笼统,接下来说触发器的运作,程序怎么运行。
    所有的t都是按照从上顺下的顺序运行的,没有例外。
    topxd06,topxd07
topxd06.png topxd07.png
    call=调用
    t=触发器
    在前面call t的动作。这句话比较程序化了。

    需要以后调用的t,尽可能独立化编写,方便调用这样一来就不需要重复代码了。
    编写代码的顺序尽量贴近与j的方式编写
开局声明全局变量:
    在使用的时候赋值全局变量,如果需要在一个触发器内多次调用赋值全局变量的时候,可以使用局部变量。局部变量只能在触发器中使用,使用时需要在开头声明变量类型,变量名称可以随意甚至使用中文。
    p:我们刚刚讲的是局部变量,上面说的是全局变量,全局变量是我们在t的变量中设置的,局部变量是在触发器中声明的。局部变量只能在触发器当中有效出了触发器就不认识了。
    接下来就是使用如果if-则then-否则else,触发器模板中的条件非常有局限性,达不到条件就不干活了,如果不需要就用触发器的,没有多大关系看心情。
    最后,调用你需要的函数组,做什么事情。别忘了排泄。

    编程的语法也是,触发器就是编程语言的框架,需要在框架里面写代码,写的代码也是一样的。相比起易语言的如果-真,t更容易一些一共就这两个,运行的方式也是一样的,变量和循环数明白以后一切都简单了。
    在这里我就不放原图了,还是防止某些人,毕竟现在王红那么多,自己连自己都骗的不在少数,鬼晓得会做出什么样的事情来呢!地图需要一个整个一起看的,单独看触发器不看物编也看不来,触发器是建立在一份好物编上的,物编有问题触发器再好都是蛋蛋。
    熟练了因果逻辑和编程框架,再看那些语言就简单很多。

有什么问题都可以在评论区留言,作者会认真回复每一条留言。
教程发布于吾爱汇编论坛,转载需要注明吾爱汇编论坛,否则作者有权追究转载者的法律责任。


评分

参与人数 18HB +14 THX +6 收起 理由
虚心学习 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
bing_mao + 1
创客者V2.0 + 1
消逝的过去 + 2
冷亦飞 + 1
小菜虫 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
temp + 1 + 1
kway + 1
努力实现自由 + 1
dujinshanD + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
sherry5566 + 1 <span class="text2Link">[吾爱汇编论坛<a target="_blank">52HB.COM</a>]-感谢楼主热心分享,小小评分不成敬意!</span>.
成丰羽 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
playboy + 1
lies + 1
无边无际的人 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
bnjzzheng + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
zxjzzh + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
longge188 + 1 [快捷评语]--吃水不忘打井人,给个评分懂感恩!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
longge188 发表于 2019-8-1 08:29 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
AnYue0801 发表于 2019-8-4 16:02 | 显示全部楼层

这是分析不错。各个动作都顾及了。
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
macolma 发表于 2019-8-26 15:57 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
ghostxu 发表于 2022-2-4 03:01 | 显示全部楼层

在此留名,以后多多交流哦~
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
拿着雪糕 发表于 2022-2-6 01:16 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
hZW13 发表于 2022-3-6 16:33 | 显示全部楼层

我现在已经把楼主作为我的学习目标了!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
ByEij534 发表于 2022-3-7 19:55 | 显示全部楼层

感谢楼主
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
aiYHPMeqDC 发表于 2022-3-7 19:56 | 显示全部楼层

谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
vpgPGJRwInb 发表于 2022-3-7 19:56 | 显示全部楼层

谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

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