记录一下 160个crackme练手--6
第6个CM其实也不难(我是指爆破,追码的话我感觉都挺难的......)可能也有一些运气吧PEID查壳 无壳 Delphi程序
打开程序查看要破什么 点了一下help发现它要我们把两个按钮给隐形才算过关
还发现OK按钮是灰色的 不能用
这里我想到了灰色按钮(功能限制)
然后我们载入OD 下断点
然后F9运行程序,发现没断下来,看来没用这个函数啊。。。
那我们搜素字符串
没发现什么敏感的字符串,就看见那4串点了help弹出来的话了
无奈,我们用dede看看都有什么事件吧
有10个事件 而其中有意义的有5个
‘CodiceChange’ 输入密码(在Codice的框里输入字符)
‘OKClick’ 左键单击OK按钮
‘NomeChange’ 输入用户名(在Nome的框里输入字符)
‘CancellaClick’ 左键单击Cancella按钮
'AboutClick' 左键单击About-Help按钮
我去了CodiceChange这个事件的段首下断点(因为我绝对如果不是灰色按钮 那应该就是它检测了我们的账户密码正不正确 如果正确就激活OK按钮)
载入OD Ctrl+G转到
转到之后 段首下断 然后运行 输入账户密码,在输入密码的时候直接被断下来
开始F8单步 一直单步到段尾了 也没发现真码 但是发现了一个能直接跳到最后的jmp 我觉得这很可疑
转过去看看发现两个都是jmp而且下面都有个跳过jmp的跳转,看到这个就很熟悉了 可能又是跳过了成功走向了失败
但不确定是那个 当然上面的那个更可疑因为它一下跳了4个call 我们先试试让上面的jmp执行
将跳过jmp的跳转下断,然后重载程序,看看是不是真的跳过了jmp
跳过了 我们将它nop掉
F9运行
成了OK能用了
我们也去试试下面的那个jmp
也成了 这两个都行,看来能不能使就是跳不跳过下面那个call啊
既然成了,我们就随便改一个地方,然后保存出来
然后我们开始下一步,隐藏按钮
将修改后的程序载入OD
我们先来看看隐藏Cancella这个按钮吧,我们去到它的按钮事件段首下断
下好断后运行起来直接点Cancella这个按钮就好了,毕竟我们是爆破
断下后单步,我们发现一个判断是否等于0(test),对比之后有个je 这个je跳过了一个jmp
又是非常熟悉的操作
我把je nop掉不让它跳转看看
nop掉之后 它过来call之后按钮就消失了,看来真的是我们想的那样,跳过了消失(成功)走向了失败
然后我们运行程序就看到Cancella按钮消失了
估计OK也是这样消失,因为它也有个事件
我们继续用同样的方法在OK的按钮事件段首下断试试看
下断点OK程序断下
往下一看,这还真像啊 但是这少了个判断是否等于0(test)
继续吧跳过jmp的jnz给nop掉不让它跳看看
没成功OK按钮还在 但是我们发现了另一个跳转 这个je 经过一个对比,然后跳过了一个call
竟然上个jmp不是那这个je就有很大可能是了,毕竟它还有个判断是否等于0(test)
我们在je处下断点,然后F9运行程序,重新点ok 它还会断在段首(如果你没删掉的话)
发现它确实跳转了 我们将它nop掉(其实这地方直接改标志位控制跳转就可以了 因为如果不确定直接nop掉会让断点失效)
双击z标志位让他不跳
单步向下跟
经过这个call按钮消失了
然后我们可以直接把那个je nop掉保存了
因为 我刚刚nop掉Cancella的跳转的时候没有保存 所以要选保存全部修改
右键-复制到可执行文件-所有修改
然后选全部复制就可以了(这应该都知道了 我又在多bb)
打开保存后的文件看看是否成功
https://s3.bmp.ovh/imgs/2022/04/25/fe808d316b90d2cd.gif
至此就爆破成功了
如果你问我 “为什么你知道每个按钮的隐藏是它他们的事件里呢?”我只能说我不知道但我觉得他们既然存在那可能就有一定的作用把 也可能是我运气好 哈哈哈
那我们再去看看输入账号这个事件把
转过去 然后下断运行 在Nome输入个1然后断下
F8单步看到了个jnz跳过了一个jmp 但是上面没有test 根据上面的经验,我们不考虑它
反而下面的je才是考虑的对象
看到这个je也跳过了个jmp而且还有个test 那很大的可能性就是它了
我们直接自信的nop掉它
果然 经过这个call OK按钮激活了
看来Nome这个事件也能激活OK啊 但是为什么两个都能激活呢?
这里我之后在去考虑一下把(搞不出来我就去看别人的贴子了 哈哈哈)
好这里是真的完事了{:1_893:} 牛B,必需支持一下 不错 学习了 好厉害,666 感谢楼主分享 感谢分享 学习谢谢分享
页:
[1]