我算是一个破解者(cracker)。从大学第一次尝试jmp跳转开始,就走上不归路。现在我已经不做破解了,高危行业,容易把自己弄进去。我就以我的实战经历讲下软件加密密码破解思路。
一、密码存储在本地,一般存储在文件,注册表,数据库,也有直接写到软件里。1.明文存储。用调试工具跟踪执行到密码判断的代码,一般是一个比较语句:如果(输入)=(密码),在计算机内存中就能看到密码。2.密码可逆加密存储。一种情况程序中把加密密码解密后,还是明文比较,我们同样能在内存中看到密码。一种情况是非明文比较,一般需要阅读汇编代码或伪代码或脚本。弄明白加密算法,自己写解密算法。把存储的加密密码解密。3.密码加密不可逆。一般很难破解到密码。
二、不存储密码。一般也很难破解到密码。
三、做破解就是要从不可能中找可能。对很难破解的还是有补救的办法1、有些情况我们不一定需要密码。如文件补丁,内存补丁,直接跳过密码验证部分。2、根据算法的漏洞和程序设计的漏洞破解密码。你买一把很安全的锁把自行车锁在一颗小树苗上,当然也不安全。我一般采用暴力穷举+根据漏洞缩小范围+已知明文(甚至猜测明文)攻击。3、破解就一种信念。坚信你有漏洞就能被我抓到。曾经为了破解某个软件,到软件作者微博去观摩他的技术结构,虽然并没起到什么作用,至少心理上得到鼓舞。也曾经遇到一个棘手问题,拿不到部分要破解的关键数据,后来甲方找到被破解公司内部员工得到数据。