好友
阅读权限30
听众
最后登录1970-1-1
|
算法很简单,不过我手头上没有DES的算法库,或者说,我手头上的DES库算出的结果与源程序不一致,所以就只能算了。这里大致说一下算法吧。 代码开始验证部分都在:00402FB8,很容易就会找到的了。
首先,程序会取当前的时间,运算得到一个DWORD的数字a
然后,读入用户名,与a一起运算得到另一个DWORD的数字b
对这个b进行base64加密,得到8位的字符串 #key
然后用这个key作为des的秘钥,加密 {01, 00, 00, 00, 31, 00, 00, 00}。得到key2
最后利用key2DES解码Pass,得到的Pass为一个字符串。到底内容是什么就没有继续研究了。
所以实际上算法可能会有点差异,就不说了。
因为跑到这里关键的地方就已经出现了。
00403F63 > 8B45 F8 MOV EAX, DWORD PTR SS:[EBP-0x8] ; loc_403F63,Get bool
00403F66 |. A2 8F534600 MOV BYTE PTR DS:[<byte_46538F>], AL ; Set Flag, 设置成功或失败标志
前面的call返回一个bool类型的数据,然后根据这个数组设置全局byte变量,,这里就是设置bSuccess了,所以就在这里下手,赋值为1就OK了。
00403F63 > 33C0 XOR EAX, EAX ; loc_403F63
00403F65 40 INC EAX
00403F66 A2 8F539090 MOV BYTE PTR DS:[0x9090538F], AL ; Set Flag, 设置成功或失败标志
恰好空间足够,3个字节足以爆破了。
Crack.zip
(199.56 KB, 下载次数: 26)
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|