7. 关于如何设置断点的问题:正确恰当的设置好断点对于快速有效的解密非常重要,好的断点设置可以使我们迅速找到关键的程序段,而不恰当的断点则会对解密造成不必要的精力消耗,甚至根本就不能拦截到程序的运行。
4 ]# k0 l; o0 T t4 j; w" S9 d! y8 h打造最好的电脑自学交流论坛
2 F( G" E. O0 n0 d( Gwww.520diannao.com 但是具体什么时候用什么断点比较合适很难说,这需要自己用经验去累积,总的说来bpx hmemcpy这个万能断点对大多数注册码方式的软件都有用,初学者不妨多试试这个断点(通常我也是用这个断点设置,懒嘛^_^,哈哈。。。)。
& d: ^1 P' D2 H; t" f电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
$ w+ G3 ^1 S# E0 a$ i* ?2 d" ~电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站 对于那些需要暴力破解的非注册码方式的软件,通常我们应该拦截对话框(如bpx DialogBox)和消息框(如bpx MessageBox(A))等。不论对于哪一类软件,当我们设置的断点均没有效果时,可是试一下bpx lockmytask,这个断点的作用是拦截任何一个按键的动作,具体常用的一些断点设置请参考"破解常用断点设置"一文。
8 @7 R- U8 Y, f; d) W我爱电脑技术社区--打造最好的电脑技术自学交流平台我爱电脑技术社区--打造最好的电脑技术自学交流平台* }5 Z$ c7 A D
另外,在注册码的破解中通常需要输入用户名和注册码,一般说来用户名和密码都可以随意输入,但是根据我自己的经验,很多软件对于注册码都会逐位的进行处理,假如输入"78787878"这串数字,那么在跟踪程序的时候我们就无法知道我们当时所看到的"78"倒底是哪一个"78",所以我比较喜欢用"12345678"这样的注册码输入方式,这样的话就就能知道程序是在对注册码的哪一位进行运算,同样的对于那些需要输入较长序列号的软件,输入类似"12345-67890-ABCDEF"这样的序列号较好。
0 j! C6 ]: d0 j$ l2 R" @www.520diannao.comwww.520diannao.com7 T0 I2 j+ d) p+ l8 B1 @
$ k: |& P+ U9 T+ M% y5 {6 E) g我爱电脑技术论坛www.520diannao.com; [# y0 X, Z1 X% w9 a6 n
3 十招教你学会软件破解 www.520diannao.com8 x/ R1 t. j9 s7 c C; F+ Q
; A5 i' `3 g; A/ h$ H- r4 o1 M- j8 G% N
不过有一点大家需要特别的注意:上面讲的注册码输入方式"12345678"是针对拦截WIN32 API函数来说的,假如有些时候直接拦截WIN32 API函数难以找到程序的突破口,而要借助于"S"指令在内存中寻找我们输入的用户名或注册码时,就最好不要采用"12345678"作为注册码,因为内存中很可能有许多的"12345678"字符串,这样我们没有办法知道倒底我们要破解的程序使用的是哪一个"12345678",所以我们应该选择一个不易和内存数据相同的注册码,比如:74747474(本人喜欢用,意思嘛:去死去死。。。哈哈哈^_^),对应的搜索指令为: S 30:0 L FFFFFFFF ‘74747474‘ 。当然,以上只是我个人的习惯而已,具体用什么样的输入形式可以根据本人的爱好、习惯来定,不必拘泥于某一固定的模式。
' ]: K+ h( K' a6 U& e1 v+ z我爱电脑技术论坛2 @. }5 b6 r0 s
8. 关于如何跟踪程序的问题:初学者在开始学习解密的时候往往不知道怎么样去跟踪程序,怎么样找到注册码比较的地方,当面对长长的一堆程序代码时显得不知所措。通常软件的程序内部都会利用一个子程序(即 CALL ********)去验证我们输入的注册码正确与否,对于注册码显式存在的程序,一般都会将所输入的注册码和正确的注册码放进寄存器,然后调用验证子程序进行判断,将结果返回,应用程序根据子程序返回的结果决定是否注册成功,这样的程序经常具有如下的形式:
$ }2 W- y% N+ N1 Z& lwww.520diannao.com
3 J6 H- V$ r# E: R7 I打造最好的电脑自学交流论坛 ****:******** MOV EAX,[********] (或 PUSH EAX等形式)
3 K" H4 d3 \+ z4 g0 R2 W打造最好的电脑自学交流论坛
9 c3 u2 K' Q8 S4 r+ |打造最好的电脑自学交流论坛 ****:******** MOV EDX,[********] (或 PUSH EDX等形式) 1 B( S: e. O% c' {
/ i+ F. f# C9 q5 e9 T! Y我爱电脑技术社区--打造最好的电脑技术自学交流平台 ****:******** CALL ********
- S8 Y& w! y5 |# t" C) Nwww.520diannao.com
" L! t$ b: q, m ****:******** TEST EAX,EAX (或 TEST AL,AL,或是没有这一句等形式)
. R, ?6 i% X% L8 V* a+ P% O0 Y打造最好的电脑自学交流论坛www.520diannao.com* t: G9 C+ w J6 I" S$ S
****:******** JNZ ******** (或 JZ ********等形式) 我爱电脑技术社区--打造最好的电脑技术自学交流平台. Z4 O7 K# R! n _! o
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站) X) E' Q& G& I7 ~( L0 O0 L
其中EAX和EDX指向的内存区域就是我们输入的注册码和正确的注册码,这里的寄存器EAX和EDX是随意写的,也可以是ECX,EBX,EDI,ESI等等。对于注册码隐式存在的程序,虽然不能直接看到正确的注册码,但是通常也是先将所输入的注册码地址放进某个寄存器,然后调用子程序去验证,破解时就需要进入子程序去分析注册算法。总之,看到子程序(call ********)后面跟着跳转指令(JNZ ********或JZ ********)的地方我们就应该提高警惕,多用 D EAX(或EBX、ECX、EDX、EDI、ESI...等)去看看寄存器指向的内存区域藏着什么东西。
6 k% m1 F* G; ~2 C. R电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
8 b0 i. N6 R( y; J6 t( o4 }5 L打造最好的电脑自学交流论坛 有一点大家要提醒大家:看见程序中使用下面这个函数是要注意,即GetDlgItenInt,这个API函数的作用是将输入的文本转化为整数,所以这类程序中是不会有显示存在的注册码的,因为注册码被转换为整数了,程序通常会用CMP ECX,EDX 这种类型的指令去验证注册码的正确性,这里ECX和EDX中存的就是所输入注册码和正确注册码的整数形式,此时可以用 ? edx 和 ? ecx 看到其十进制形式,即我们输入的形式。
6 `5 r z. s2 s. c( c" f5 f* {我爱电脑技术论坛电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站- T: |# @" a: u' U
9. 关于软件的反安装问题:经常我们使用某些软件时都会遇到一个问题,就是共享软件过期之后即使删掉原程序重新安装,程序依然不能用,还是一样提醒你试用期已过请注册;或者是你已经破解了某个软件,但是还想继续研究它,但是因为软件已经注册好,没有了注册选项,这时你即使彻底删掉程序再重新安装软件,结果程序运行后还是注册过的。
4 S! c* u$ e. X9 a打造最好的电脑自学交流论坛
% r. e0 e" W0 j! N* P" U3 e我爱电脑技术论坛 遇到这样的情况,其实原因很简单,因为程序将注册或过期信息存在了系统注册表里,所以简单的重新安装软件是无济于事的。解决的办法就是自己删掉注册表中有关的信息,但是因为注册表是WINDOWS系统工作的基础,如果不小心就很可能会损坏它而引起系统异常,所以如果你对注册表不是很熟的话,应该在修改之前备份一下注册表。
0 d& g4 G7 q, j3 s( Y: S打造最好的电脑自学交流论坛
* R8 q. o: ~; q. [. v# D 不论是修改还是备份注册表都可以使用WINDOWS下的注册表管理工具"REGEDIT"来进行,一种办法是在"开始->运行"下输入"regedit"启动它,也可以直接点击"C:WINDOWSregedit.exe"来运行。大部分的应用软件都会将自己的信息存在如下的路径中:HKEY_LOCAL_MACHINESoftware、HKEY_LOCAL_MACHINESoftwareMicrosoft、HKEY_CURRENT_USERSoftware、HKEY_CURRENT_USERSoftwareMicrosoft 或 HKEY_USERS.DEFAULTSoftware下,具体是哪个地方依据不同的程序而有所不同,只要按上面的顺序肯定能找到有关应用程序的键,然后将和用户名及注册码有关的键值删掉就搞定了。 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站, \. ?' p/ Q: d" `( v( r
7 z% r7 s3 [# d: j. L 10. 关于破解练习的问题:学习破解需要大量的练习,对于破解目标的选择,初学者不宜以大型的、著名的软件为目标,因为这些软件通常加密较为复杂,破解不易,应该选择一些比较不出名的、小型的和早些时候的共享软件来练习,因为加密相对简单的软件有利于初学者快速掌握破解思想和技能。至于习题的来源则很广泛,可以从网上下载,也可以去市面上购买一些共享软件光盘。