我的Github:   Github

逆向破解之160个CrackMe —— 014

CrackMe —— 014

160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序

CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 cracker,想挑战一下其它 cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破。

CrackMe简称CM。
程序下载地址:点击我

来源 <-点击查看

编号 作者 保护方式
014 bjanes Serial(VB5)

 

 

 

工具 

x32dbg

VB Decompiler Pro

peid

开始破解之旅

ON.1

首先使用peid查壳,发现是VB的程序

使用x32dbg打开014号程序,查找字符串

找到了报错字符串,双击进入报错字符串地址,在上方跳转处下断点,运行发现并没有拦截到断点处,可能断点地址是错误的

我们按Ctrl+B  输入“816C24” 这是VB的按钮事件,在这里我们要选择整块,不然搜索不到,点击确定

搜索到五处地址,我们在五处地址上分别下断点

在程序上输入任意数据,点击Check it按钮,程序停在了我们的断点处,F7两次进入第一个jmp ,单步向下走

此时我们来到了00403A04地址处,发现在该出跳转,跳转到了错误的提示字符,我们将JNE改为NOP运行

bingo  爆破成功~

ON.2

使用VB Decompiler Pro打开014号程序 

将反编译代码转换为Python代码

code = ''
for i in range(1, 10):
a = i ^ 2
code = code + str(a)[-1]
print(code)

得出结果为301674501我们输入到输入框内,点击Check it按钮

bingo ~答案正确

在这里我们需要看一下汇编代码,在汇编中计算异或后我们得到的是一个一位数,8和9的循环计算答案是两位数,这里我们需要细心观察一下反编译代码中Right指的是右边的一位,所以就是8和9循环中异或计算值的右边一位,也就是最后一位。

 

posted @ 2019-08-21 00:04  寂夜云  阅读(846)  评论(0编辑  收藏  举报