逆向破解之160个CrackMe —— 016
CrackMe —— 016
160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序
CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 crackme 的人可能是程序员,想测试一下自己的软件保护技术,也可能是一位 cracker,想挑战一下其它 cracker 的破解实力,也可能是一些正在学习破解的人,自己编一些小程序给自己破。
编号 | 作者 | 保护方式 |
016 | bjanes | Serial(VB5) |
工具
x32dbg
VB Decompiler Pro
开始破解之旅
ON.1
爆破方式
使用x32dbg打开016号程序
右键 搜索->当前模块->字符串
我们看见了错误提示字符串地址00403A69和正确提示字符串地址00403AE9
我们进入错误提示字符串地址00403A69处向上查看
004039FE | 83C4 | add esp, |
00403A01 | :85FF | test di,di |
00403A04 | 1C | jne bjcm20a.403A22 |跳转处 跳转到00403A22
00403A06 | 8B7D | mov edi,dword ptr ss:[ebp+] |
00403A09 | B8 | mov eax, |
00403A0E | : E8 | add ax,word ptr ss:[ebp-] |
00403A12 | 0F80 | jo bjcm20a.403BAC |大跳
00403A18 | E8 | mov dword ptr ss:[ebp-],eax |
00403A1B | 33DB | xor ebx,ebx |
00403A1D | E9 5AFDFFFF | jmp bjcm20a.40377C |
00403A22 | 33DB | xor ebx,ebx |
00403A24 | 8B35 A4104000 | mov esi,dword ptr ds:[<&__vbaVarDup>] |
00403A2A | B9 | mov ecx, |
00403A2F | 894D | mov dword ptr ss:[ebp-],ecx |
00403A32 | B8 0A000000 | mov eax,A | A:'\n'
00403A37 | 894D A8 | mov dword ptr ss:[ebp-],ecx |
00403A3A | BF | mov edi, |
00403A3F | 8D95 50FFFFFF | lea edx,dword ptr ss:[ebp-B0] | edx:EntryPoint
00403A45 | 8D4D B0 | lea ecx,dword ptr ss:[ebp-] |
00403A48 | | mov dword ptr ss:[ebp-],eax |
00403A4B | A0 | mov dword ptr ss:[ebp-],eax |
00403A4E | C785 58FFFFFF F0224000 | mov dword ptr ss:[ebp-A8],bjcm20a.4022F | 4022F0:L"Wrong serial!"
00403A58 | 89BD 50FFFFFF | mov dword ptr ss:[ebp-B0],edi |
00403A5E | FFD6 | call esi |
00403A60 | 8D95 60FFFFFF | lea edx,dword ptr ss:[ebp-A0] | edx:EntryPoint
00403A66 | 8D4D C0 | lea ecx,dword ptr ss:[ebp-] |
00403A69 | C785 68FFFFFF C8224000 | mov dword ptr ss:[ebp-],bjcm20a.4022C | 4022C8:L"Sorry, try again!"
我们看到了最近的跳转处是00403A1D 该处是一个向上跳的JMP明显不是我们要找的跳转,在往上00403A12是一个向下的大跳也不是我们要找的跳转,再往上00403A04是一个跳转到00403A1D下发的地址可能是我们要找的跳转,在此处下断点
F9运行,在输入框内输入任意数据,点击Check it按钮,没有在跳转处暂停,我们在下一条指令下设置断点,再次点击按钮,此时程序暂停到了我们的断点处
由此可知,程序是通过别处跳转到00403A24处
我在x32dbg内右键 搜索->当前模块->常数 在输入框内输入00403A24点击确定
搜索到一处引用的地址
点击进入该地址,在此处下断点
再次点击Check it 按钮
此时程序停在了我们刚刚设置的断点处,我们单步向下
此时可以看出程序跳转到了错误信息提示处,我们将00403A04处的指令改为NOP,F9运行
bingo~ 此时破解成功
ON.2
注册机方式
我们使用VB Decompiler Pro打开016号程序
发现和我们的014号程序代码一样
附上我们的注册机代码
code = ''
for i in range(1, 10):
a = i ^ 2
code = code + str(a)[-1]
print(code)
得出结果为我们输入到输入框内,点击Check it按钮
bingo ~ 破解成功
最新文章
- BSBuDeJie_01
- Chrome 中的 JavaScript 断点设置和调试技巧
- centos mysql 大量数据导入时1153 错误:1153 - Got a packet bigger than &#39;max_allowed_packet&#39; bytes
- IDE神器intellij idea的基本使用
- Iaas-cloudstack2
- 关于MyBatis的工作流程
- CentOS安装Nginx,并配置nodejs反向代理
- AES算法简介
- ECSHOP首页站内快讯在哪里添加和修改?
- nginx 504 Gateway Time-out 解决办法
- @pathvariable 注解
- 【Ionic+AngularJS 开发】之『个人日常管理』App(二)
- jsonp学习
- java 自定义的注解有什么作用
- 小程序重新封装打印函数console.log
- [Swift]LeetCode1022. 从根到叶的二进制数之和 | Sum of Root To Leaf Binary Numbers
- POJ 1251 Jungle Roads (最小生成树)
- Chrome_查看 webSocket 连接信息
- 安装pytorch成功但cuda不可用
- PAT-Top1001. Battle Over Cities - Hard Version (35)