这道题就很简单
有了第一道题目的支持 我们就能做
首先 我们先要下载Msvbvm50.dll
Msvbvm50.dll下载_Msvbvm50.dll最新版下载[修复系统丢失文件]-下载之家
然后我们可以运行程序了
比之前那个还简单
就是输入 然后比对 报错或者成功
开始逆向分析
先去常量中进行查找
找到了 这里就是我们输入错误的报错
爆破
所以我们进去看看
这里一下就能看懂 ollydbg给我们了 je的跳转 就是跳转到报错
我们只需要把跳转改为nop即可
这道题的爆破相当简单
算法
算法才是头疼的 但是也不难 我们发现爆破的je跳转 我们就在上面找到
这个程序运行的开头
一般都是先压入ebp来保存前面的地址 然后调用程序
我们重新开始运行 然后输入一个自己这次记住的id
我选择12313
出发断电
触发断点
开始F8进行单步调试
运行到这个的时候 出现了12313 说明读取了我们的id
我们能发现这里 eax为5
经过尝试 这个就是读取长度 或者我们可以直接搜索上面的函数
说明就是长度 len(12313)=5
这里发生计算
我们可以自己计算一下 就是5*17CFB
发现是 770E7
这里就是把 EDX变为 31 不管你换一个id 也是一样 说明就是把常量31存入edx
下一条就是把edi和31进行加法 edi里面是 770E7
得出来是77118
然后是10进制是487704
然后在后面的爆破中 能发现就是10进制的 加上AKA-的前缀
于是我们可以开始写注册机
a=input("输入你的用户名来取得序列号:")
b=len(a)
c=b*0x17CFB
d=c+0x31
print('AKA-'+str(d))