【160Crackme】《Acid burn》

Crackme

Posted by Corax on November 4, 2023

Acid burn

这个有两个需要crack掉的,一个是左边的name和serial,另外一个是右边的serial。一点点来分析好了。

image-20231105003633773

去NAG

image-20231105003802660

这玩意烦的很,去掉先。

双击这里image-20231105003916552

来到这里,下个断吧。image-20231105003940882

根据栈的信息找到调用签的信息就是这个call

image-20231105005104081

下个断再来,可以到这个也是函数

image-20231105005548758

根据栈信息找到调用这里的代码

image-20231105005615343

可以看到这里有个je,改成jmp,直接就有了

image-20231105005920459

复制到可执行文件。image-20231105010009917

直接打开就没有NAG了。image-20231105010103328

单Serial

点进去是这样

image-20231105011115699

信息是Try again!!

image-20231105011122439

放进od 搜索字符串,有三tryagain字符串,根据两个感叹号锁定到第一个

image-20231105011238408

进去之后看到有一个call后面跟着一个跳,断点下上面一些

image-20231105022319217

运行一下可以看到这里local4和local3分别是堆栈里面的两个字符串,123456是我们输入的,另外一个是程序传入比较函数的,我们认为他就是serial。试试”Hello Dude!”

成功

image-20231105022751581

serial和name

同样是字符串定位,

image-20231105022850472

一样,call加关键跳image-20231105022913090

下个断 让他跑跑

image-20231105023021715

已经可以看到不少关键信息了,比如右下角的那个cw-…字符串,没事,先记着我们先爆破一下。成功

image-20231105023112504

再用用刚刚那个字符串

0019FB00 0236A5D4 ASCII “CW-8118-CRACKED”

image-20231105023342318

成了,但这题还稍微多一步,它是根据name生成serial,我们换个name就不一样了。那么接着往上面琢磨。在这里下个断

image-20231105023435195

这里有个跳,对前四位name字符做好处理后判断了一下,如果不足四个字符就直接tryagain了

image-20231105024048460

这里是关键,代码取第一个字符,然后和431750被赋值的0x29相乘,然后add自己,作为数字

image-20231105024616241

可以写keygen了。

sName="axxxx"
nTemp=ord(sName[0])*0x29
sKey=str(2*nTemp)
sAns="CW-"+sKey+"-CRACKED"
print(sAns)

image-20231105025236841

成功

image-20231105025312056