逆向破解之160个CrackMe —— 014
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循环中异或计算值的右边一位,也就是最后一位。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?