旅游注意事项:破解注意事项

   谈到了些在学习解密过程中经常遇到问题本人根据自己经验简单给大家谈这些问题对于初学者来说常常是很需要搞明白根据我自己学习经历如果你直接照着很多破解教程去学习多半都会把自己搞得满头雾水有很多概念要么自己不是很清楚要么根本就不知道是如何回事所以希望通过下面讨论给大家帮助:

1. 断点:所谓断点就是被中断地方这个词对于解密者来说是再熟悉不过了那么什么又是中断呢?中断就是由于有特殊事件(中断事件)发生计算机暂停当前任务(即)转而去执行另外任务(中断服务)然后再返回原先任务继续执行打个比方:你正在上班突然有同学打电话告诉你他从外地坐火车过来要你去火车站接他然后你就向老板临时请假赶往火车站去接同学接着将他安顿好随后你又返回公司继续上班这就是个中断过程我们解密过程就是等到去获取我们输入注册码并准备和正确注册码相比较时候将它中断下来然后我们通过分析找到正确注册码所以我们需要为被解密设置断点在适当时候切入内部追踪到注册码从而达到crack

2. 领空:这是个非常重要概念但是也初学者是常常不明白地方我们在各种各样破解文章里都能看到领空这个词如果你搞不清楚到底领空在哪里那么你就不可能进入破解大门或许你也曾破解过某些软件Software但那只是瞎猫碰到死老鼠而已(以前我就是这样^_^,现在说起来都不好意思喔!)所谓领空说白了就是自己地方也就是我们要破解自己码所处位置也许你马上会问:我是在运行时候设置断点为什么中断后不是在自己空间呢?每个编写都没有固定模式所以我们要在想要切入时候中断就必须不依赖具体设置断点也就是我们设置断点应该是每个都会用到东西在DOS时代基本上所有都是工作在中断的上即几乎所有DOS都会去各种中断来完成任务但是到了WINDOWS时代没有权力直接中断WINDOWS系统提供了个系统功能平台(API)就向DOS以中断为基础WINDOWS以API为基础来实现和系统打交道从而各种功能所以WINDWOS下软件Software破解其断点设置是以API为基础即当某个API时中断其正常运行然后进行解密例如在SOFTICE中设置下面断点:bpx GetDlgItemText(获取对话框文本)当我们要破解要读取输入数据而GetDlgItemText时立即被SOFTICE拦截到从而被破解停留在GetDlgItemText而GetDlgItemText是处于WINDWOS自己管理系统区域如果我们擅自改掉这部分代码那就大祸临头了^_^!所以我们要从系统区域返回到被破解自己地方(即领空)才能对进行破解至于怎样看领空请看前面SOFTICE图解试想下:对于每个都会我们可能从那里找到什么有用东西吗?(如何样去加密是自己决定而不是系统功能实现!)

3. API:即Application Programming Interface简写中文叫应用编程接口个系统定义大集合它提供了访问操作系统特征思路方法 API包含了几百个应用这些执行所有必须和操作系统相关操作如内存分配、向屏幕输出和创建窗口等用户通过API接口同WINDOWS打交道无论什么样应用其底层最终都是通过各种API来实现各种功能通常API有两中基本形式:Win16和Win32 Win16是原来、API16位版本用于Windows 3.1;Win32是现在、API32位版本用于Windows 95/98/NT/ME/2000Win32包括了Win16是Win16超集大多数名字、使用方法都是相同16位API和32位API区别在于最后个字母例如我们设置这样断点:bpx GetDlgItemText、bpx GetDlgItemTextA和bpx GetDlgItemTextW其中 GetDlgItemText是16位APIGetDlgItemTextA和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”这样存在注册码(这里是随意写)对于注册码显式存在软件Software破解起来比较容易;但是有些软件Software中并不会直接将我们输入注册码和正确注册码进行比较比如有可能将注册码换算成整数、或是将注册码拆开然后将每位注册码分开在区别地方逐进行比较或者是将我们输入注册码进行某种变换再用某个特殊进行验证等等总的应用会采取各种区别复杂运算方式来回避直接注册码比较对于这类我们通常要下功夫去仔细跟踪、分析每个功能找到加密算法然后才能破解它当然这需要8086汇编编程功底和很大耐心和精力

5. 有关软件Software破解方式:本人将破解方式分为两大类即完全破解和暴力破解所谓完全破解主要是针对那些需要输入注册码或密码等软件Software来说如果我们能通过对跟踪找到正确注册码通过软件Software本身注册功能正常注册了软件Software这样破解称的为完全破解;但如果有些软件Software本身没有提供注册功能只是提供试用(DEMO)或是注册不能通过软件Software本身进行(例如需要获取另外个专用注册通过INTERNET注册等等)或者是软件Software本身加密技术比较复杂软件Software破解者能力、精力、时间有限不能直接得到正确注册码此时我们需要去修改软件Software本身即人为改变软件Software运行方向这样破解称的为暴力破解

6. 有关破解教程中代码地址问题:破解教程中都会放上部分代码以帮助讲解分析思路方法例如下面代码:
......
0167:00408033 PUSH 00
0167:00408035 PUSH EBX
0167:00408036 CALL [USER32!EndDialog]
0167:0040803C JMP 0040812C
......
在这里代码地址如0167:00408033其代码段值(即0167)有可能根据区别电脑会有区别但偏移值应该是固定(即00408033不变)所以如果看到破解文章里代码地址值和自己电脑里不不要以为搞错地方了只要你代码正确就不会有问题

