说句老实话,LZ的加密做的真的很烂。
最开始的登录密码是加密后发送给服务器的,但是他本地的程序是不负责密码长度和有效性的校验的。
因此也给了我一个机会,用a、aa、aaa、aaaa等简单密码得到加密后的密文,通过密文之间的比对,
倒推出了加密算法,进而登录的模拟发送报文也就迎刃而解了。
LZ升级的牌从服务器发送到客户端是经过加密的,刚开始的时候我也尝试用和登录密码同样的方法去破解,但是失败了,需要尝试的次数太多,而且不确定。
后来通过查看升级的存盘文件发现:存盘文件中的牌也是加密的,通过LZ的单机版升级可以打开存盘文件,那么说明单机版的程序里面是有解密的代码的。
因此我选择用IDA对单机版升级程序进行了反编译,通过单步跟踪和关键字符串定位等方法,终于拿到了解密牌的算法。
一点小插曲:LZ的牌是3张3张的发给客户端的,3张一个密钥进行加密,密钥在发送了加密的牌的消息后跟随发送到客户端,我不明白他为什么不采用私钥呢?
阅读(1436) | 评论(0) | 转发(0) |