18.10.5 实验吧----此处无声

下载下来就是如上图的exe,先用peid看一下有什么壳之类的。结果是nothing found,有点厉害,查不出什么编程语言或者壳,应该还是有保护的

在OD中搜索字符串没搜索出来,那肯定有保护,咋办,直接对MessageBoxA下断点(bp MessageBoxA),慢慢往回找关键函数入口点,然后手动脱壳,僵硬,感觉还是不太行,就用了pushad搜索慢慢找,后来大佬和我说这种只是常见的smc,直接根据IDA,在start的最后打个断点,dump下来就好了

但参照了大佬的文献,直接设置断点定位更直接(MessageBoxA),如下

接下来是个漫长的单步执行的过程,要有耐心,为了不错过所有内容,到代码段之后再设一个断点,如下

继续往下找,可以看到一块关键点,如下

字符串长度只能为32,并且对比的字符都是0~F,典型的MD5算法,在这里设置断点观测一下,可以看到运行到此处时,果然把输入的密码压入了edx

我们试着输入32位,然后开头四位改为09AF在测试一遍流程

然后我有个思路就是,在输入的字符串左右可能有别的重要的字符串,习惯性搜一下,这是我的个人习惯,然后这次帮了我大忙,我在我输入的字符串的上面一块区域找到了nsfocus的MD5值(B9B7DD1C421E005BC9A7F70B848E3D0E),如下图

也就是说密钥的判断适合注册用户名的MD5码进行对比,CrackMe判断方式为Eecode(Key)=MD5(Name)

然后我接下来不断试了好几遍,发现了一个亮点,在nsfocus的MD5值的上方的数据有一串字符串永远不变(3547825C338C85779A67457A6D5C1647),而夹在两者中见的字符串随着我们输入的注册码的变化一直在改变,所以可以合理的推测出加密算法只用到0-F,且可能有自身的密钥串3547825C338C85779A67457A6D5C1647

大佬说只有可能是RC6,RC6Decrypt(MD5(Name))=Key,不知道这个的话的确就凉了

那只能等我把RC6研究透了再说了,或者反正也就16*8位,要不有大佬可以爆破一下……

猜你喜欢

转载自blog.csdn.net/qq_42192672/article/details/82943988
今日推荐