更多“软件建立地下室的方法有哪几种?”相关问题
  • 第1题:

    求通过注册表破解软件试用期的方法.还有软件试用的限制途径都有哪几种?


    把限制的地方强行修改
    期待其他专家的回答

    十招让你学会软件的破解以前谈到了一些在学习解密过程中经常遇到的问题,本人根据自己的经验简单给大家谈一谈。这些问题对于初学者来说常常是很需要搞明白的,根据我自己的学习经历,如果你直接照着很多破解教程去学习的话,多半都会把自己搞得满头的雾水,因为有很多的概念要么自己不是很清楚,要么根本就不知道是怎么一回事,所以希望通过下面的讨论给大家一定的帮助: 1. 断点:所谓断点就是程序被中断的地方,这个词对于解密者来说是再熟悉不过了。那么什么又是中断呢?中断就是由于有特殊事件(中断事件)发生,计算机暂停当前的任务(即程序),转而去执行另外的任务(中断服务程序),然后再返回原先的任务继续执行。打个比方:你正在上班,突然有同学打电话告诉你他从外地坐火车过来,要你去火车站接他。然后你就向老板临时请假,赶往火车站去接同学,接着将他安顿好,随后你又返回公司继续上班,这就是一个中断过程。我们解密的过程就是等到程序去获取我们输入的注册码并准备和正确的注册码相比较的时候将它中断下来,然后我们通过分析程序,找到正确的注册码。所以我们需要为被解密的程序设置断点,在适当的时候切入程序内部,追踪到程序的注册码,从而达到crack的目的。 2. 领空:这是个非常重要的概念,但是也初学者是常常不明白的地方。我们在各种各样的破解文章里都能看到领空这个词,如果你搞不清楚到底程序的领空在哪里,那么你就不可能进入破解的大门。或许你也曾破解过某些软件,但那只是瞎猫碰到死老鼠而已。所谓程序的领空,说白了就是程序自己的地方,也就是我们要破解的程序自己程序码所处的位置。也许你马上会问:我是在程序运行的时候设置的断点,为什么中断后不是在程序自己的空间呢?因为每个程序的编写都没有固定的模式,所以我们要在想要切入程序的时候中断程序,就必须不依赖具体的程序设置断点,也就是我们设置的断点应该是每个程序都会用到的东西。在DOS时代,基本上所有的程序都是工作在中断程序之上的,即几乎所有的DOS程序都会去调用各种中断来完成任务。但是到了WINDOWS时代,程序没有权力直接调用中断,WINDOWS系统提供了一个系统功能调用平台(API),就向DOS程序以中断程序为基础一样,WINDOWS程序以API为基础来实现和系统打交道,从而各种功能,所以WINDWOS下的软件破解其断点设置是以API函数为基础的,即当程序调用某个API函数时中断其正常运行,然后进行解密。例如在SOFTICE中设置下面的断点:bpx GetDlgItemText(获取对话框文本),当我们要破解的程序要读取输入的数据而调用GetDlgItemText时,立即被SOFTICE拦截到,从而被破解的程序停留在GetDlgItemText的程序区,而GetDlgItemText是处于WINDWOS自己管理的系统区域,如果我们擅自改掉这部分的程序代码,那就大祸临头了!所以我们要从系统区域返回到被破解程序自己的地方(即程序的领空),才能对程序进行破解,至于怎样看程序的领空请看前面的SOFTICE图解。试想一下:对于每个程序都会调用的程序段,我们可能从那里找到什么有用的东西吗?(怎么样去加密是程序自己决定的,而不是调用系统功能实现的!) 3. API:即Application Programming Interface的简写,中文叫应用程序编程接口,是一个系统定义函数的大集合,它提供了访问操作系统特征的方法。 API包含了几百个应用程序调用的函数,这些函数执行所有必须的与操作系统相关的操作,如内存分配、向屏幕输出和创建窗口等,用户的程序通过调用API接口同WINDOWS打交道,无论什么样的应用程序,其底层最终都是通过调用各种API函数来实现各种功能的。通常API有两中基本形式:Win16和Win32。Win16是原来的、API的16位版本,用于Windows 3.1;Win32是现在的、API的32位版本,用于Windows 95/98/NT/ME/2000。Win32包括了Win16,是Win16的超集,大多数函数的名字、用法都是相同的。16位的API函数和32位的API函数的区别在于最后的一个字母,例如我们设置这样的断点:bpx GetDlgItemText、bpx GetDlgItemTextA和bpx GetDlgItemTextW,其中 GetDlgItemText是16位API函数,GetDlgItemTextA和GetDlgItemTextW是32位API函数,而GetDlgItemTextA表示函数使用单字节,GetDlgItemTextW表示函数使用双字节。现在我们破解中常用到的是Win32单字节API函数,就是和GetDlgItemTextA类似的函数,其它的两种(Win16 API和Win32双字节API函数)则比较少见。 Win32 API函数包含在动态链接库(Dynamic Link Libraries,简称DLLs)中,即包含在kernel32.dll、user32.dll、gdi32.dll和comctl32.dll中,这就是为什么我们要在softice中用exp=C:\windows\system\kernel32.dll等命令行将这些动态链接库导入softice中的原因。因为不这样做的话,我们就无法拦截到系统Win32 API函数调用了。 4. 关于程序中注册码的存在方式:破解过程中我们都会去找程序中将输入的注册码和正确的注册码相比较的地方,然后通过对程序的跟踪、分析找到正确的注册码。但是正确的注册码通常在程序中以两种形态存在:显式的和隐式的,对于显式存在的注册码,我们可以直接在程序所处的内存中看到它,例如你可以直接在SOFTICE的数据窗口中看到类似"297500523"这样存在的注册码(这里是随意写的),对于注册码显式存在的软件破解起来比较容易;但是有些软件的程序中并不会直接将我们输入的注册码和正确的注册码进行比较,比如有可能将注册码换算成整数、或是将注册码拆开,然后将每一位注册码分开在不同的地方逐一进行比较,或者是将我们输入的注册码进行某种变换,再用某个特殊的程序进行验证等等。总之,应用程序会采取各种不同的复杂运算方式来回避直接的注册码比较,对于这类程序,我们通常要下功夫去仔细跟踪、分析每个程序功能,找到加密算法,然后才能破解它,当然这需要一定的8086汇编编程功底和很大的耐心与精力。 5. 关于软件的破解方式:本人将破解方式分为两大类,即完全破解和暴力破解。所谓完全破解主要是针对那些需要输入注册码或密码等软件来说的,如果我们能通过对程序的跟踪找到正确的注册码,通过软件本身的注册功能正常注册了软件,这样的破解称之为完全破解;但如果有些软件本身没有提供注册功能,只是提供试用(DEMO),或是注册不能通过软件本身进行(例如需要获取另外一个专用的注册程序,通过INTERNET的注册等等),或者是软件本身的加密技术比较复杂,软件破解者的能力、精力、时间有限,不能直接得到正确的注册码,此时我们需要去修改软件本身的程序码,即人为改变软件的运行方向,这样的破解称之为暴力破解。 6. 关于破解教程中程序代码地址问题:破解教程中都会放上一部分程序代码以帮助讲解程序的分析方法,例如下面的一段程序代码: 0167:00408033 PUSH 00 0167:00408035 PUSH EBX 0167:00408036 CALL [USER32!EndDialog] 0167:0040803C JMP 0040812C 7. 关于如何设置断点的问题:正确恰当的设置好断点对于快速有效的解密非常重要,好的断点设置可以使我们迅速找到关键的程序段,而不恰当的断点则会对解密造成不必要的精力消耗,甚至根本就不能拦截到程序的运行。但是具体什么时候用什么断点比较合适很难说,这需要自己用经验去累积,总的说来bpx hmemcpy这个万能断点对大多数注册码方式的软件都有用,初学者不妨多试试这个断点。对于那些需要暴力破解的非注册码方式的软件,通常我们应该拦截对话框(如bpx DialogBox)和消息框(如bpx MessageBox(A))等。不论对于哪一类软件,当我们设置的断点均没有效果时,可是试一下bpx lockmytask,这个断点的作用是拦截任何一个按键的动作,具体常用的一些断点设置请参考"破解常用断点设置"一文。另外,在注册码的破解中通常需要输入用户名和注册码,一般说来用户名和密码都可以随意输入,但是根据我自己的经验,很多软件对于注册码都会逐位的进行处理,假如输入"78787878"这串数字,那么在跟踪程序的时候我们就无法知道我们当时所看到的"78"倒底是哪一个"78",所以我比较喜欢用"12345678"这样的注册码输入方式,这样的话就就能知道程序是在对注册码的哪一位进行运算,同样的对于那些需要输入较长序列号的软件,输入类似"12345-67890-ABCDEF"这样的序列号较好。 不过有一点大家需要特别的注意:上面讲的注册码输入方式"12345678"是针对拦截WIN32 API函数来说的,假如有些时候直接拦截WIN32 API函数难以找到程序的突破口,而要借助于"S"指令在内存中寻找我们输入的用户名或注册码时,就最好不要采用"12345678"作为注册码,因为内存中很可能有许多的"12345678"字符串,这样我们没有办法知道倒底我们要破解的程序使用的是哪一个"12345678",所以我们应该选择一个不易和内存数据相同的注册码,比如:74747474,对应的搜索指令为: S 30:0 L FFFFFFFF '74747474' 。当然,以上只是我个人的习惯而已,具体用什么样的输入形式可以根据本人的爱好、习惯来定,不必拘泥于某一固定的模式。 8. 关于如何跟踪程序的问题:初学者在开始学习解密的时候往往不知道怎么样去跟踪程序,怎么样找到注册码比较的地方,当面对长长的一堆程序代码时显得不知所措。通常软件的程序内部都会利用一个子程序(即 CALL ********)去验证我们输入的注册码正确与否,对于注册码显式存在的程序,一般都会将所输入的注册码和正确的注册码放进寄存器,然后调用验证子程序进行判断,将结果返回,应用程序根据子程序返回的结果决定是否注册成功,这样的程序经常具有如下的形式: ****:******** MOV EAX,[********] (或 PUSH EAX等形式) ****:******** MOV EDX,[********] (或 PUSH EDX等形式) ****:******** CALL ******** ****:******** TEST EAX,EAX (或 TEST AL,AL,或是没有这一句等形式) ****:******** JNZ ******** (或 JZ ********等形式) 其中EAX和EDX指向的内存区域就是我们输入的注册码和正确的注册码,这里的寄存器EAX和EDX是随意写的,也可以是ECX,EBX,EDI,ESI等等。对于注册码隐式存在的程序,虽然不能直接看到正确的注册码,但是通常也是先将所输入的注册码地址放进某个寄存器,然后调用子程序去验证,破解时就需要进入子程序去分析注册算法。总之,看到子程序(call ********)后面跟着跳转指令(JNZ ********或JZ ********)的地方我们就应该提高警惕,多用 D EAX(或EBX、ECX、EDX、EDI、ESI...等)去看看寄存器指向的内存区域藏着什么东西。有一点大家要提醒大家:看见程序中使用下面这个函数是要注意,即GetDlgItenInt,这个API函数的作用是将输入的文本转化为整数,所以这类程序中是不会有显示存在的注册码的,因为注册码被转换为整数了,程序通常会用CMP ECX,EDX 这种类型的指令去验证注册码的正确性,这里ECX和EDX中存的就是所输入注册码和正确注册码的整数形式,此时可以用 ? edx 和 ? ecx 看到其十进制形式,即我们输入的形式。 9. 关于软件的反安装问题:经常我们使用某些软件时都会遇到一个问题,就是共享软件过期之后即使删掉原程序重新安装,程序依然不能用,还是一样提醒你试用期已过请注册;或者是你已经破解了某个软件,但是还想继续研究它,但是因为软件已经注册好,没有了注册选项,这时你即使彻底删掉程序再重新安装软件,结果程序运行后还是注册过的。遇到这样的情况,其实原因很简单,因为程序将注册或过期信息存在了系统注册表里,所以简单的重新安装软件是无济于事的。解决的办法就是自己删掉注册表中有关的信息,但是因为注册表是WINDOWS系统工作的基础,如果不小心就很可能会损坏它而引起系统异常,所以如果你对注册表不是很熟的话,应该在修改之前备份一下注册表。不论是修改还是备份注册表都可以使用WINDOWS下的注册表管理工具"REGEDIT"来进行,一种办法是在"开始->运行"下输入"regedit"启动它,也可以直接点击"C:\WINDOWS\regedit.exe"来运行。大部分的应用软件都会将自己的信息存在如下的路径中:HKEY_LOCAL_MACHINE\Software、HKEY_LOCAL_MACHINE\Software\Microsoft、HKEY_CURRENT_USER\Software、HKEY_CURRENT_USER\Software\Microsoft 或 HKEY_USERS\.DEFAULT\Software下,具体是哪个地方依据不同的程序而有所不同,只要按上面的顺序肯定能找到有关应用程序的键,然后将和用户名及注册码有关的键值删掉就搞定了。 10. 关于破解练习的问题:学习破解需要大量的练习,对于破解目标的选择,初学者不宜以大型的、著名的软件为目标,因为这些软件通常加密较为复杂,破解不易,应该选择一些比较不出名的、小型的和早些时候的共享软件来练习,因为加密相对简单的软件有利于初学者快速掌握破解思想和技能。至于习题的来源则很广泛,可以从网上下载,也可以去市面上购买一些共享软件光盘。 在这里程序中的代码地址如0167:00408033,其代码段的值(即0167)有可能根据不同的电脑会有区别,不一定一模一样,但偏移值应该是固定的(即00408033不变),所以如果看到破解文章里的程序代码的地址值和自己的电脑里不一样,不要以为搞错地方了,只要你的程序代码正确就不会有问题。
    百度一下试试

  • 第2题:

    什么是软件危机,软件危机有哪几种表现?
    软件开发和维护的过程中所遇到的一系列严重的问题。具体表现在:
    (1)产品不能符合用户的实际需求
    (2)软件开发的效率较低
    (3)软件产品的质量差
    (4)软件开发成本和进度的估算不准确
    (5)软件可维护性差
    (6)软件开发文档资料不完整也不合格
    (7)软件的价格昂贵

  • 第3题:

    什么是软件工程?目前有哪几种主要的软件工程方法?


    正确答案: 概括地说,软件工程是指导计算机软件开发和维护的一门工程学科.采用工程的概念、原理、技术、和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
    但软件工程一直以来都缺乏一个统一的定义,很多学者、组织机构都分别给出了自己的定义。
    主要有传统方法也称为经典软件工程方法或生命周期方法或结构化范型和面向对象方法。

  • 第4题:

    什么叫软件兼容?软件兼容有哪几种?其中哪一种是软件兼容的根本特征?


    正确答案: 软件兼容:一个软件可以不经修改或者只需少量修改就可以由一台计算机移植到另一台计算机上运行。差别只是执行时间的不同。
    向上(下)兼容:按某档计算机编制的程序,不加修改就能运行于比它高(低)档的计算机。
    向后(前)兼容:按某个时期投入市场的某种型号计算机编制的程序,不加修改地就能运行于在它之后(前)投入市场的计算机。
    向后兼容是一定要保证的,它是系列机的根本特征。

  • 第5题:

    软件维护有哪几种类型?


    正确答案: ①改正性维护:诊断和改正错误;
    ②适应性维护:为了和变化了的环境(如软/硬件升级、新数据库等)适当地配合而修改软件;
    ③完善性维护:为了增加新功能,修改已有功能,改造界面,增加HELP等,而修改软件;
    ④预防性维护:为了改进未来的可维护性或可靠性,或为了给未来的改进奠定更好的基础而修改软件。

  • 第6题:

    软件开发成本估算方法有哪几种?


    正确答案:<1>自顶向下估算方法。估算人员参照以前完成的项目所耗费的总成本(或总工作量),来推算将要开发的软件的总成本(或总工作量),然后把它们按阶段、步骤和工作单元进行分配,这样方法称为自顶向下的估算方法。<2>自底向上估算方法。自底向上估算方法是将待开发的软件细分,分别估算每一个子任务所需要的开发工作量,然后将它们加起来,得到软件的总开发量。<3>差别估算方法。差别估算是将开发项目与一个或多个已完成的类似项目进行比较,找出与某个相类似项目的若干不同之处,并估算每个不同之处对成本的影响,导出开发项目的总成本。<4>专家估算法。依靠一个或多个专家对要求的项目做出估算。<5>类推估算法。<6>算式估算法。

  • 第7题:

    有哪几种主要的软件开发模型?


    正确答案:瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型。

  • 第8题:

    问答题
    CNC装置软件采用的并行处理方法有哪几种?这些方法是如何实现并行处理的?

    正确答案: 并行处理的方法有:资源共享、资源重复和时间重叠。
    资源共享是根据“分时共享”的原则,使多个用户按时间顺序使用一套设备。
    时间重叠是根据流水线处理技术,使多个处理过程在时间上相互错开,轮流使用一套设备的几个部分。
    资源重复是通过增加资源(如多CPU)提高运算速度。
    解析: 暂无解析

  • 第9题:

    问答题
    建立运动微分方程有哪几种基本方法?各种方法的适用条件是什么?

    正确答案: 常用的有3种:直接动力平衡法、虚功原理、变分法(哈密顿原理)。
    直接动力平衡法是在达朗贝尔原理和所设阻尼理论下,通过静力分析来建立体系运动方程的方法,也就是静力法的扩展,适用于比较简单的结构。
    利用虚功原理的优点是:虚功为标量,可以按代数方式相加。而作用于结构上的力是矢量,它只能按矢量叠加。因此,对于不便于列平衡方程的复杂体系,虚功方法较平衡法方便。
    哈密顿原理的优点:不明显使用惯性力和弹性力,而分别采用对动能和势能的变分代替。因而对这两项来讲,仅涉及标量处理,即能量。而在虚功原理中,尽管虚功本身是标量,但用来计算虚功的力和虚位移则都是矢量。
    解析: 暂无解析

  • 第10题:

    问答题
    软件开发成本估算方法有哪几种?

    正确答案: 1.自顶向下估算方法。估算人员参照以前完成的项目所耗费的总成本(或总工作量),来推算将要开发的软件的总成本(或总工作量),然后把它们按阶段、步骤和工作单元进行分配,这样方法称为自顶向下的估算方法。
    2.自底向上估算方法。自底向上估算方法是将待开发的软件细分,分别估算每一个子任务所需要的开发工作量,然后将它们加起来,得到软件的总开发量。
    3.差别估算方法。差别估算是将开发项目与一个或多个已完成的类似项目进行比较,找出与某个相类似项目的若干不同之处,并估算每个不同之处对成本的影响,导出开发项目的总成本。
    4.专家估算法。依靠一个或多个专家对要求的项目做出估算。
    5.类推估算法。
    6.算式估算法。
    解析: 暂无解析

  • 第11题:

    多选题
    软件开发方法主要包括()。
    A

    建立快速应用开发模型

    B

    结构化方法

    C

    面向数据结构的软件开发方法

    D

    面向对象的软件开发方法

    E

    建立软件生命周期模型


    正确答案: E,B
    解析: 暂无解析

  • 第12题:

    问答题
    软件测试的目标是什么,有哪几种主要有测试方法?

    正确答案: 软件测试的目标:
    (1)测试是为了发现程序中的错误而执行程序的过程;
    (2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;
    (3)成功的测试是发现了至今为止尚未发现的错误的测试。 软件测试的方法有动态测试、静态测试和正确性证明3种。
    解析: 暂无解析

  • 第13题:

    什么是嵌入式软件?嵌入式软件有哪几种架构?嵌入式软件有什么特点?


    正确答案:嵌入式软件就是嵌入在硬件中的操作系统和开发工具软件,它在产业中的关联关系体现为:芯片设计制造→嵌入式系统软件→嵌入式电子设备开发、制造。冯诺依曼和哈佛体系

  • 第14题:

    软件测试的目标是什么,有哪几种主要有测试方法?


    正确答案: 软件测试的目标:
    (1)测试是为了发现程序中的错误而执行程序的过程;
    (2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;
    (3)成功的测试是发现了至今为止尚未发现的错误的测试。 软件测试的方法有动态测试、静态测试和正确性证明3种。

  • 第15题:

    数控铣床建立工件坐标系有哪几种方法?


    正确答案: (1)建立被加工零件的几何模型。
    (2)根据所确定的加工工艺过程生成刀具轨迹。
    (3)利用仿真功能进行加工轨迹的检验。
    (4)后置处理
    (5)将数控代码传给数控机床进行加工。

  • 第16题:

    有哪几种类型的软件维护?


    正确答案:改正性维护、适应性维护、完善性维护。

  • 第17题:

    软件开发方法主要包括()。

    • A、建立快速应用开发模型
    • B、结构化方法
    • C、面向数据结构的软件开发方法
    • D、面向对象的软件开发方法
    • E、建立软件生命周期模型

    正确答案:B,C,D

  • 第18题:

    见的建立数学模型的方法有哪几种?各有什么特点?


    正确答案: 有以下三种:
    (1)机理分析法:机理明确,应用面广,但需要对象特性清晰,
    (2)实验测试法:不需要对象特性清晰,只要有输入输出数据即可,但适用面受限,
    (3)以上两种方法的结合:通常是机理分析确定结构,实验测试法确定参数,发挥了各自的优点,克服了相应的缺点

  • 第19题:

    CNC装置软件结构模式有哪几种?


    正确答案: 有前后台型、中断型、基于RTOS。

  • 第20题:

    问答题
    什么是软件危机,软件危机有哪几种表现?

    正确答案: 软件开发和维护的过程中所遇到的一系列严重的问题。具体表现在:
    (1)产品不能符合用户的实际需求
    (2)软件开发的效率较低
    (3)软件产品的质量差
    (4)软件开发成本和进度的估算不准确
    (5)软件可维护性差
    (6)软件开发文档资料不完整也不合格
    (7)软件的价格昂贵
    解析: 暂无解析

  • 第21题:

    问答题
    建立高程控制网的方法有哪几种?各有何优缺点?

    正确答案: 高程控制网主要用水准测量和三角高程测量方法建立。
    用水准测量方法建立的高程控制网称为水准网。区域性水准网的等级和精度与国家水准网一致。高程控制网可以一次全面布网﹐也可以分级布设。各等级水准测量都可作为测区的首级高程控制。首级网一般布设成环形网﹐加密时可布设成附合线路或结点网。测区高程应採用国家统一高程系统。小测区联测有困难时﹐也可用假定高程。
    三角高程测量是根据两点间的竖直角和水平距离计算高差而求出高程的﹐其精度低於水准测量。常在地形起伏较大﹑直接水准测量有困难的地区测定三角点的高程﹐为地形测图提供高程控制。
    解析: 暂无解析

  • 第22题:

    问答题
    建立平面控制网的方法有哪几种?各有何优缺点?

    正确答案: 平面控制网 常用三角测量﹑导线测量﹑三边测量和边角测量等方法建立。
    三角测量是建立平面控制网的基本方法之一。但三角网(锁)要求每点与较多的邻点相互通视﹐在隐蔽地区常需建造较高的觇标。
    导线测量布设简单﹐每点仅需与前后两点通视﹐选点方便﹐特别是在隐蔽地区和建筑物多而通视困难的城市﹐应用起来方便灵活。随着电磁波测距仪的发展﹐导线测量的应用日益广泛。
    三边测量要求丈量网中所有的边长。应用电磁波测距仪测定边长后即可进行解算。此法检核条件少﹐推算方位角的精度较低
    解析: 暂无解析

  • 第23题:

    问答题
    什么是软件工程?目前有哪几种主要的软件工程方法?

    正确答案: 概括地说,软件工程是指导计算机软件开发和维护的一门工程学科.采用工程的概念、原理、技术、和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
    但软件工程一直以来都缺乏一个统一的定义,很多学者、组织机构都分别给出了自己的定义。
    主要有传统方法也称为经典软件工程方法或生命周期方法或结构化范型和面向对象方法。
    解析: 暂无解析