7. 有关如何设置断点问题:正确恰当设置好断点对于快速有效解密非常重要断点设置可以使我们迅速找到关键而不恰当断点则会对解密造成不必要精力消耗甚至根本就不能拦截到运行但是具体什么时候用什么断点比较合适很难说这需要自己用经验去累积说来bpx hmemcpy这个万能断点对大多数注册码方式软件Software都有用初学者不妨多试试这个断点(通常我也是用这个断点设置懒嘛^_^哈哈)对于那些需要暴力破解非注册码方式软件Software通常我们应该拦截对话框(如bpx DialogBox)和消息框(如bpx MessageBox(A))等不论对于哪类软件Software当我们设置断点均没有效果时可是试下bpx lockmytask这个断点作用是拦截任何个按键动作具体常用些断点设置请参考“破解常用断点设置”另外在注册码破解中通常需要输入用户名和注册码般说来用户名和密码都可以随意输入但是根据我自己经验很多软件Software对于注册码都会逐位进行处理假如输入“78787878”这串数字那么在跟踪时候我们就无法知道我们当时所看到“78”倒底是哪个“78”所以我比较喜欢用“12345678”这样注册码输入方式这样话就就能知道是在对注册码位进行运算同样对于那些需要输入较长序列号软件Software输入类似“12345-67890-ABCDEF”这样序列号较好 不过有点大家需要特别注意:上面讲注册码输入方式“12345678”是针对拦截WIN32 API来说假如有些时候直接拦截WIN32 API难以找到突破口而要借助于“S”指令在内存中寻找我们输入用户名或注册码时就最好不要采用“12345678”作为注册码内存中很可能有许多“12345678”这样我们没有办法知道倒底我们要破解使用是哪个“12345678”所以我们应该选择个不易和内存数据相同注册码比如:74747474(本人喜欢用意思嘛:去死去死哈哈哈^_^)对应搜索指令为: S 30:0 L FFFFFFFF '74747474' 当然以上只是我个人习惯而已具体用什么样输入形式可以根据本人爱好、习惯来定不必拘泥于某固定模式

8. 有关如何跟踪问题:初学者在开始学习解密时候往往不知道如何样去跟踪如何样找到注册码比较地方当面对长长代码时显得不知所措通常软件Software内部都会利用个子(即 CALL ********)去验证我们输入注册码正确和否对于注册码显式存在般都会将所输入注册码和正确注册码放进寄存器然后验证子进行判断将结果返回应用根据子返回结果决定是否注册成功这样经常具有如下形式:
****:******** MOV EAX,[********]  (或 PUSH EAX等形式)
****:******** MOV EDX,[********]  (或 PUSH EDX等形式)
****:******** CALL ********
****:******** TEST EAX,EAX     (或 TEST AL,AL或是没有这句等形式)
****:******** JNZ ********     (或 JZ ********等形式)
其中EAX和EDX指向内存区域就是我们输入注册码和正确注册码这里寄存器EAX和EDX是随意写也可以是ECXEBXEDIESI等等对于注册码隐式存在虽然不能直接看到正确注册码但是通常也是先将所输入注册码地址放进某个寄存器然后去验证破解时就需要进入子去分析注册算法总的看到子(call ********)后面跟着跳转指令(JNZ ********或JZ ********)地方我们就应该提高警惕多用 D EAX(或EBX、ECX、EDX、EDI、ESI...等)去看看寄存器指向内存区域藏着什么东西点大家要提醒大家:看见中使用下面这个是要注意即GetDlgItenInt这个API作用是将输入文本转化为整数所以这类中是不会有显示存在注册码注册码被转换为整数了通常会用 CMP ECX,EDX 这种类型指令去验证注册码正确性这里ECX和EDX中存就是所输入注册码和正确注册码整数形式此时可以用 ? edx 和 ? ecx 看到其十进制形式即我们输入形式

9. 有关软件Software反安装问题:经常我们使用某些软件Software时都会遇到个问题就是共享软件Software过期的后即使删掉原重新安装依然不能用还是样提醒你试用期已过请注册;或者是你已经破解了某个软件Software但是还想继续研究它但是软件Software已经注册好没有了注册选项这时你即使彻底删掉再重新安装软件Software结果运行后还是注册过遇到这样情况其实原因很简单将注册或过期信息存在了系统注册表里所以简单重新安装软件Software是无济于事解决办法就是自己删掉注册表中有关信息但是注册表是WINDOWS系统工作基础如果不小心就很可能会损坏它而引起系统异常所以如果你对注册表不是很熟应该在修改的前备份下注册表不论是修改还是备份注册表都可以使用WINDOWS下注册表管理工具“REGEDIT”来进行种办法是在“开始->运行”下输入“regedit”启动它也可以直接点击“C:\WINDOWS\regedit.exe”来运行大部分应用软件Software都会将自己信息存在如下路径中:HKEY_LOCAL_MACHINE\Software、HKEY_LOCAL_MACHINE\Software\Microsoft、HKEY_CURRENT_USER\Software、HKEY_CURRENT_USER\Software\Microsoft 或 HKEY_USERS\.DEFAULT\Software下具体是哪个地方依据区别而有所区别只要按上面顺序肯定能找到有关应用然后将和用户名及注册码有关键值删掉就搞定了

10. 有关破解练习问题:学习破解需要大量练习对于破解目标选择初学者不宜以大型、著名软件Software为目标这些软件Software通常加密较为复杂破解不易应该选择些比较不出名、小型和早些时候共享软件Software来练习加密相对简单软件Software有利于初学者快速掌握破解思想和技能至于习题来源则很广泛可以从网上下载也可以去市面上购买些共享软件Software光盘



  • 篇文章: 远程ACCESS数据库源代码

  • 篇文章: PHP 脚本:随心所欲代码逐渐流行
  • Tags:  面试注意事项 旅游注意事项

    延伸阅读

    最新评论

    发表评论