http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 8894|回复: 10

[安全] 有关破解与安全,分享个想法,大家交流下

[复制链接]
发表于 2013-10-12 10:23:01 | 显示全部楼层 |阅读模式
破解我不懂  希望懂破解的朋友可以来说说   破解能做到什么 不能做到什么,比如 能绕过某一段代码,能禁止跳转 比如if等,能改变量的值..  哪些可以做到,哪些做不到呢?

分享个我目前觉得比较好的防止破解的方法,不知道好不好  不好的话大家别笑我咯   大家都沟通交流一番,

我的防破解思路是根据不同的软件进行不同的设计,先说说大致的过程
新建一个dll,里面很简单,一个类,这个类是可以序列化的,然后类下面一个变量跟一个方法,
变量是 public List<string> cName;  //没有初始化 为Null  非静态
方法是你要防破解的这个软件中必须要用到的方法,但是这个方法也很简单,大家随便百度就能找到,比如鼠标点击, 同样也是非静态

【注册文件验证】
然后通过我们自己的注册机来实例化这个类,并根据用户实际信息来加密这个类 序列化,然后保存为注册文件,这里将对象转化为byte[]的时候可以用用户的机器码信息来进行加密, 我用的是密匙跟向量, 由一个机器码得到两个string是很简单的,比如md5,截取,翻转 等等,得到后加密类对象   生成的文件发给用户吧,用户得到文件  软件运行时获取自身机器码,同样的方法得到密匙跟向量,解密类对象,然后在软件中 有用到类对象中List<string>cName中的任何一个的时候  都通过这个对象来实现,当然方法也是,如果机器码不对,解密出错,则类对象为Null  其对应的cName和方法都不可用 程序直接奔溃掉,
比如很多人做post get相关的软件,直接把post跟get这两个单词放到cName中,,,等等,自己发挥想象,此处还有很多哟,应该能组合出用户软件使用期限的组合

【Socket验证】
一样的,将类对象发过来就是,

混淆软件, 只做exe就好,那个dll不能(我们的dll很简单,一个List<string> 这个可以随便添加,将需要的东西放到哪一个Index你随意),不然没法序列化和反序列化的,

大家交流下呗  怎么样,



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2013-10-12 11:12:48 | 显示全部楼层
很高深,表示不懂。
 楼主| 发表于 2013-10-12 15:23:56 | 显示全部楼层
差  要沉了
发表于 2013-10-12 15:30:53 | 显示全部楼层
我感觉要安全只有做服务器验证,使用账户 密码,用什么算法不重要,得要是你怎么样让别人不反编译出来,只要是反编译出来了, 你用什么算法都没有任何意义
发表于 2013-10-12 15:41:25 | 显示全部楼层
道高一尺魔高一丈
 楼主| 发表于 2013-10-12 15:41:52 | 显示全部楼层
站长苏飞 发表于 2013-10-12 15:30
我感觉要安全只有做服务器验证,使用账户 密码,用什么算法不重要,得要是你怎么样让别人不反编译出来,只 ...

那服务器验证的优势主要体现在什么地方呢,反编译指的是代码被人看到了?    就简单的验证下用户名和密码怎么能防止跳转呢, 服务器验证跟反编译之间没什么关系吧。。。
还一个问题,我用服务器验证的时候习惯用类对象的形式传送,这样的话结构复杂也不怕, 但是问题出来了,,用户不断的身份验证  服务器段实例化的类对象会越来越多, 内存飙升啊,这个是真的, 新建个项目 写个类 实例化它几万个试试看  类存飙起来了,有人说这些系统会回收   我凌乱
 楼主| 发表于 2013-10-12 15:43:25 | 显示全部楼层

只要用软件的人高只有30厘米就好, 是吧
发表于 2013-10-12 15:58:54 | 显示全部楼层
回收不用,是自动的,难道你不知道工厂模式,好些设计模式里就是解决这问题的,不需要New对象的。整个项目基本上不需要在规模的用New
你说的那个问题我个人感觉估计是代码问题,
我参与运营有些大网站(千万数据量,上千万用户的也有),开发的早,没有用什么模式,就是单纯的写代码,只要做好优化也没有像你说的那样啊,
如果C# new的对象都不回收,那只能说明你还在用,没办法释放,如果上千万个变量你一直在用,我感觉这就是代码问题了,
而这基本是不可能的,想一下而已,如果C#连new 都不回收的话,我想早就退出编程行业的,这是最基础的功能。
要不然还怎么做大型 网站呢?

服务器账户密码都在服务器上存储着,只要你不知道密码是不可能破解的,单纯的客户端加密现在基本上不流行了,如果想安全点,登录密码+动态口令,更安全,

你如果说暴力破解成本太高了,因为基本上有点能力的网站都会限制输入错误次数,然后就需要过一段时间才能再次登录,暴力的成本会很高。
还是要比直接在客户端安全

你刚说的怎么加密怎么传,怎么转,如果反编译了,就看到你的加密方法和解密方法,这样不就可以破解了吗?
就算是你把一部分数据从服务器调用 也是没有用的,因为程序反编译了,人家也可以模拟调取。
 楼主| 发表于 2013-10-12 17:01:14 | 显示全部楼层
这就是简单的工厂模式么,我要用到的类很简单的呢,[code=csharp] class Program
    {
        static void Main(string[] args)
        {
            Factory ft = new Factory();
            User I = ft.getOne();
            Console.ReadKey();
        }
    }
    class Factory
    {
        public User getOne()
        {
            return new User();
        }
    }
    class User
    {
        public User()
        {
            Console.WriteLine("I am a new user");
        }
    }[/code]

如果C# new的对象都不回收,那只能说明你还在用,没办法释放,如果上千万个变量你一直在用,我感觉这就是代码问题了,
上面这句话不怎么理解啊, 比如我实例化一个对象,然后序列化成bytes然后通过socket发送出来,之后... 这个对象不会再在程序中使用了,这个算是在用还是没在用啊?
发表于 2013-10-12 17:10:02 | 显示全部楼层
lyg1112 发表于 2013-10-12 17:01
这就是简单的工厂模式么,我要用到的类很简单的呢,

如果C# new的对象都不回收,那只能说明你还在用,没 ...

要看你定义的变量作用域了,如果你一直在这一个作用域里应该不会回收,如果程序超出了作用域就回回收,这个要具体看代码,不可能是你说的那样,你想想有些大网站天天在线人数都上千万或者上亿,如果是你说的种情况,那人家还怎么运营啊,

这个问题只能具体分析具体分析,搞不好是那里的问题呢。
工厂结构大致是这样,不过你少了得要的接口一部分
还有一处
[code=csharp]public User getOne()
        {
            return new User();
        }[/code]

如果你还使用New那就没有意义了,你随便找个工厂模式的程序看看
里面会不会有这东西
都是直接使用的反射得到的对象。
而且很少用到New这个关键字。
一个接口就用一个就够了。



您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-15 18:15

© 2014-2021

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