CrackMe —— 014
160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序
CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 cracker,想挑战一下其它 cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破。
来源 <-点击查看
编号 | 作者 | 保护方式 |
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循环中异或计算值的右边一位,也就是最后一位。