逆向破解之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 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?