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. 写程序需要软件 那写程序的软件又是怎么做出来的 是什么软件
你这个问题问的有点“深奥”了!!可能要从早期的程序开发雏形说起了。
计算机的软件/程序是由程序开发人员一条一条指令写出来的,程序运行时,cpu收到一条指令,执行一条。而cpu的强大之处就在于它的指令集。
问题就在于,程序员写的指令是英文语句,而cpu里的指令是机器码……010010101……这样的,这就需要写一个程序,把指令逐条的“翻译”成机器码,方便计算机执行。这个“翻译”的程序其实很简单,它包含两个集合,一个是cpu的指令集(机器码),另一个是每个机器码对应的英文指令,这两个集合是一一对应的。这样它就能把程序员写的每一条指令,逐一的翻译成机器码。这实际上就是编译软件的雏形。
现在写程序用的软件,比如vc6.0之类的,它的功能很强大很复杂,你要知道,有vc6,那么它的父版vc5、vc4,乃至vc1,肯定是从最先的雏形慢慢发展成现在这样子的,增加了很多新的功能。
你如果要问编译程序的雏形是咋写出来的,这个实际很简单,说白了,它只执行“查找”、“替换”两条指令。
可能有描述不准确的地方,很久没从事过计算机方面的工作了,但是道理确实是这样的。
3. 如何编写软件
你学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数据结构,穷举查找和折半查找。所以掌握好数据结构和一些常用算法,是登峰造极的必然之路。最后给大家推荐严尉敏的《数据结构》清华大学出版社,希望每一个想成为程序设计高手的人研读此书
4. 我想学习写软件,请问我该怎么做
可以先学习C ,PASCAL ,QBSCAL 这两门也可以提高逻辑能力
别听别人的,要自己拿主义,当时我和你一样没有任何基础,我自学编程,成为一名程序员,我最早学的是PASCAL ,QBSCAL ,C ,VF ,VB ,我现在工作用VB 开发CS结构的程序.
没有基础的情况下,你可以学习C ,PASCAL,QBSCAL 也可以,虽然比较古老,但是可以给你打下良好的基础,学习程序,就象盖房子一样,根基要打好,重要的是培养自己的逻辑能力,时间关系就说到这
切记不可盲目追求什么流行语言,要塌实的一步一步学习
GOOD LUCK
用软件改变世界,用代码书写人生,用思想创造未来!
5. 想卖自己写得软件,怎么做
第一,你只有想法,没有思路,不知道怎么做,这是能力局限。你要去学习,去克服,这难以靠别人。
第二,没有初期的作品,没有关键部位的实现试验你就想到去卖产品。太超前。
我做一个没做过的东西,都是先在大脑里演进多次,然后把几个关键功能点基本实现后才串联起来。
这可以确保某步超过能力范围导致整个过程失败
第三。收费软件,前几个版本都应该是试用,没有口杯,谁会为你付钱。
第四,祝你好运,希望你一步步向你的目标努力。
6. 如何写软件
我的手机刚用了一年多点,前段时间有次因为充电时拆了电池导致开不了机,只显示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是什么东东呢?土土的问。我现在发现我的手机每次没有声音的时候,使劲拍两下就又有声音了,是不是很搞笑啊,呵呵,好像偶不用修了,自己拍拍就行了