1. 如何写一个软件
关于软件保护的一般性建议,这些都是无数人经验的总结。程序员在设计自己的保护方式时最好能够遵守这里给出的准则,这样会提高软件的保护强度。
(1)软件最终发行之前一定要将可执行程序进行加壳/压缩,使得解密者无法直接修改程序。如果时间允许并且有相应的技术能力,最好是设计自己的加壳/压缩方法。如果采用现成的加壳工具,最好不要选择流行的工具,因为这些工具已被广泛深入地加以研究,有了通用的脱壳/解压办法。另外,最好采用两种以上的不同的工具来对程序进行加壳/压缩,并尽可能地利用这些工具提供的反跟踪特性。
(2)增加对软件自身的完整性检查。这包括对磁盘文件和内存映像的检查,以防止有人未经允许修改程序以达到破解的目的。DLL和EXE之间可以互相检查完整性。
(3)不要采用一目了然的名字来命名函数和文件,如IsLicensedVersion( )、key.dat等。所有与软件保护相关的字符串都不能以明文形式直接存放在可执行文件中,这些字符串最好是动态生成。
(4)尽可能少地给用户提示信息,因为这些蛛丝马迹都可能导致解密者直接深入到保护的核心。比如,当检测到破解企图之后,不要立即给用户提示信息,而是在系统的某个地方做一个记号,随机地过一段时间后使软件停止工作,或者装作正常工作但实际上却在所处理的数据中加入了一些垃圾。
(5)将注册码、安装时间记录在多个不同的地方。
(7)检查注册信息和时间的代码越分散越好。不要调用同一个函数或判断同一个全局标志,因为这样做的话只要修改了一个地方则全部都被破解了。
(8)不要依赖于GetLocalTime( )、GetSystemTime( )这样众所周知的函数来获取系统时间,可以通过读取关键的系统文件的修改时间来得到系统时间的信息。
(9)如果有可能的话,可以采用联网检查注册码的方法,且数据在网上传输时要加密。
(10)除了加壳/压缩之外,还需要自己编程在软件中嵌入反跟踪的代码,以增加安全性。
(11)在检查注册信息的时候插入大量无用的运算以误导解密者,并在检查出错误的注册信息之后加入延时。
(12)给软件保护加入一定的随机性,比如除了启动时检查注册码之外,还可以在软件运行的某个时刻随机地检查注册码。随机值还可以很好地防止那些模拟工具,如软件狗模拟程序。
(13)如果采用注册码的保护方式,最好是一机一码,即注册码与机器特征相关,这样一台机器上的注册码就无法在另外一台机器上使用,可以防止有人散播注册码,并且机器号的算法不要太迷信硬盘序列号,因用相关工具可以修改其值。
(14)如果试用版与正式版是分开的两个版本,且试用版的软件没有某项功能,则不要仅仅使相关的菜单变灰,而是彻底删除相关的代码,使得编译后的程序中根本没有相关的功能代码。
(15)如果软件中包含驱动程序,则最好将保护判断加在驱动程序中。因为驱动程序在访问系统资源时受到的限制比普通应用程序少得多,这也给了软件设计者发挥的余地。
(16)如果采用keyfile的保护方式,则keyfile的尺寸不能太小,可将其结构设计得比较复杂,在程序中不同的地方对keyfile的不同部分进行复杂的运算和检查。
(17)自己设计的检查注册信息的算法不能过于简单,最好是采用比较成熟的密码学算法。可以在网上找到大量的源码。
2. 软件公司简介怎么写
软件公司简介写法如下:
关于我们
xxx有限公司位于上海漕河泾高新技术开发区,是在高新技术应用领域中专业从事应用系统开发、信息安全服务的高新技术企业。尊蓝长期专注于物业管理、房地产、市政运营管理等相关行业信息化领域,凭借多年在应用系统开发以及信息安全服务的积累的经验,尊蓝信息已经成为该领域内著名的应用系统解决方案提供商。
xxx倡导“专业、务实、高效、创新”的企业精神,具有良好的内部机制。优良的工作环境以及良好的激励机制,吸引了一批年轻的、有学识的、具有实干精神的人才。高素质、高水平、高效率的人才是尊蓝信息在当今激烈的市场中立于不败之地的保障。
我们可以提供:
——安全、完整的系统策划和设计:
公司在产品研发方面的高投入,众多项目的实际应用,让我们具备了相应的的创造力和丰富的经验,这将成为您解决疑问和难题的良好保证。可为您提供多方面完善的策划:如项目的规划立项、总体方案设计、方案评估论证。
——先进、专业的技术支持:
公司众多一流人才的深层磨合,对最新技术执拗的探讨精神,使我们能够保证为你提供最专业的应用,最专业的服务。
——完善、快速的售后服务:
以最快的速度、最有效的方法、最先进的技术保障系统的效果发挥到极至,解除您的后顾之忧。
我们可以解决您:
系统集成、应用系统开发
与国内外知名IT厂商建立紧密的合作关系,与业内知名的IT服务供应商建立的战略伙伴合作关系可以让您时刻把握前沿的技术脉搏和行业动态,这一切,尊蓝信息愿与您共享。xxx有限公司真诚希望能够有机会参与您的企业信息化建设,解决您在信息建设过程中出现的各类的问题,为您信息化建设做出我们的贡献。
企业文化1 客户至上
以客户业务为中心,以客户实际业务需求为导向,从客户利益出发,为客户提供完善的信息化应用解决方案。
2 尊重个人
作为尊蓝的员工,不论职位的高低、分工的不同,都将受到充分的尊重和平等的对待。公司给予员工同等的机会,鼓励员工与公司共同发展,为员工制定与公司发展步调一致的个人年度事业发展计划。
3 鼓励创新
系统开发是一项智力型的事业,公司提供富于挑战性的事业发展空间,鼓励每一位员工创造性地工作,充分发挥个人的最大价值,从而创造出最佳的工作效果。
4 团队合作
在工作中,公司强调相互尊重、理解和有效的沟通,从而在平等和谐的合作氛围中创造“1 + 1>2”的工作效应。
3. 软件文档怎么写
下面的格式你可以参考一下,跟论文差不多的
主要还是要根据你实际编写的软件来写
*************************************
1.引言
1.1编写目的
1.2项目背景
1.3定义
1.4参考资料
2.2软件结构
3.程序描述
3.1功能
3.2性能
3.3输入项目
3.4输出项目
3.5算法
3.6程序逻辑
3.7接口
3.8存储分配
3.9限制条件
3.10测试要点
4. 如何写软件
我的手机刚用了一年多点,前段时间有次因为充电时拆了电池导致开不了机,只显示contact service的字样。去nokia客服说是要重写软件,写完后用了一周左右,手机突然出现听筒听不到声音,拨出的回铃音和对方说话都听不见,扬声器开启也没用,而且是时好时坏。又拿去客服,居然告诉我要换芯片,我坚决不换,要求重写软件。重写以后,手机一切正常,可是使用一周多以后,又出现同样的毛病。我注意听了一下,听筒有声音的时候,声音特别嘈杂,呲啦呲啦的声音,而且感觉声音不稳,时高时低,有一次居然打电话说的好好的,突然没有声音了,对方好像一直能听到我的声音大家帮我判断一下,到底是什么原因?是他的软件有问题,还是我的硬件有问题?我的手机以前没有出现过这个问题的。谢谢啦[ Last edited by niiya on 2005-7-10 at 13:53 ]最新版应该是6.01NOKIA客服也分权限和等级的,可以找地区级的授权维修帮你检测,怀疑是硬件问题。个人判断:uem故障,因为DCT4的手机,Flash和COBBA以及E2ROM全部整合在UEM里面了,声音嘈杂,呲啦呲啦的声在以前的手机维修里面我们一般更换COBBA,而这个只有更换UEM了。(注意,更换了UEM,必须重新写IMEI号)个人见解,如果有不对的地方请高手指出,谢谢呵呵,谢谢高手。我看了nokia的网站,客服分客服中心、客服部和特约维修部,根据介绍感觉客服中心比较高级一点,没说哪个是地区级授权的。UEM是什么东东呢?土土的问。我现在发现我的手机每次没有声音的时候,使劲拍两下就又有声音了,是不是很搞笑啊,呵呵,好像偶不用修了,自己拍拍就行了
5. 怎样编写软件
你学C语言吧!!
那么究竟怎样学习C语言呢?
1:工欲善其事,必先利其器
这里介绍几个学习C语言必备的东东:
一个开发环境,例如turbo C 2.0,这个曾经占据了DOS时代开发程序的大半个江山。但是现在windows时代,用turbo C有感觉不方面,编辑程序起来很吃力,并且拖放,更没有函数变量自动感应功能,查询参考资料也不方便。建议使用Visual C++,这个东西虽然比较大块头,但是一旦安装好了,用起来很方便。
一本学习教程,现在C语言教材多如牛毛,但推荐大家使用《C语言程序设计》谭浩强主编 第二版 清华大学出版社,此书编写的很适合初学者,并且内容也很精到。
除此以外,现在有很多辅助学习的软件,毕竟现在是Window时代了,学习软件多如牛毛,不象我们当初学习,只有读书做题这么老套。我向大家推荐一个“集成学习环境(C语言)”,里边的知识点总结和例程讲解都非常好,还有题库测试环境,据说有好几千题,甚至还有一个windows下的trubo C,初学者甚至不用装其它的编译器,就可以练习编程了,非常适合初学者。还有一个“C语言学习系统”软件,不过感觉只是一个题库系统,如果你觉得题做的不够,不妨也可以试试。
2:葵花宝典
学习计算机语言最好的方法是什么?答曰:读程序。
没错,读程序是学习C语言入门最快,也是最好的方法。如同我,现在学习新的J#,C#等其他语言,不再是抱着书本逐行啃,而是学习它们的例程。当然,对于没有学过任何计算机语言的初学者,最好还是先阅读教程,学习完每一章,都要认真体会这一章的所有概念,然后不放过这一章中提到的所有例程,然后仔细研读程序,直到每一行都理解了,然后找几个编程题目,最好是和例程类似的或一样的,自己试图写出这段已经读懂的程序,不要以为例程你已经读懂了,你就可以写出和它一样的程序,绝对不一定,不相信你就试一试吧,如果写不出来,也不要着急,回过头来再继续研究例程,想想自己为什么写不出来,然后再去写这段程序,反反复复,直到你手到擒来为止,祝贺你,你快入门了。
3:登峰造极
写程序的最高境界其实就是掌握各种解决问题的手段(数据结构)和解决问题的方法(算法)。
是不是写出底层程序就是程序设计高手呢?非也,写底层程序,无非是掌握了硬件的结构,况且硬件和硬件还不一样,要给一个芯片写驱动程序,无非就是掌握这块芯片的各种寄存器及其组合,然后写值读值,仅此而已。这不过是熟悉一些io函数罢了。那么怎样才算精通程序设计呢?怎样才能精通程序设计呢?举个例子:你面前有10个人,找出一个叫“张三”的人,你该怎么办?第一种方法:直接对这10个人问:“谁叫张三”。第2种方法:你挨个去问“你是不是张三?”,直到问到的这个人就是张三。第三种方法:你去挨个问一个人“你认不认识张三,指给我看”。不要小看这个问题,你说当然会选第一种方法,没错恭喜你答对了,因为这个方法最快,效率最高,但是在程序设计中找到解决问题的最优方法和你用的手段却是考验一个程序员程序设计水平的重要标志,而且是不容易达到的。刚才这个问题类似于数据结构和算法中的:Map数据结构,穷举查找和折半查找。所以掌握好数据结构和一些常用算法,是登峰造极的必然之路。最后给大家推荐严尉敏的《数据结构》清华大学出版社,希望每一个想成为程序设计高手的人研读此书
6. 有谁能教教我怎么写程序
简单的说,编程就是为了借助于计算机来达到某一目的或解决某个问题,而使用某种程序设计语言编写程序代码,并最终得到结果的过程。
计算机虽然功能十分强大。可以供你上网、打游戏、管理公司人事关系等等,但是没有程序,它就等于是一堆废铁,不会理会我们对它下达的“命令”。于是,我们要驯服它,只有通过一种方式——程序,这也是我们和计算机沟通的唯一方式。
那程序到底是什么呢?
程序也就是指令的集合,它告诉计算机如何执行特殊的任务。
打个比方说,它好比指导你烹调菜品的菜谱或指挥行驶一路到达目的地的交警(或者交通路标)。没有这些特殊的指令,就不能执行预期的任务。计算机也一样,当你想让计算机为你做一件事情的时候,计算机本身并不能主动为我们工作,因此我们必须对它下达指令,而它根本不会也不可能听懂人类自然语言对事情的描述,因此我们必须使用程序来告诉计算机做什么事情以及如何去做?甚至对最简单的任务也需要指令,例如如何取得击键,怎样在屏幕上放一个字母,怎样在磁盘中保存文件等等。
这么麻烦,连这些东西编程都要考虑!怪不得人家说编程好难!你错了,其实许多这样的指令都是现成的,包含在处理芯片中内置于操作系统中,因此我们不必担心它们工作,他们都是由处理器和操作系统来完成的,并不需要我们来干预这些过程。
上面讲到的计算机本身不会主动的做任何事情。因此我们要通过程序的方式来让计算机为我们“效劳”。而这个过程就是我们“编”出来的。编程可以使用某一种程序设计语言来实现,按照这种语言的语法来描述让计算机要做的事情。
我们这里所讲的语法和外语中的语法完全两码事,这里讲的语法只是读你的程序书写做出一写规定而已。
写出程序后,再由特殊的软件将你的程序解释或翻译成计算机能够识别的“计算机语言”,然后计算机就可以“听得懂”你的话了,并会按照你的吩咐去做事了。因此,编程实际上也就是“人给计算机出规则”这么一个过程。
随计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。
电脑每做的一次动作,一个步骤,都是按照已经用计算机语言编好的程序来执行,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。
计算机所能识别的语言只有机器语言,即由构成的代码。但通常人们编程时,不采用机器语言,因为它非常难于记忆和识别。
目前通用的编程语言有两种形式:汇编语言和高级语言。
汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。
汇编程序的每一句指令只能对应实际操作过程中的一个很细微护绩篙啃蕻救戈寻恭默的动作,例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。
高级语言是目前绝大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。由于省略了很多细节,所以编程者也不需要具备太多的专业知识。