WEB开发网
开发学院网络安全黑客技术 解密宝典——十招教你学会软件破解 阅读

解密宝典——十招教你学会软件破解

 2006-11-07 20:10:12 来源:WEB开发网   
核心提示: 8. 关于如何跟踪程序的问题初学者在开始学习解密的时候往往不知道怎么样去跟踪程序,怎么样找到注册码比较的地方,解密宝典——十招教你学会软件破解(6),当面对长长的一堆程序代码时显得不知所措,通常软件的程序内部都会利用一个子程序(即 CALL )去验证我们输入的注册码正确与否,这里ECX和E

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 看到其十进制形式,即我们输入的形式。

上一页  1 2 3 4 5 6 7  下一页

Tags:解密 宝典 学会

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接