首页
社区
课程
招聘
[原创]CrackMe160-001
2022-4-8 23:27 7202

[原创]CrackMe160-001

2022-4-8 23:27
7202

001

题目分析

查壳

用查壳工具Die查一下程序,无壳

 

img

题目内容

点开程序看一下,第一个弹出的是下面这个图,是个nag窗口,等下可以直接给去除掉

 

img

 

继续向下点,就是两个验证窗口

 

img

 

img

 

img

 

通过这两个应该可以去定位到关键的字符串

破解

nag窗口

先通过字符串定位到弹出nag窗口的函数

 

img

 

在retn位置直接下个断点,运行到retn处回到调用这个函数的地方,直接nop掉再保存就行了,再次运行保存的程序就没有nag窗口了。

爆破破解

通过字符串定位到关键验证函数

 

img

 

直接将jne语句nop掉,再继续运行就可以直接破解掉了

 

img

 

后面的检验也是同样如此

 

img

 

img

 

如果你和我的od一样没直接识别出来字符串可以通过这个方式来找到关键的验证地方

 

img

 

然后把这个jnz指令nop掉,就成功破解这个软件

 

img

注册机

先对那个需要输两个值的界面进行分析,在之前那个jne的判断语句上面的call语句下个断点

 

img

 

在输入的地方随便输两个值,值得输多几位,前面应该还有判断字符长度的语句,输少的话运行不到下断点的地方,然后继续运行

 

img

 

继续跟进call语句,刚跟进去就看到一串像是我们需要的字符,接着跟看看

 

img

 

这个字符应该就是序列号了,试一下就直接成功了img

 

img

 

这个序列号在刚进这个函数的时候就已经被给函数了,说明序列号的生成应该是更上面的函数中。多下几个断点,一步步跟过去,看是哪个函数生成了序列号

 

img

 

发现是在这个函数之后生成了序列号中间的那个数字

 

img

 

再重新载入一下,看看具体是哪一步

 

跟进后发现这个值不是在这一步计算的,再往上看一下

 

img

 

即取名字的第一个字符的十六进制数乘0x29乘2就是中间的数字

小知识

MOVZX 指令

 

格式: MOVZX OPD,OPS

 

功能: 将8位或16位的OPS零扩展为16位或32位,在传给OPD.

 

算出中间的值后前缀加上CW-,后缀加上-CRACKED就是序列号了

 

接着我们去看第二个序列号,流程同第一个

 

img

 

看到了疑似序列号的字符串Hello Dude!,试着输入一下成功了

 

img

 

这个值是固定不变的,并不是动态生成的。序列号就是这个。

总结

平时比较少像这样去破一个程序,破了有一段时间,有参考网上师傅的wp,因为具体流程不是很清楚,还算是比较顺利,不过经验较少还得多练练。


[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

最后于 2022-4-9 15:23 被小阿年编辑 ,原因: 乘
上传的附件:
收藏
点赞3
打赏
分享
最新回复 (2)
雪    币: 2061
活跃值: (1431)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
youxiaxy 2022-4-9 09:11
2
0
感谢分享!!
雪    币: 1050
活跃值: (903)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
小阿年 2022-4-9 13:45
3
0
youxiaxy 感谢分享!!
不客气,对你有帮助就行
游客
登录 | 注册 方可回帖
返回