160个CrackMe之002

这道题就很简单

有了第一道题目的支持 我们就能做

首先 我们先要下载Msvbvm50.dll

Msvbvm50.dll下载_Msvbvm50.dll最新版下载[修复系统丢失文件]-下载之家

然后我们可以运行程序了

160个CrackMe之002_第1张图片

 比之前那个还简单

就是输入 然后比对 报错或者成功

开始逆向分析

先去常量中进行查找

160个CrackMe之002_第2张图片

 找到了 这里就是我们输入错误的报错

爆破

所以我们进去看看

160个CrackMe之002_第3张图片

 这里一下就能看懂 ollydbg给我们了 je的跳转 就是跳转到报错

我们只需要把跳转改为nop即可

160个CrackMe之002_第4张图片

 这道题的爆破相当简单

算法

算法才是头疼的 但是也不难 我们发现爆破的je跳转 我们就在上面找到

这个程序运行的开头

160个CrackMe之002_第5张图片

 一般都是先压入ebp来保存前面的地址 然后调用程序

我们重新开始运行 然后输入一个自己这次记住的id

160个CrackMe之002_第6张图片

 我选择12313

出发断电

触发断点

160个CrackMe之002_第7张图片

 开始F8进行单步调试

160个CrackMe之002_第8张图片

 运行到这个的时候 出现了12313 说明读取了我们的id

160个CrackMe之002_第9张图片

 我们能发现这里 eax为5

经过尝试 这个就是读取长度 或者我们可以直接搜索上面的函数

 说明就是长度 len(12313)=5

160个CrackMe之002_第10张图片

 

 这里发生计算

我们可以自己计算一下 就是5*17CFB

160个CrackMe之002_第11张图片

 

 发现是 770E7

 这里就是把 EDX变为 31 不管你换一个id 也是一样 说明就是把常量31存入edx

下一条就是把edi和31进行加法 edi里面是 770E7

160个CrackMe之002_第12张图片

 

 得出来是77118

然后是10进制是487704

然后在后面的爆破中 能发现就是10进制的 加上AKA-的前缀

160个CrackMe之002_第13张图片

 于是我们可以开始写注册机

a=input("输入你的用户名来取得序列号:")
b=len(a)
c=b*0x17CFB
d=c+0x31
print('AKA-'+str(d))

160个CrackMe之002_第14张图片

160个CrackMe之002_第15张图片 

 

你可能感兴趣的:(160个CrackMe,逆向)