好友
阅读权限10
听众
最后登录1970-1-1
|
破解成为可能
程序是怎样运行的:所有程序都是先从 硬盘或软盘,U盘中读取到内存的,CPU通过内存中的信息运行的,而临时的数据也暂时放在 内存的,注册码等等数据也不例外,我们只要将内存中的数据读出来就完成破解了.当然改变程序运行流程也可以达到破解的目的,比如 用 Winhex 修改程序.
程序是怎样运行的:所有程序都是先从 硬盘或软盘,U盘中读取到内存的,CPU通过内存中的信息运行的,而临时的数据也暂时放在 内存的,注册码等等数据也不例外,我们只要将内存中的数据读出来就完成破解了 这样 网友中 WinHex 内存着注册码也就有了可能。原理:
数据是在内存中保存的,用 WinHex 内存着注册码也就有了可能,但是内存中保存注册码的数据不是永远的,当别的数据被计算,写入时往往会覆盖这时 用 WinHex 内存着注册码也就无法找注册码了,我们只要用写调试软件,让他在程序刚在内存中写完正确的注册码我们就让程序停止运行,防止程序继续运行产生的数据覆盖内存中的注册码.
软件介绍:
运行我修改后的 OllyDbg 名字是 那个 CMD 文件如图
file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/Rar$EX04.531/29、软件破解的思路2/熟悉%20Crack%20软件/Pic/1.gif
他主要有
汇编代码地址区:他其实就是汇编代码的指令地址。(注意这种颜色的背景代表程序运行在这行代码上,并且中断在这里,如果是蓝色背景表示这个地址上被下了断点,也就是程序运行在这里时会被中断)
汇编代码区:显示被调试的汇编代码。
寄存器区:显示寄存器里面的信息。注册码一般写在这块。
堆栈区:显示 栈记录,显示 一些寄存器过去的记录。注册码很多会在这里出现。
显示当前状态区:显示当前状态,比如中断信息等等。
机器码区:显示的就是机器码,就是该行汇编命令的代码,相应的机器码=相应的汇编命令,所以用 WinHex 修改程序时时通过修改机器码,达到对汇编命令的修改。
内存区:高级跟踪分析时用到。
快捷键
F2 下断点。使程序运行到断点地址时中断下来,同时在 显示当前状态区,会显示中断信息.如果在汇编代码区选中一行命令,按下它,汇编代码地址区的这行地址上背景显示蓝色,再次按下它,蓝色消失说明断点解除。
F8 单步运行,也就是当你按下它时,程序往下运行一行.
F9 运行
在没有断点是运行可以使程序运行到断点处,中断。
在程序中断在断点时按它,可以使程序跳过断点继续运行.
名词解释:
断点:程序运行暂时时停止的地方。
汇编代码:有称机器语言,程序通过汇编语言和CPU 建立关系,正常运行,所有程序都是先被翻译成汇编语言再运行的. VC,VB,Delphi等等高级语言写的程序,依然要被翻译成汇编代码的。
汇编语言介绍:
跳转命令
JA/JNBE 不小于或不等于时转移.
JAE/JNB 大于或等于转移.
JB/JNAE 小于转移.
JBE/JNA 小于或等于转移.
JG/JNLE 大于转移.
JGE/JNL 大于或等于转移.
JL/JNGE 小于转移.
JLE/JNG 小于或等于转移.
JE/JZ 等于转移.
JNE/JNZ 不等于时转移.
JMP 无条件跳转
CALL 远程调用,也就是调用子程序,比如调用计算注册码的一段子程序.
NOP 无效空指令,当程序运行到该命令时,它什么都不做。
Olldbug 的设置:
1. 路径设施. 方法:启动 CMD.exe 选项菜单》界面选项》目录》 把路径修改成当前 Olldbug 所在的路径的相关文件夹即可.
2. 文件关联. 方法:CMD.exe 选项菜单》菜单关联》添加 olldbg 到系统资源器菜单》OK.
建议大家使用我修改后的 Olldbug(就是那个 CMD程序),其他的设置我已经设置好,只要把上面提到的两项修改下即可.
Fi.exe 简单使用:他是一款侦壳的工具,现在不要求大家对壳有理解啦,下一课要用到的。使用方法:把 Fi.exe 复制到你要破解的程序文件夹中,按住你要破解的软件图标拖到 Fi.exe 图标上即可.然后出现如图
file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/Rar$EX04.531/29、软件破解的思路2/熟悉%20Crack%20软件/Pic/2.gif
注意图上注明的字,如果软件被壳加过,下面的字会变成 绿色,黄色,或红色的注释,从注释中我们可以获得改软件被什么壳加过。如果软件没有加过壳,那么如图显示,字体颜色灰暗,标识软件是什么语言写的.
分析软件流程:(我们以破解 动画.exe 密码为例.)
运行 动画.exe ,随便便输个密码,点确定,OK 成功!(做梦,那有这么好的运气啊~当然显示 Password Wrong~).
它的运行流程应该是这样的: 输入密码后点确定按钮. 软件首先从你输入的密码框中截取密码 >> 软件计算出正确密码 >> 对比你输入的密码 >> 下一步就是跳转了(这块最重要) .
跳转分两类:
一. 成功跳转. 就是说,当你密码输入与正确密码一样时,他跳转到成功的地方.如果你输的密码不正确那么它就不跳到成功的代码段,而一直向下运行(显示错误的代码段)。
二. 错误跳转. 正好遇上面相反,当你密码输入与正确密码不同时时,他跳转到失败的地方.如果你输的密码正确那么它就不跳到失败的代码段,而一直向下运行(显示正确的代码段)。
如图:
file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/Rar$EX04.531/29、软件破解的思路2/熟悉%20Crack%20软件/Pic/3.gif
关键 Call :其实就是用来计算 正确序列号或密码的子程序.
关键跳 :一般时 上面汇编语言跳转命令介绍里面的 JNE .
问:如何找 关键 Call 或 关键跳?
答:看上面流程我们知道,不管是显示失败信息还是显示成功信息,他们都在关键跳下,我们只要根据 成功或错误所提示的文字来找成功或错误代码段,找到相关代码段后,再往上找,第一个跳转命令(多数是 JNE)就是关键跳啦~关键跳 上面的第一个 Call 命令一般时 关键 Call ,我们破解的时候只要在 关键 Call 上,下断点,再单步跟踪的话,就可以看到正确的注册码和错误的注册码(我们这里是密码).
运行下 目标程序,随便输下密码,确定,显示 Password Wrong! (即上面说的显示错误信息)
1. 加载要破解的软件。先把刚才运行的 试验品.exe 关闭 ,运行 CMD,点文件菜单>> 打开>>你要破解的软件.或直接再 试验品.exe 上,右击鼠标>>Ollydbg. 这样要破解的软件就被 CMD(Ollydbg)加载了!
2. 查找错误信息. 再 汇编代码区右击鼠标 >> 搜索 >> 字符串参考 >> 再弹出的窗口中找 "Password Wrong!"
如图:
file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/Rar$EX04.531/29、软件破解的思路2/熟悉%20Crack%20软件/Pic/4.gif
我们在这个窗口里面找失败信息或成功信息(不过中文信息他不支持),看 "Password Wrong!" 的地址是 402048 ,我们在上面双击下,最上面的那个窗口就来到了 402048
00402025 |. E8 24FEFFFF CALL 试验品.00401E4E
0040202A |. FFB6 A4000000 PUSH DWORD PTR DS:[ESI+A4] ; /s2
00402030 |. 8D45 CC LEA EAX,DWORD PTR SS:[EBP-34] ; |
00402033 |. 50 PUSH EAX ; |s1
00402034 |. FF15 E0234100 CALL DWORD PTR DS:[<&MSVCRT._stricmp>] ; \_stricmp //关键 Call 我们在上面下断点,鼠标选中这
0040203A |. 83C4 20 ADD ESP,20 一行,右击鼠标,断点切换(其实可以直接选中
0040203D |. 85C0 TEST EAX,EAX 这行 按 F2 就可以完成下断点了)
0040203F |. 74 15 JE SHORT 试验品.00402056 //关键跳
00402041 |. 6A 40 PUSH 40
00402043 |. 68 A4504100 PUSH 试验品.004150A4 ; ASCII "Player"
00402048 |. 68 94504100 PUSH 试验品.00415094 ; ASCII "Password Wrong!" //我们首先来到这里,往上找.
0040204D |. 8BCE MOV ECX,ESI
402048 下面就是错误信息代码段,我们在最上面的那个窗口中往 402048 上面找关键跳和关键 Call.关键跳的地址是 40203F 关键 Call 地址是 402034
00402034 上下断点如图:
file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/Rar$EX04.531/29、软件破解的思路2/熟悉%20Crack%20软件/Pic/7.gif
变成蓝色后,按 F9 运行,在运行的 动画.exe 中输入密码,我随手输 123456789 确定,回到 CMD 的窗空中,在最下方状态兰中我们看到了当前的状态,中断在 地址 402034.
file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/Rar$EX04.531/29、软件破解的思路2/熟悉%20Crack%20软件/Pic/6.gif
在,寄存器区,我们看到了 醒目的 "qq24882688"字符,这是什么啊??呵呵~在往下,看堆栈区中的数据如图:
file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/Rar$EX04.531/29、软件破解的思路2/熟悉%20Crack%20软件/Pic/5.gif
0012F720 0012F778 |s1 = "qq24882688"
0012F724 003A6860 \s2 = "123456789"
0012F728 0012F778 ASCII "qq24882688"
123456789 是我们随手输的,qq24882688 是正确的密码~
成功!
还有就是收尾工作:
1. 关闭 CMD 中加载的程序: 点下面的那个 叉.
file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/Rar$EX04.531/29、软件破解的思路2/熟悉%20Crack%20软件/Pic/8.gif
2. 选择插进选项 >> 文件清除 >> 删除全部文件.
file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/Rar$EX04.531/29、软件破解的思路2/熟悉%20Crack%20软件/Pic/9.gif
结束了~~~
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|