师承15PB课后练习160Crackme04
看的一头雾水,完全不知道怎么入手,打算先从OD入手看看什么情况
尴尬的是,依然没有任何的头绪现在问题:输入账号密码,按回车没反应,点击没反应下一步思路:查看下字符串或者函数名之类的,看看能不能找到有用的东西
发现新大陆,点击进去查看一下
找到了关键的函数后,我们向上查看,希望能够找到关键的跳转点! 距离不远处,发现了关键跳转JCC 但是问题来了:我怎么知道什么时候[ESI+30C]变成0x85的呢?关于这个问题纠结了很久,总不能一条条的跟[ESI+30C]这个地址把!试了几次,没有结果...(刚学的小白,很多东西不懂)最终没办法,决定网上寻找资料求助一下然后发现:可以直接搜索字符0x85查看相关代码
直接常数搜索85 兴奋啊,终于得到有用信息 进去发现,再85赋值上面有个JCC,只有[esi+30c]==3e得时候,才能够实现85赋值老规矩继续查看3E什么时候赋值得 只有3E赋值上面得JCC步跳才有机会赋值,那只能进去call函数找找看了
进入函数后,通过一堆对比,发现只有第一个jcc才是正确的,eax==edx的时候,使得ZF==1,并且直接跳转到函数结束,函数结束后,紧跟的jcc才不会执行,才可以执行3E的赋值; 但是eax和edx分别是什么?只能运行进去看了,所以下断点运行
什么鬼,程序还没弹出来就断下来了, 试了很多次,发现压根行通,就是一直卡再那里了!!只能换个思路,到外面call这个函数的时候下断点试试看 断下来了,但是F7就是不进去函数里面,没关系,我们双击进去看看什么情况;进去后发现了关键的一串东西,那问题来了,这串东西怎么来的?最后面跟的好像是我们输入的账号!整理思路,出去这个函数,从最开始的push ebp查看这一段做了什么东西!
一直向上查看,找到push ebp开始往下读取有用的信息;快速方法:一直F8查看有用的信息,看看这段代码做了什么?有没有我们想直到的,那段字符串“黑头....+输入账号”哪里来的
找到push ebp并且下断点,运行查看信息,发现还是输入注册码(口误也说成密码)第一个数的时候就断下来了
终于再进入call的时候看到了关键的那串黑头....的字符串上面代码可以知道:(黑头Sun Bird)+(输入账号的位数+0x5)+(dseloffc-012-ok)+(输入的账号) 进入call再查看eax,ebx的值,发现那串字符串是ebx的,eax的值应该是我们输入的密码 那么疑问来了:当输入第一个密码的时候就断下来了,明显密码不可能只有一个,那怎么回事?抱着尝试的心态,不够断下来,继续输入多几个密码看看eax是什么情况!输入密码:12345678 发现还是只有一个1字,难道估计错误?继续运行看看发现又回到刚才的函数去运行,并且这次再[457D27]获取输入的密码的时候,是获取第二位密码;大胆猜测,一个一个密码获取,再组合起来,最后对比?
账号:abcdabcd密码:黑头Sun Bird13dseloffc-012-okabcdabcd
其实里面还有个坑,就是输入密码后鼠标要点击灰色地带才会识别是否成功,如果成功显示照片,如果不成功没任何动静然后然后,基本告破!!记录自己的心得,希望分享给有需要的朋友,也希望各位大神多多指点,学习下不同的方向思路!!
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)