BUUCTF Crackme

这道题麻烦了我几天,因为一个反调试的点没看到,所以一直没做出来,虽然原理还不懂,但可以先记下来,以后学多了再说
(这道题用户名已知)
ida分析,是一个建立了一个表然后与用户名进行错杂的变化,最后再用表里的值与密码进行一些运算得到结果,由此我们倒着看
在这里插入图片描述
最后一个函数是实现的目的,密码变成dbappsec
BUUCTF Crackme_第1张图片
BUUCTF Crackme_第2张图片
倒数第二个有点小坑,就是用户名与变化后的密码运算,这里是检测是否有调试,有的话就异或,没有的话就是和,所以会有两个结果,我们可以一个一个算
在这里插入图片描述
这一个就是最恶心的地方了,上下两个if都是反调试,把他们的jz jnz变成jmp就行,然后buffet_list表里面才是我们想要的值,这边我们可以在动调的时候吧表的8个值给确定出来,因为用户名已知,一定是不变的
BUUCTF Crackme_第3张图片
这一块吧,就是对密码进行了一次变换,我觉得没啥用,不用分析emmmmm,因为动调的时候输入什么经过这段变化。他没有变化就是把输入的16个数变成了8个而已,所以做到这一步,问题就解决了,最后交flag的时候,用的是调试的那个密码,emmmmmmmmmm,一般不应该是反调试吗?咱也不敢问,反正这道题逻辑挺清晰的,就是太菜,没看出来,最后挂出py代码
BUUCTF Crackme_第4张图片
emmmmmmmmmmmmm,不能太急,一步一步慢慢进步就好

你可能感兴趣的:(逆向题目练习)