黑客攻防从入门到精通(加密与解密篇)
上QQ阅读APP看书,第一时间看更新

技巧与问答

❖ 什么样的加密算法是一个优秀的加密算法?

从理论上说,任何加密算法都可以破解,但是只要这种加密算法的加密强度到达一定程度,破解者可能在一定的时间内无法破解。也就是说,如果这种算法使得破解者在破解时需要花费大量的时间,金钱等,其破解的代价已经远远超出了破解软件所带来的利益,就说明这种算法是一种优秀的加密算法。

❖ 什么是网络验证,以及网络验证的破解思路是什么?

网络验证是目前流行的一种保护技术,其优点是可以将一些关键数据放到服务器上,运行软件时必须从服务器上获取这些数据才能正确运行。

破解的思路是拦截服务器返回的数据包,分析程序是如何处理数据包的。

相关的函数如下。

常用的有sand和recv两个socket函数,另外还有微软扩展的函数WSASend和WSARecv。

(1)send

int send(
                        socket s,                  //套接字描述符
                        const char FAR *buf,      //缓冲区
                        int len,                   //实际要发送的数据的字节数
                        int flags                   //附加标识,一般都为0
                      );

(2)recv

int recv(
                      socket s,                  //套接字描述符
                      char FAR *buf,            //缓冲区
                      int len,                   //缓冲区buffer的长度
                      int flags                   //附加标识,一般都为0
                      );

网络验证破解的一般思路如下。

如果网络数据包内容固定,可以将数据包的内容进行抓取,写个本地服务端模拟服务器。

如果验证的数据包内容不固定,则必须分析其结构,找出相应的算法。

❖ 什么是软件破解版和注册版?

破解版(crack):一般是需要替换文件,达到注册的目的。所替换的文件是通过汇编或其他方法跳过注册码的验证以达到注册的目的。

注册版(keygen):是指在不改变源程序的情况下通过序列号(正版序列号或通过注册机)得到序列号。