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

[原创]CrackMe160-001

2022-4-8 23:27
8210

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

img

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

img

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

img

img

img

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

先通过字符串定位到弹出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!,试着输入一下成功了


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

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