用易语言制作一个聊天软件
用易语言的服务器组件和客户端组件是可以做的 但是 你的机子要24小时开机很不好 租个服务器吧 这样简单
或者你和你的朋友说好 一天什么时候到什么时候使用也可以。 这个时候你就要个花生壳来固定你的IP ,有路由器的要映射到你的内网IP ,然后你朋友用客户端组件连接你的服务器组件。
易语言制作DNF辅助,详细!加代码!
.版本 2
.程序集 窗口
.程序集变量 进程ID, 整数型
.程序集变量 触发, 整数型
.程序集变量 人偶, 整数型
.程序集变量 字节集转换, 字节集
.程序集变量 人偶武器, 整数型
.程序集变量 开启, 整数型
.程序集变量 人偶数据, 整数型
.程序集变量 数据保存, 整数型
.子程序 _窗口1_创建完毕
内存操作.提升权限 ()
内存操作.打开进程 ()
进程ID = 取进程ID (“DNF.exe”)
窗口1.左边 = 0
窗口1.顶边 = 0
监视热键 (&人偶倍攻, #F1键)
监视热键 (&召唤人偶, #F2键)
监视热键 (&倍攻初始, #F3键)
监视热键 (&修改评分, #F4键)
监视热键 (&消灭, #F5键)
监视热键 (&出售, #F6键)
监视热键 (&子程序1, #键1, 1)
.子程序 召唤人偶
物品CALL (十六到十 (#人物基址 + “+3AEC+20+C+14”), 2600028)
延时 (3000)
人偶 = 返回BOSS地址 (273) ' APC地址
人偶数据 = 内存操作.读代码 (十到十六 (人偶)) ' APC数据
.如果真 (人偶数据 > 1)
物品CALL (人偶, 到整数 (2600027))
.如果真结束
.子程序 倍攻初始
.判断开始 (内存操作.读代码 (#指针基址 + “+14”) = 27567)
写内存小数型 (-1, 内存操作.读代码 (#指针基址 + “+4D0+14+4+34”) + 0, 16)
写内存小数型 (-1, 内存操作.读代码 (#指针基址 + “+4D0+14+4+24”) + 12, 到整数 (编辑框1.内容)) ' 伤害
写内存小数型 (-1, 内存操作.读代码 (#指针基址 + “+4D0+14+4+14”) + 4, 100)
写内存小数型 (-1, 内存操作.读代码 (#指针基址 + “+4D0+14+4+24”) + 4, 3)
写内存小数型 (-1, 内存操作.读代码 (#指针基址 + “+4D0+14+4+24”) + 4, 8)
写内存小数型 (-1, 内存操作.读代码 (#指针基址 + “+4D0+14+4+34”) + 4, 4543)
内存操作.写代码 (#人物基址 + “2084+4D0” + #指针基址 + “+4D0=12”)
冰心公告 (“初始化成功.”)
.默认
冰心公告 (“初始化失败.请初始化 炙炎梵天剑 ”)
.判断结束
.子程序 人偶倍攻
.判断开始 (开启 = 0)
开启 = 1
时钟1.时钟周期 = 1000
冰心公告 (“开启人偶倍攻”)
.默认
开启 = 0
时钟1.时钟周期 = 0
冰心公告 (“关闭人偶倍攻”)
.判断结束
.子程序 _时钟1_周期事件
.局部变量 APC力量, 整数型
.局部变量 APC智力, 整数型
人偶 = 返回BOSS地址 (273) ' APC地址
人偶数据 = 内存操作.读代码 (十到十六 (人偶)) ' APC数据
.如果 (人偶数据 > 1)
APC智力 = VIP内存.读代码 (十到十六 (人偶)) + 改偏移 (“120C”)
加密22 (APC智力, 到整数 (编辑框1.内容) × 10)
APC力量 = VIP内存.读代码 (十到十六 (人偶)) + 改偏移 (“122C”)
加密22 (APC力量, 到整数 (编辑框1.内容) × 10)
.否则
开启 = 0
时钟1.时钟周期 = 0
.如果结束
.子程序 修改评分
.如果真 (内存操作.读代码 (#评分基址 + “+5c”) ≠ 1149239296)
内存操作.写代码 (#评分基址 + “+5c=1149239296”)
冰心公告 (“评分以开启,打怪即可”)
.如果真结束
.子程序 消灭
.局部变量 p1, 整数型
.局部变量 基址, 整数型
.局部变量 计次, 整数型
.局部变量 偏移, 整数型
.局部变量 怪ESI, 整数型
.局部变量 临时变量1, 整数型
.局部变量 x, 整数型
.局部变量 y, 整数型
.局部变量 z, 整数型
.局部变量 次数, 整数型
基址 = 内存操作.读代码 (#人物基址 + “+E0+90”)
.变量循环首 (0, 256, 1, 计次)
偏移 = 4 + 4 × 计次
怪ESI = 内存操作.读整数 (基址 + 偏移)
.如果真 (怪ESI < 16777216)
到循环尾 ()
.如果真结束
临时变量1 = 内存操作.读整数 (怪ESI + 1232)
.如果真 (临时变量1 = 0 或 临时变量1 = 100)
到循环尾 ()
.如果真结束
临时变量1 = 内存操作.读整数 (怪ESI + 188)
.如果 (临时变量1 = 1057)
内存操作.写整数 (怪ESI + 十六到十 (“170”), 0)
.否则
.如果结束
.变量循环尾 ()
.子程序 _按钮2_被单击
.局部变量 c1, 整数型
.局部变量 c2, 整数型
.局部变量 c3, 整数型
.局部变量 loc1, 整数型
.局部变量 ebp_14, 整数型
c1 = 十六到十 (#X轴参数) ' 0128 X轴参数十进制
c2 = 十六到十 (#Y轴参数) ' 0128 Y轴参数十进制' ..
c3 = 十六到十 (#Z轴参数) ' 0128 Z轴参数十进制
loc1 = 0
ebp_14 = 十六到十 (#一级参数) ' 0128 头部参数
置入代码 ({ 139, 77, 236, 139, 9 }) ' ecx
置入代码 ({ 106, 38, 255, 85, 252 }) ' 0x26是城内移动;0x7是返回角色 0x0f是打开选图 0x2D是回城
' ..
loc1 = 2 ' 区域[1=埃尔文防线,2=赫尔马顿,3=西海岸,4=阿法利亚,5=斯顿雪域,6=根特,7=末日之都,8=仓库?]
置入代码 ({ 139, 77, 236, 139, 9 }) ' ecx
置入代码 ({ 106, 1, 141, 85, 240, 82, 255, 85, 248 }) ' 1字节
' ..
loc1 = 1 ' 区域中的位置。6在格兰就是进副本那。就是区域中的小区域。7是西海岸的塔 遗迹门口(4,3),雪域门口(5,2)
置入代码 ({ 139, 77, 236, 139, 9 }) ' ecx
置入代码 ({ 106, 1, 141, 85, 240, 82, 255, 85, 248 }) ' 1字节
loc1 = 1500 ' x
置入代码 ({ 139, 77, 236, 139, 9 }) ' ecx
置入代码 ({ 106, 2, 141, 85, 240, 82, 255, 85, 248 }) ' 2字节
loc1 = 200 ' y
置入代码 ({ 139, 77, 236, 139, 9 }) ' ecx
置入代码 ({ 106, 2, 141, 85, 240, 82, 255, 85, 248 }) ' 2字节
loc1 = 5 ' z?这个没什么效果,不知道是不 是 Z 轴,注意是1字节。反正游戏里都是5。
置入代码 ({ 139, 77, 236, 139, 9 }) ' ecx
置入代码 ({ 106, 1, 141, 85, 240, 82, 255, 85, 248 }) ' 1字节
置入代码 ({ 255, 85, 244 }) ' send
.子程序 出售
写内存整数型 (取进程ID (“DNF.exe”), 读内存整数型 (取进程ID (“DNF.exe”), 十六到十 (#商店基址)) + 十六到十 (#买卖偏移), 5)
.子程序 _按钮3333_被单击
写内存小数型 (-1, 数据保存 + 24, 到小数 (编辑框1.内容))
.子程序 子程序1
.局部变量 触发_值, 整数型
.局部变量 基址, 整数型
.局部变量 计次, 整数型
.局部变量 偏移, 整数型
.局部变量 遍历地址, 整数型
.局部变量 变量, 整数型
.局部变量 次数, 整数型
.局部变量 次数2, 整数型
.局部变量 队友地址, 整数型, , "1"
.局部变量 递增值, 整数型
.局部变量 表达式, 整数型
.局部变量 傻瓜物理, 整数型
触发_值 = 汇编读整数型 (十六到十 (#人物基址))
.如果真 (触发_值 < 1)
返回 ()
.如果真结束
基址 = 读内存整数型 (取自身进程ID (), 汇编读整数型 (汇编读整数型 (十六到十 (#人物基址)) + 224) + 144)
递增值 = 0
次数 = 0
次数2 = 0
.判断循环首 (次数2 = 0)
表达式 = 读内存整数型 (取自身进程ID (), 基址 + 递增值, )
.如果真 (表达式 > 16777216)
.如果真 (读内存整数型 (取自身进程ID (), 表达式 + 1232) = 0 且 触发_值 ≠ 表达式)
队友地址 [1] = 基址 + 递增值
.变量循环首 (0, 180, 1, 计次)
偏移 = 4 + 4 × 计次
遍历地址 = 读内存整数型 (取自身进程ID (), 基址 + 偏移)
.如果真 (遍历地址 < 16777216)
到循环尾 ()
.如果真结束
变量 = 读内存整数型 (取自身进程ID (), 遍历地址 + 1232)
.如果真 (变量 = 0 或 变量 = 200)
到循环尾 ()
.如果真结束
变量 = 读内存整数型 (取自身进程ID (), 遍历地址 + 188)
.如果真 (变量 ≠ 529 且 变量 ≠ 273 且 变量 ≠ 545)
到循环尾 ()
.如果真结束
变量 = 读内存整数型 (取自身进程ID (), 遍历地址 + 468)
.如果真 (变量 = 1)
到循环尾 ()
.如果真结束
傻瓜物理 = 遍历地址 + 7520 ' ‘物理攻击
加密 (傻瓜物理, -100000)
次数 = 次数 + 1
.如果真 (次数 ≥ 30)
跳出循环 ()
.如果真结束
.变量循环尾 ()
次数2 = 1
.如果真结束
.如果真结束
递增值 = 递增值 + 4
.判断循环尾 ()
.子程序 汇编读整数型, 整数型, , 失败返回-1
.参数 读取地址, 整数型
置入代码 ({ 139, 68, 36, 8, 61, 0, 0, 16, 0, 126, 8, 133, 192, 116, 4, 139, 0, 235, 5, 184, 255, 255, 255, 255, 139, 229, 93, 194, 4, 0 })
返回 (-1)
.子程序 _城镇飞机组合_列表项被选择
.如果真 (城镇飞机组合.现行选中项 = 0)
超级瞬移CALL (1, 0)
.如果真结束
.如果真 (城镇飞机组合.现行选中项 = 1)
超级瞬移CALL (1, 2)
.如果真结束
.如果真 (城镇飞机组合.现行选中项 = 2)
超级瞬移CALL (2, 0)
.如果真结束
.如果真 (城镇飞机组合.现行选中项 = 3)
超级瞬移CALL (2, 6)
.如果真结束
.如果真 (城镇飞机组合.现行选中项 = 4)
超级瞬移CALL (2, 4)
.如果真结束
.如果真 (城镇飞机组合.现行选中项 = 5)
超级瞬移CALL (3, 0)
.如果真结束
.如果真 (城镇飞机组合.现行选中项 = 6)
超级瞬移CALL (3, 3)
.如果真结束
.如果真 (城镇飞机组合.现行选中项 = 7)
超级瞬移CALL (3, 4)
.如果真结束
.如果真 (城镇飞机组合.现行选中项 = 8)
超级瞬移CALL (3, 7)
.如果真结束
.如果真 (城镇飞机组合.现行选中项 = 9)
超级瞬移CALL (3, 9)
.如果真结束
.如果真 (城镇飞机组合.现行选中项 = 10)
超级瞬移CALL (3, 10)
.如果真结束
.如果真 (城镇飞机组合.现行选中项 = 11)
超级瞬移CALL (4, 0)
.如果真结束
.如果真 (城镇飞机组合.现行选中项 = 12)
超级瞬移CALL (4, 2)
.如果真结束
.如果真 (城镇飞机组合.现行选中项 = 13)
超级瞬移CALL (4, 3)
.如果真结束
.如果真 (城镇飞机组合.现行选中项 = 14)
超级瞬移CALL (4, 4)
.如果真结束
.如果真 (城镇飞机组合.现行选中项 = 15)
超级瞬移CALL (5, 0)
.如果真结束
.如果真 (城镇飞机组合.现行选中项 = 16)
超级瞬移CALL (5, 2)
.如果真结束
.如果真 (城镇飞机组合.现行选中项 = 17)
超级瞬移CALL (6, 0)
.如果真结束
.如果真 (城镇飞机组合.现行选中项 = 18)
超级瞬移CALL (6, 3)
.如果真结束
.如果真 (城镇飞机组合.现行选中项 = 19)
超级瞬移CALL (7, 0)
.如果真结束
.如果真 (城镇飞机组合.现行选中项 = 20)
超级瞬移CALL (9, 0)
.如果真结束
.子程序 _选择框1_被单击
.如果 (选择框1.选中 = 真)
窗口1.总在最前 = 真
.否则
选择框1.选中 = 假
窗口1.总在最前 = 假
.如果结束
.子程序 _按钮1_被单击
物品CALL (十六到十 (#人物基址), 2600051)
怎么写易语言软件的收费源码
可以的,这就是关系到软件的验证问题,验证方式通常有2种:
1:本地验证模式
通过提取用户电脑的特征码,然后加密一下,然后要求用户在购买时提供相关加密后的特征码!
然后在给用户软件时,重新把特征码写到程序中去,在程序运行时判断特征码是否相符!
当然,你需要自己写一个提取特征码并加密后输出的小工具给用户!
工具代码例:
.版本 2
.支持库 dp1
.局部变量 i
i = 取硬盘特征字 ()
.如果真 (i = 0)
编辑框1.内容 = “提取机器码失败”
返回 ()
.如果真结束
编辑框1.内容 = 取数据摘要 (加密数据 (到字节集 (i), “自定义加密钥匙”, ))
上面的代码采用硬盘的特征字来作为前提,然后再将内容加密,然后再将加密后的内容转为MD5,并显示到编辑框中,要求用户把编辑的内容发给你!
然后就是在软件中去效验一下了!较为安全的做法例子:
.版本 2
.支持库 dp1
.子程序 __启动窗口_创建完毕
.局部变量 i
.局部变量 用户提供的特征, 文本型
.局部变量 当前提取的特征, 文本型
用户提供的特征 = “在程序中应该将用户提供的特征再次MD5来避免破解者使用内存工具来破解验证部分”
' 用户提供的特征 =取数据摘要(到字节集 (用户提供的特征))'这是2次MD5的方式,但要另外做好,然后再在程序中直接赋值
' 当然了,你可以多次MD5,更加安全一些
i = 取硬盘特征字 ()
.如果真 (i = 0)
信息框 (“验证失败!”, 0, ) ' 编辑框1.内容 = “提取机器码失败”
返回 ()
.如果真结束
' 然后用同样的方法,将提取到的特征加密后,然后再根据你事先MD5的次数来处理
当前提取的特征 = 取数据摘要 (加密数据 (到字节集 (i), “自定义加密钥匙”, ))
.如果真 (当前提取的特征 ≠ 用户提供的特征)
时钟1.时钟周期 = 5000 ' 不直接结束程序,而是使用一个5秒的时钟
.如果真结束
'正常处理代码
.子程序 _时钟1_周期事件
结束 () ' 这样的处理方式,能做一些小欺骗,避免被轻易破解!
以上是一些验证方面的代码以及一些商业软件应具备一些防破解的意识!
当然了,要想真正做到防破解并不容易,这里的代码只能起到一些很小的作用,对于大鸟来说,这是没用的!防破解的技术比较复杂这里就不再说这个问题先!
2:c/s验证模式
即客户端和服务器通讯方式进行验证,这里的做法就好比QQ登陆一样,
提供一个用户注册的界面,而且为应用程序制作一个服务器,E语言可以使用客户端和服务器控件
进行TCP通讯,服务器部分需要有数据库,把用户的注册数据记录在数据库中!
客户端部分在用户操作注册的同时,把用户电脑的特征字也一并发送到服务器,
客户端再提供一个用户登陆界面,这样,用户输入账号和密码进行登陆,客户端把登陆的信息和当前登陆的用户的电脑的特征字发给服务器,服务器进行用户信息的验证和处理,服务器部分就可以根据这些信息进行处理!服务器处理后,再将结果发送给客户端,就好比QQ登陆时,当你的密码输入错误,服务器会发送一个密码输入错误的信息给客户端,然后客户端收到这个数据包后,就弹出一个窗口提醒用户,密码不正确,登陆失败的提示!代码太多,这就不写出来了!大致上需要掌握就是E的服务器和客户端控件的应用!
当然了,一般服务器比分,如果自己架设不适合的话,就需要去租服务器!
但是成本较大,租网页形式的,就需要会学ASP.net
并且有服务器的情况下,还可以考虑制作自动更新,每次客户端登陆的时候都把当前客户端的版本发给服务器,服务器进行版本验证,检查是否有更新的版本,然后通知客户端有新版本是否立即更新!
这里涉及更多的技术知识,我就不一一陈述了!
以上回答都是纯手工回答,贴出的代码均为实时在E中编写并贴出!
转载请注明出处...谢谢
怎么用易语言做个登录器和一个登录服务器
利用服务器控件和客户控件可以做出一个局域网的登录、控制系统源码如下: .版本 2
.支持库 sock.程序集 窗口程序集1
.程序集变量 用户, 文本型
.程序集变量 密码, 文本型.子程序 __启动窗口_创建完毕
.局部变量 IP, 文本型, , "0"IP = 取本机IP ()
编辑框1.内容 = IP [1].子程序 _服务器_数据到达
.局部变量 数据, 文本型数据 = 删首尾空 (到文本 (服务器.取回数据 ()))
用户 = 取文本左边 (数据, 寻找文本 (数据, “#”, , 真) - 1)
密码 = 取文本右边 (数据, 取文本长度 (数据) - 寻找文本 (数据, “#”, , 真))
信息框 (“有用户登录:” + #换行符 + 用户 + #换行符 + 密码, 0, )
.子程序 _按钮1_被单击客户.连接 (编辑框1.内容, 19730)
客户.发送数据 (到字节集 (编辑框2.内容 + “#” + 编辑框3.内容))
.子程序 _服务器_客户进入输出调试文本 (服务器.取回客户 ())
用易语言制作一个聊天软件
用易语言的服务器组件和客户端组件是可以做的 但是 你的机子要24小时开机很不好 租个服务器吧 这样简单
或者你和你的朋友说好 一天什么时候到什么时候使用也可以。 这个时候你就要个花生壳来固定你的IP ,有路由器的要映射到你的内网IP ,然后你朋友用客户端组件连接你的服务器组件。
怎么写易语言软件的收费源码
可以的,这就是关系到软件的验证问题,验证方式通常有2种:
1:本地验证模式
通过提取用户电脑的特征码,然后加密一下,然后要求用户在购买时提供相关加密后的特征码!
然后在给用户软件时,重新把特征码写到程序中去,在程序运行时判断特征码是否相符!
当然,你需要自己写一个提取特征码并加密后输出的小工具给用户!
工具代码例:
.版本 2
.支持库 dp1
.局部变量 i
i = 取硬盘特征字 ()
.如果真 (i = 0)
编辑框1.内容 = “提取机器码失败”
返回 ()
.如果真结束
编辑框1.内容 = 取数据摘要 (加密数据 (到字节集 (i), “自定义加密钥匙”, ))
上面的代码采用硬盘的特征字来作为前提,然后再将内容加密,然后再将加密后的内容转为MD5,并显示到编辑框中,要求用户把编辑的内容发给你!
然后就是在软件中去效验一下了!较为安全的做法例子:
.版本 2
.支持库 dp1
.子程序 __启动窗口_创建完毕
.局部变量 i
.局部变量 用户提供的特征, 文本型
.局部变量 当前提取的特征, 文本型
用户提供的特征 = “在程序中应该将用户提供的特征再次MD5来避免破解者使用内存工具来破解验证部分”
' 用户提供的特征 =取数据摘要(到字节集 (用户提供的特征))'这是2次MD5的方式,但要另外做好,然后再在程序中直接赋值
' 当然了,你可以多次MD5,更加安全一些
i = 取硬盘特征字 ()
.如果真 (i = 0)
信息框 (“验证失败!”, 0, ) ' 编辑框1.内容 = “提取机器码失败”
返回 ()
.如果真结束
' 然后用同样的方法,将提取到的特征加密后,然后再根据你事先MD5的次数来处理
当前提取的特征 = 取数据摘要 (加密数据 (到字节集 (i), “自定义加密钥匙”, ))
.如果真 (当前提取的特征 ≠ 用户提供的特征)
时钟1.时钟周期 = 5000 ' 不直接结束程序,而是使用一个5秒的时钟
.如果真结束
'正常处理代码
.子程序 _时钟1_周期事件
结束 () ' 这样的处理方式,能做一些小欺骗,避免被轻易破解!
以上是一些验证方面的代码以及一些商业软件应具备一些防破解的意识!
当然了,要想真正做到防破解并不容易,这里的代码只能起到一些很小的作用,对于大鸟来说,这是没用的!防破解的技术比较复杂这里就不再说这个问题先!
2:c/s验证模式
即客户端和服务器通讯方式进行验证,这里的做法就好比QQ登陆一样,
提供一个用户注册的界面,而且为应用程序制作一个服务器,E语言可以使用客户端和服务器控件
进行TCP通讯,服务器部分需要有数据库,把用户的注册数据记录在数据库中!
客户端部分在用户操作注册的同时,把用户电脑的特征字也一并发送到服务器,
客户端再提供一个用户登陆界面,这样,用户输入账号和密码进行登陆,客户端把登陆的信息和当前登陆的用户的电脑的特征字发给服务器,服务器进行用户信息的验证和处理,服务器部分就可以根据这些信息进行处理!服务器处理后,再将结果发送给客户端,就好比QQ登陆时,当你的密码输入错误,服务器会发送一个密码输入错误的信息给客户端,然后客户端收到这个数据包后,就弹出一个窗口提醒用户,密码不正确,登陆失败的提示!代码太多,这就不写出来了!大致上需要掌握就是E的服务器和客户端控件的应用!
当然了,一般服务器比分,如果自己架设不适合的话,就需要去租服务器!
但是成本较大,租网页形式的,就需要会学ASP.net
并且有服务器的情况下,还可以考虑制作自动更新,每次客户端登陆的时候都把当前客户端的版本发给服务器,服务器进行版本验证,检查是否有更新的版本,然后通知客户端有新版本是否立即更新!
这里涉及更多的技术知识,我就不一一陈述了!
以上回答都是纯手工回答,贴出的代码均为实时在E中编写并贴出!
转载请注明出处...谢谢