逆向破解之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 ~ 破解成功
逆向破解之160个CrackMe —— 016的更多相关文章
- 逆向破解之160个CrackMe —— 001
CrackMe —— 001 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 002-003
CrackMe —— 002 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 004-005
CrackMe —— 004 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 013
CrackMe —— 013 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 014
CrackMe —— 014 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 017
CrackMe —— 017 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 018
CrackMe —— 018 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 025
CrackMe —— 025 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- 逆向破解之160个CrackMe —— 026
CrackMe —— 026 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
随机推荐
- 获取文件版本(IE)
GetFileInfoCUIAction::GetFileVersion2GetSystemDirectory WCHAR szConfigFile[MAX_PATH + 1]; ::G ...
- SP1026 FAVDICE - Favorite Dice[期望DP]
也许更好的阅读体验 \(\mathcal{Description}\) 一个\(n\)面的骰子,求期望掷几次能使得每一面都被掷到 输入有\(T\)组数据,每次输入一个\(n\) 输出保留两位小数 \( ...
- python带有GIL解释器锁
1.GIL是什么?GIL的全称是Global Interpreter Lock(全局解释器锁),来源是python设计之初的考虑,为了数据安全所做的决定. 2.每个CPU在同一时间只能执行一个线程(在 ...
- PHP与ECMAScript_3_常用字符串函数
PHP ECMAScript 长度 strlen($str) str.length 查找类 $str[n] ...
- H5 video自定义视频控件
1.自定义效果截图 2.效果源码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...
- 【iOS】获取视图的中心和宽高
示例代码: NSLog(@"%f, %f", self.view.center.x, self.view.center.y); NSLog(@"%f, %f", ...
- 云计算网络基础笔记及VLAN交换机配置
- C# Winform 自定义控件——TextBox
效果: 描述: 类似html标签里input标签里的placeHolder属性,控件继承TextBox,拥有一个描述提示信息的字段_txtPlaceHolder,重写了消息处理函数WndProc, ...
- spring学习笔记之---bean属性注入
bean属性注入 (一)构造方法的属性注入 1.Student.java package entity; public class Student { private String name; pri ...
- golang const 内itoa 用法详解及优劣分析
首先itoa 是什么 const 内的 iota是golang语言的常量计数器,只能在常量的表达式中使用,,即const内. iota在const关键字出现时将被重置为0(const内部的第一行之前) ...