怎么用OD破解易语言做的软件中的注册码
首先看加没加壳,加了就先脱壳,没加就直接用C32asm查找注册错误信息,然后向上找会有一个关键跳,更改关键跳就可以注册成功,这就是爆破。
要找注册码的话就用E-debug events运行要破解的程序,然后找到注册按钮的push,用od给这个push下断点,然后输入错误注册码并单击注册按钮,会断在那个push上,然后单步走慢慢分析算法就行了。
...
易语言做一个通过网络注册程序,来登录我的软件
服务端.版本 2.支持库 mysql.程序集 窗口程序集1.子程序 _服务器1_数据到达.局部变量 客户, 文本型.局部变量 数据, 字节集.局部变量 数据到文本, 文本型.局部变量 数据分割, 文本型, , "0".局部变量 临时记录集, 整数型.局部变量 密码, 文本型客户 = 服务器1.取回客户 ()数据 = 服务器1.取回数据 ()数据到文本 = 到文本 (数据)数据分割 = 分割文本 (数据到文本, “|”, ).判断开始 (数据分割 [1] = “登录”) 执行SQL语句 (mysql, “SELECT * FROM `account_tbl` where account='” + 数据分割 [2] + “';”) 临时记录集 = 取记录集 (mysql) 读字段值 (临时记录集, “password”, 密码) .判断开始 (字段是否为空 (临时记录集, “account”) = 假) 服务器1.发送数据 (客户, “帐号错误”, ) .判断 (密码 ≠ 数据分割 [3]) 服务器1.发送数据 (客户, “密码错误”, ) .默认 服务器1.发送数据 (客户, “登录成功”, ) .判断结束.判断 (数据分割 [1] = “注册”) 执行SQL语句 (mysql, “SELECT * FROM `account_tbl` where account='” + 数据分割 [2] + “';”) 临时记录集 = 取记录集 (mysql) .判断开始 (字段是否为空 (临时记录集, “account”) = 假) 执行SQL语句 (mysql, “insert into `account_tbl` VALUES ('” + 数据分割 [2] + “','” + 数据分割 [3] + “');”) 服务器1.发送数据 (客户, “注册成功”, ) .默认 服务器1.发送数据 (客户, “帐号已存在”, ) .判断结束.默认.判断结束.子程序 __启动窗口_创建完毕mysql = 连接MySql (“127.0.0.1”, “test”, “test”, “account”, 3306)客户端.版本 2.程序集 窗口程序集1.子程序 _按钮1_被单击.如果真 (编辑框2.内容 = “” 或 编辑框1.内容 = “”) 信息框 (“请填写完成所有信息”, 0, ) 返回 ().如果真结束客户1.发送数据 (“登录” + “|” + 编辑框1.内容 + “|” + 编辑框2.内容).子程序 __启动窗口_创建完毕.局部变量 服务器, 文本型.局部变量 端口, 整数型服务器 = “127.0.0.1”端口 = 5678.如果真 (客户1.连接 (服务器, 端口) = 假) 信息框 (“对不起连接服务器失败”, 0, ) 结束 ().如果真结束.子程序 _客户1_数据到达.局部变量 数据, 字节集.局部变量 数据到文本, 文本型数据 = 客户1.取回数据 ()数据到文本 = 到文本 (数据).判断开始 (数据到文本 = “登录成功”) 信息框 (数据到文本, 0, ).判断 (数据到文本 = “注册成功”) 信息框 (数据到文本, 0, ).默认 信息框 (数据到文本, 0, ).判断结束.子程序 _注册_被单击载入 (窗口1, , 真)
如何用易语言制作一个有注册功能的软件?
可以的,这就是关系到软件的验证问题,验证方式通常有2种:1:本地验证模式通过提取用户电脑的特征码,然后加密一下,然后要求用户在购买时提供相关加密后的特征码!然后在给用户软件时,重新把特征码写到程序中去,在程序运行时判断特征码是否相符!当然,你需要自己写一个提取特征码并加密后输出的小工具给用户!工具代码例:.版本 2.支持库 dp1.局部变量 ii = 取硬盘特征字 ().如果真 (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中编写并贴出!转载请注明出处...谢谢