现在的共享软件,加壳的愈来愈多,每每用资源编辑器打开一些软件,总是被告知,程序被加壳了,无法察看。这使我不得不想,加壳有用吗?
问:加壳对软件保护究竟起到什么作用,作用有多大?[2003-9-19 15:14:00]
嘉宾[段钢]: 加壳可以延增加软件被破解的难度,并且它的成本低,所以如有条件,在保证兼容性的情况下,选择合适的加壳软件还是有意义的.
这是摘自2003-9-19csdn加密解密论坛的问话。
我们来想一想,有谁来破解我们的软件?
我们再想一想,我们是在防止谁来破解?
然后我们想想,我们阻止了谁?
是的,加壳成本很低,你只要找一款加壳软件,只需几秒钟,你那小小的软件就具备了一层稍微坚固的壳,之所以说稍微坚固,请看下面这段问话。
问:不脱掉upx壳可以进行跟踪吗[2003-9-19 15:09:00]
嘉宾[段钢]: 壳执行时,必会在内存中还原出原程序代码,所以不脱壳你可以动态跟踪它们.
对于那些具有反编译能力的高手来说,壳对于他们来说有多大阻碍?
再反过来说,如果壳真的那么有用,那你就用资源编辑软件打开一些常用的软件,如:金山词霸,金山快译,WinRar,FlashGet,你看一下,他们加壳了吗。这些流传如此之广的软件,都未加壳,我们手中那些不值一提的小程序还有何颜面谈安全,谈保护。对于WinRar和FlashGet,稍有经验的用户都可以很轻松的使用资源编辑器去除请你注册的对话框。对于这些,难道这些软件的作者就不知道吗?他们很容易就可以使那些未显示请注册对话框的程序不能工作,那只是几行代码的事情,可是,他们并不在意这些,他们在意软件的实用性和使用率,而不是你不掏钱,我就不让你用。或者是,你不掏钱,我就烦死你。他们是为程序而编程,所谓的注册只不过是希望得到一些回报来维持自己程序开发的开支,而不是希望通过编程来赚钱,虽然这个社会无钱寸步难行。
软件这东西,它的价值就是使用,对于一款没人使用的软件,无论它多么优秀。他的价值只能是0。
同样,作为一个程序员,我们应把重心放到软件的用户上,力求使用户随心所欲。特别是共享软件。想一想,有几个用户愿对一款陌生的共享软件察看帮助文档来了解它,好的软件是不需要帮助文档的。对于一款陌生的软件,我通常的做法是打开运行一下,通常只是三两分钟的事情,感觉习惯就留下,否则就马上删除,也就是说,能留住用户的软件,这三两分钟是很重要的。要实现这点,对于程序员来说。所作的就是钻进用户的心里,程序做到人性化是很重要的。
我不是微软的追崇者,但我十分赞同微软的观点。下面这两段话是摘自微软全球副总裁李开复在MVP峰会上的演讲:
将来计算机的用户界面将更接近一个助手,而不是一个工具,我们和计算机的交流将不会是一步一步的告诉他怎么做一件事情,而是告诉他我要达到的目标,让他一步一步帮我们,像一个得力的助手一样帮我们做这个事情。
再提到技术,微软其实过去常常犯的一个错误,十年前我们常犯的错误,鲍尔默在这十年花了很多时间纠正我们文化的方向,如果你看微软的价值观,十年前你会看到很重要的是我们要对技术要有激情,但是今天这个价值观被改了,也就是说我们的激情不是专注为了技术,我们考虑的是关注客户的需要,怎样在商业上追寻顾客的要求做出适当的产品,而不是看我们的技术能做到什么样的层次,这是很重要的一点。
如果你的软件是让别人用的,那么,理解上面两点是很重要的。在帮助用户工作的同时,我们要做的就是理解用户,一切为了用户。而不是让用户适应你,学习你。要知道,在大多数用户手中,计算机只是工具,而不是技术。CSDN有篇文档中写道,现在的共享软件全是垃圾,这话虽然刻薄了点,但也确实反映了中国共享软件的现状,但我认为,这种现状不是技术上的原因,而是认识上,思想上的,这也是加壳软件却来越多的原因。想一想,如果眼睛紧盯在money上,如何写得出出色的共享软件。
以前总是听说,中国人知识产权保护意识太弱,而现在形形色色打着防止软件被破解的加壳软件,是否是这种状况下的产物呢?
最后我在这里做几个假设,留给读者思考:
假如我们的软件很优秀,某个老外发现了它,想进行语言本地化。但软件被加壳了。
假如某个用户想打开资源查看一下,可是无法察看,而旁边有一款功能相近的软件,但未加壳。
假如某公司希望从几款优秀的软件中挑出一款与作者合作,这之中有加壳的也有未加壳的。
深度学习之图像分类(一)-- 分类模型的混淆矩阵深度学习之图像分类(一)分类模型的混淆矩阵1. 混淆矩阵1.1 二分类混淆矩阵1.2 混淆矩阵计算实例2. 混淆矩阵代码3. 混淆矩阵用途深度学习之图像分类(一)分类模型的混淆矩阵今天开始学习深度学习图像分类模型Backbone理论知识,首先学习分类模型的混淆矩阵,学习视频源于 Bilibili。1. 混淆矩阵混淆矩阵是评判模型结果的一种指标,属于模型评估的一部分,常用语评判分类模型的优劣。图中左下角为混淆矩阵的一个示例,横坐标为 True Labe
非诚勿扰Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 637 Accepted Submission(s): 276Problem Description 作为2013年699万应届毕业生中的一员,由于
同样的程序,在centos和ubuntu上都没有问题,在solaris上问题却多多,据说是solaris管理更加严格。zookeeper_init方法,在传入一个错误的host也能初始化出一个非空的handle,只能通过state去判断是否连接上。另外,在centos上使用zookeeper_mt才能连上zk,而在solaris上却不行。分析src/c中的两个工具...
Ubuntu16.04安装RealsenseD435驱动及work下载source code cmake 仍然回传不了图像?firmware版本的问题 sudo apt-get install dfu问题?下载source codeIntelRealSense官网下载(官网-靠谱),ubuntu下载source code:https://github.com/Int...
图片src是v-bind动态绑定,从后台获取的url,之前一直没有这个问题,在后台提供的图片换了之后忽然开始报错:百度解决办法:在src前加wx:if,或者设置一个本地的图片地址作为动态图片地址未获取时的默认地址。解决办法:...
/** Mysql的C语言接口*实现电话本管理程序*Lzy2011-7-17*/#include#include#include#includeintmenu_main(void){intnum;printf("\n--------Phone book management--------\n");printf(" 1.Show all contacts\n");printf(" 2.Find a...
对于很多PCB设计软件而言总会有一些这样那样的问题.比如,操作不当或者一时疏忽就会导致最终的制板出现致命的问题。作为硬件工程师或者精确点PCB Layout工程师都知道,每次制板都是需要很多毛爷爷的,特别是板层越多就越多毛爷爷。硬件工程师或许都知道,当我们每次PCB设计完成后将会出生产资料(BOM,COM,GEBER),其他不说,这里最主要的就是geber了,一旦它出错了,那么就不要谈后面的事...
目录1.什么是flink?2.sparktreaming 和 strom 有啥区别?3.flink 和 sparktreaming 有啥区别?4.Flink 的重要特点?5.什么是有界流和无界流?6.Flink的其他特点?7.Flink 组件?8.jobManager作用?9.jobManager收到的应用程序包含哪些?10.taskManager作用?11.taskManager执行任务的数量由什么来决定的?12.resourceManager作用?13
代码质量与其整洁度成正比。干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好基础。本文并不是代码风格指南,而是关于代码的可读性、复用性、扩展性探讨。我们将从几个方面展开讨论:变量 函数 对象和数据结构 类 SOLID 测试 异步 错误处理 代码风格 注释前端进阶暗号:csdn变量用有意义且常用的单词命名变量Bad:const yyyymmdstr = moment().format('YYYY/MM/DD');Good:const cur..
Jon Snow now has to fight with White Walkers. He hasnrangers, each of which has his own strength. Also Jon Snow has his favourite numberx. Each ranger can fight with a white walker only if the st
服务器用的时间长了总会出些问题,需要解决。在此将比较常用的几个命令贴出来,以便自己及小伙伴们查阅。在此说一下我用的服务器版本:(阿里云服务器) LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 7.4.1708 (Cor
EasyUI条件设置行背景颜色红色显示: 使用EasyUI的rowStyle函数,customerdg对应页面中的table标签的id<table id="customerdg"> </table>直接上代码://显示剩余天数少于5天,变色 $('#customerdg').datagrid({ rowStyler:function(index,row){