160个crakeme之007aLoNg3x.2题目分析
ps:说好的一天一篇的 加油
打开后看到熟悉的界面 和006差不多 毕竟是一个人开发的
点击About-Help还是出现四个同样的对话框
意思大致还是让我们想办法隐藏按钮 显示出完整图片 就可以达到**
0x001:
还是先查下壳 Delphi的程序 无壳
0x002:
载入OD 发现一个GREAT! 想着是不是可以不用DeDe查看了
那就试试 看看能不能找到核心代码
双击GREAT!进入 找到最近的段首下断
输入
发现程序没有像我们想的那样 断下来(呃。。。尴尬尴尬)
0x003:
还是用DeDe吧 转储成功后 点击窗体
这怎么还有意外收获 What??? 发现了一个try …again!!!:p
算啦 不管他了 只要他不影响图片的显示就好
看看Register 的地址
点击过程 可以看到地址是00442F28
OD载入 Ctrl+G输入地址 点击OK
还是段首下断
输入假的*** 点Register 程序断下来
经过调试 发现只要将je(下边有红色下划线的) nop掉 就OK
效果图(可以看到注册按钮被隐藏了 可是又出来了 …again!!!:p这个按钮)
我们重新到DeDe中看下 他的地址
0x004:
同样的套路
分析出只要将je nop掉即可
反汇编窗口右键 全部复制 命名保存下即可
0x005:
但是这样的话需要点击两次才可以将图片全部显示出来
重新载入 运行 还是输入假的*** 让程序中断下来
不同的是 这次我们在register该段(一直到第一个出现的retn)所有call处下断(这样不容易出错)
每当F8单步到达一个call 就F7进去瞅瞅 看看有没有地方跳转到again那个按钮的地址
我们步过前两个call之后
可以发现这个je是会被触发跳转的 (其实就是判断输入的类型是不是长整型)
所以只要输入的假码是像我这样的数字11111111 这个je就会发生跳转
这个je之内的几个call也就不需要 进入看 直接取消断点 看下边的其他call
发现了什么
在看看DeDe反汇编出来的代码
所以我们只需要将mov dl,0x0 改为mov dl,0x1就好了
注意:上边那两个nop是我把第一次的je跳转nop掉保存的
总结:看来不只call内部有调用 call外也会有