运行程序
不输入的话
错误提示
查壳
是delphi程序
载入OD分析
看一眼字符串
去成功的地方看看
往上走,在函数头下个断,从函数头开始分析
- 分析一下算法
先判断输入是否为空
然后在这个两个地址读取出两个十六进制数,并转为十进制字符串
判断完这个两个Serial后,如果不满足就跳过成功
这个两个地址的数怎么来的呢?
在这两个地址下一个内存写入断点
当输入 “s” 的时候断下来了
观察这段程序,就是往那两个地址写入值的,是通过累加的方式。
例如输入sword,程序就会把对应的值都加起来,最后和输入的两个serial对比
算法分析
Name = s
Serial1 = 2224
Serial2 = 1
暴力破解
修改两个对比serial的地方就好了
结果
总结
刚开始的时候对这个内存地址的值感到奇怪,知道怎么来的,只有通过下内存写入断点查看才知道,在输入用户名的时候就设置好了