160个crakeme之007aLoNg3x.2题目分析

ps:说好的一天一篇的 加油

 

打开后看到熟悉的界面 和006差不多 毕竟是一个人开发的

点击About-Help还是出现四个同样的对话框

意思大致还是让我们想办法隐藏按钮 显示出完整图片 就可以达到**

160个crakeme之007aLoNg3x.2题目分析

 

 

0x001:

还是先查下壳 Delphi的程序 无壳

160个crakeme之007aLoNg3x.2题目分析

 

 

0x002:

    载入OD 发现一个GREAT! 想着是不是可以不用DeDe查看了

那就试试 看看能不能找到核心代码

160个crakeme之007aLoNg3x.2题目分析

 

双击GREAT!进入 找到最近的段首下断

160个crakeme之007aLoNg3x.2题目分析

输入

160个crakeme之007aLoNg3x.2题目分析

发现程序没有像我们想的那样 断下来(呃。。。尴尬尴尬)

 

0x003:

    还是用DeDe吧 转储成功后 点击窗体

160个crakeme之007aLoNg3x.2题目分析

 

这怎么还有意外收获 What??? 发现了一个try …again!!!:p

 

算啦 不管他了 只要他不影响图片的显示就好

 

看看Register 的地址

点击过程 可以看到地址是00442F28

160个crakeme之007aLoNg3x.2题目分析

 

OD载入 Ctrl+G输入地址 点击OK

还是段首下断

160个crakeme之007aLoNg3x.2题目分析

 

输入假的*** 点Register 程序断下来

 

160个crakeme之007aLoNg3x.2题目分析

 

经过调试 发现只要将je(下边有红色下划线的) nop掉 就OK

 

160个crakeme之007aLoNg3x.2题目分析

 

效果图(可以看到注册按钮被隐藏了 可是又出来了 …again!!!:p这个按钮)

160个crakeme之007aLoNg3x.2题目分析

 

我们重新到DeDe中看下 他的地址

160个crakeme之007aLoNg3x.2题目分析

 

0x004:

    同样的套路

分析出只要将je nop掉即可

 

160个crakeme之007aLoNg3x.2题目分析

 

反汇编窗口右键 全部复制 命名保存下即可

0x005:

但是这样的话需要点击两次才可以将图片全部显示出来

重新载入 运行 还是输入假的*** 让程序中断下来

 

不同的是 这次我们在register该段(一直到第一个出现的retn)所有call处下断(这样不容易出错)

每当F8单步到达一个call 就F7进去瞅瞅 看看有没有地方跳转到again那个按钮的地址

 

160个crakeme之007aLoNg3x.2题目分析

 

160个crakeme之007aLoNg3x.2题目分析

 

 

我们步过前两个call之后

可以发现这个je是会被触发跳转的 (其实就是判断输入的类型是不是长整型)

160个crakeme之007aLoNg3x.2题目分析

 

160个crakeme之007aLoNg3x.2题目分析

 

所以只要输入的假码是像我这样的数字11111111 这个je就会发生跳转

这个je之内的几个call也就不需要 进入看 直接取消断点 看下边的其他call

 

160个crakeme之007aLoNg3x.2题目分析

 

发现了什么

 

 

在看看DeDe反汇编出来的代码

160个crakeme之007aLoNg3x.2题目分析

 

 

所以我们只需要将mov dl,0x0 改为mov dl,0x1就好了

注意:上边那两个nop是我把第一次的je跳转nop掉保存的

 

 

总结:看来不只call内部有调用 call外也会有

 

关于算法分析部分:推荐https://www.52pojie.cn/thread-613691-1-1.html