-
-
[原创]CrackMe160-001
-
发表于:
2022-4-8 23:27
8235
-
用查壳工具Die查一下程序,无壳
点开程序看一下,第一个弹出的是下面这个图,是个nag窗口,等下可以直接给去除掉
继续向下点,就是两个验证窗口
通过这两个应该可以去定位到关键的字符串
先通过字符串定位到弹出nag窗口的函数
在retn位置直接下个断点,运行到retn处回到调用这个函数的地方,直接nop掉再保存就行了,再次运行保存的程序就没有nag窗口了。
通过字符串定位到关键验证函数
直接将jne语句nop掉,再继续运行就可以直接破解掉了
后面的检验也是同样如此
如果你和我的od一样没直接识别出来字符串可以通过这个方式来找到关键的验证地方
然后把这个jnz指令nop掉,就成功破解这个软件
先对那个需要输两个值的界面进行分析,在之前那个jne的判断语句上面的call语句下个断点
在输入的地方随便输两个值,值得输多几位,前面应该还有判断字符长度的语句,输少的话运行不到下断点的地方,然后继续运行
继续跟进call语句,刚跟进去就看到一串像是我们需要的字符,接着跟看看
这个字符应该就是序列号了,试一下就直接成功了
这个序列号在刚进这个函数的时候就已经被给函数了,说明序列号的生成应该是更上面的函数中。多下几个断点,一步步跟过去,看是哪个函数生成了序列号
发现是在这个函数之后生成了序列号中间的那个数字
再重新载入一下,看看具体是哪一步
跟进后发现这个值不是在这一步计算的,再往上看一下
即取名字的第一个字符的十六进制数乘0x29乘2就是中间的数字
MOVZX 指令
格式: MOVZX OPD,OPS
功能: 将8位或16位的OPS零扩展为16位或32位,在传给OPD.
算出中间的值后前缀加上CW-,后缀加上-CRACKED就是序列号了
接着我们去看第二个序列号,流程同第一个
看到了疑似序列号的字符串Hello Dude!,试着输入一下成功了
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2022-4-9 15:23
被小阿年编辑
,原因: 乘