逆向实战:小软件密码破解 – 作者:SamSara茶

首先请出我们今天的主角

1619581442_6088da021c57e3bc9e82d.png!small

账号已经固定了,输入密码点击登录就可以啦!

我们随便输入一串,然后点击下登录看看,他的提示框咯

1619581467_6088da1b343930f7a0850.png!small

输入“密码”,然后搜索咯

可以看到我们找出来啦

1619581478_6088da2682815144b4989.png!small

我们右键下一个内存访问断点,看看是哪里访问了这个内存

1619581484_6088da2c022c3c6b04cd8.png!small

运行随便输入密码后,可以看见断下了!

1619581490_6088da321debb32990d85.png!small

在这个函数的末尾我们看见eax的值为FFFFFFFF,也就是-1

1619581496_6088da38716f0a70fd1c7.png!small

我们返回上一层看看外面是什么模样的

1619581504_6088da40aeb386babb38d.png!small

可以看见这个jnz唯一的作用就是,ebx的值是否覆盖掉eax的值,然后将eax压入了另一个函数,我们再次执行到返回

在返回时,我们再次注意下eax的值

1619581513_6088da499d704d5c79866.png!small

这是个地址,我们看看这个地址中的数据

1619581520_6088da50726d94cbe3b39.png!small

是密码错误哦!=-=

看到这里我们再次返回上一层

1619581528_6088da5840874d53d9c04.png!small

可以看见,这层返回的依然是密码错误啦,感觉像是在算什么一样对吧

先是获取了下密码错误然后计算了什么东西。

在这里我们还是返回一层看看啦

1619581537_6088da613c64537339473.png!small

标注下,这是算数用的

这里像是关键的函数,我们直接就步过往下走

走到下面不远处,发现走不动了,原来是弹出了错误提示!

1619581547_6088da6b8b25c874575ae.png!small

1619581552_6088da70020075c907846.png!small

我们回到一开始读取的地方,也就是算数call里边

1619581558_6088da76b73ca37d53288.png!small

我们其实看见下面有个call直接跳过了返回,而不跳过的话,其实eax返回是0而不是-1的,我们不让他实现看看。

1619581566_6088da7e750572abdfc1f.png!small

看eax现在是0啦,我们返回上一层看看

下面的jnz实现了,eax还是0

我们再返回一层

1619581575_6088da872a4e6042de27a.png!small

eax依然保持原值

返回之后依然是0,我们再次返回

1619581583_6088da8f1cae447007302.png!small

可以看见在下面这个call中我们的密码被算了出来。

1619581588_6088da94aa255ea6f9b95.png!small

我们试试这个密码

1619581594_6088da9a8564b135bc714.png!small成功!结束

来源:freebuf.com 2021-04-28 11:48:31 by: SamSara茶

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论