新手破解练习Crackme160之101 - Crackme7
-
脱壳
程序有壳PECompact v1.33, 用PEiD通用脱壳插件成功脱壳~
-
去NAG
程序是VB写的, 我们先用VB Decompiler先反编译一下查看源代码~ Project源码看到Startup="Enterance", 启动窗体是Enterance这个, 我们打开Enterance这个窗体的onload事件看到的是隐藏自身并显示Crackme_Main窗体:
Private Sub Form_Load() '42FA50
loc_0042FA93: Me.Hide
loc_0042FB11: var_8008 = Crackme_Main.Show 10, var_20
End Sub
是不是有点奇怪, 既然自身隐藏了怎么真正运行时还是显示的呢? 我们来到Crackme_Main的onload事件, 看到了类型的代码:
Private Sub Form_Load() '42F310
loc_0042F353: Me.Hide
loc_0042F3D1: var_8008 = Enterance.Show 10, var_20
End Sub
又是把自己隐藏起来, 显示另一个Enterance窗体, 所以我们直接把Crackme_Main的onload事件禁用掉, 就不会再显示Enterance窗体了, OD来到0042F310行, 改为retn 0x4即可, 保存完成~
-
Task1
这个不知道干嘛的, 按钮事件判断输入的是不是数字, 并没有别的什么提示~ 也没别的算法~ 作者要求字母也可输入, 完成验证, 那就是说数字字母都要可以输入并保留~, 那就把判断条件去掉就行了~ 0042EE40行nop掉即可~
-
Task2
点击Task2按钮, 弹出一个窗体(NAG), 作者提示要我们干掉这个窗体直接去到下一个窗体~, 好吧, 我们看一下点击事件
Private Sub Command3_Click() '42F200
loc_0042F243: Me.Hide
loc_0042F2C1: var_8008 = Form3.Show 10, var_20
End Sub
这里我们改成Form4.Show就行了, 但VB Decompiler里不能直接编辑_, 所以我们还得在OD中修改, 对比Task2点击事件与Form3的点击事件:
Task2:
......
0042F26A |. 68 4C004300 push Crackme7.0043004C ; 这里不一样
0042F26F |. 68 74B04200 push Crackme7.0042B074 ; 这里不一样
0042F274 |. FF15 68104000 call dword ptr ds:[<&MSVBVM60.__vbaNew2>] ; msvbvm60.__vbaNew2
0042F27A |> \83EC 10 sub esp,0x10
0042F27D |. B9 0A000000 mov ecx,0xA
0042F282 |. 8BDC mov ebx,esp
0042F284 |. 894D DC mov [local.9],ecx
0042F287 |. B8 04000280 mov eax,0x80020004
0042F28C |. 83EC 10 sub esp,0x10
0042F28F |. 890B mov dword ptr ds:[ebx],ecx
0042F291 |. 8B4D D0 mov ecx,[local.12]
0042F294 |. 8BD0 mov edx,eax
0042F296 |. 8B35 4C004300 mov esi,dword ptr ds:[0x43004C] ; 这里不一样
0042F29C |. 894B 04 mov dword ptr ds:[ebx+0x4],ecx
0042F29F |. 8BCC mov ecx,esp
0042F2A1 |. 8B3E mov edi,dword ptr ds:[esi] ; Crackme7.00431A28
0042F2A3 |. 56 push esi
0042F2A4 |. 8943 08 mov dword ptr ds:[ebx+0x8],eax
0042F2A7 |. 8B45 D8 mov eax,[local.10]
0042F2AA |. 8943 0C mov dword ptr ds:[ebx+0xC],eax
0042F2AD |. 8B45 DC mov eax,[local.9]
0042F2B0 |. 8901 mov dword ptr ds:[ecx],eax
0042F2B2 |. 8B45 E0 mov eax,[local.8]
0042F2B5 |. 8941 04 mov dword ptr ds:[ecx+0x4],eax
0042F2B8 |. 8951 08 mov dword ptr ds:[ecx+0x8],edx
0042F2BB |. 8B55 E8 mov edx,[local.6]
0042F2BE |. 8951 0C mov dword ptr ds:[ecx+0xC],edx
0042F2C1 |. FF97 B0020000 call dword ptr ds:[edi+0x2B0] ; msvbvm60.7955713C
......
Form3:
......
0042F71A |. 68 74004300 push Crackme7.00430074 ; 这里不一样
0042F71F |. 68 E8A44200 push Crackme7.0042A4E8 ; 这里不一样
0042F724 |. FF15 68104000 call dword ptr ds:[<&MSVBVM60.__vbaNew2>] ; msvbvm60.__vbaNew2
0042F72A |> \83EC 10 sub esp,0x10
0042F72D |. B9 0A000000 mov ecx,0xA
0042F732 |. 8BDC mov ebx,esp
0042F734 |. 894D DC mov [local.9],ecx
0042F737 |. B8 04000280 mov eax,0x80020004
0042F73C |. 83EC 10 sub esp,0x10
0042F73F |. 890B mov dword ptr ds:[ebx],ecx
0042F741 |. 8B4D D0 mov ecx,[local.12]
0042F744 |. 8BD0 mov edx,eax
0042F746 |. 8B35 74004300 mov esi,dword ptr ds:[0x430074] ; 这里不一样
0042F74C |. 894B 04 mov dword ptr ds:[ebx+0x4],ecx
0042F74F |. 8BCC mov ecx,esp
0042F751 |. 8B3E mov edi,dword ptr ds:[esi] ; Crackme7.00431A28
0042F753 |. 56 push esi
0042F754 |. 8943 08 mov dword ptr ds:[ebx+0x8],eax
0042F757 |. 8B45 D8 mov eax,[local.10]
0042F75A |. 8943 0C mov dword ptr ds:[ebx+0xC],eax
0042F75D |. 8B45 DC mov eax,[local.9]
0042F760 |. 8901 mov dword ptr ds:[ecx],eax
0042F762 |. 8B45 E0 mov eax,[local.8]
0042F765 |. 8941 04 mov dword ptr ds:[ecx+0x4],eax
0042F768 |. 8951 08 mov dword ptr ds:[ecx+0x8],edx
0042F76B |. 8B55 E8 mov edx,[local.6]
0042F76E |. 8951 0C mov dword ptr ds:[ecx+0xC],edx
0042F771 |. FF97 B0020000 call dword ptr ds:[edi+0x2B0] ; msvbvm60.7955713C
......
经过对比, 发现三处不一样, 把对应的值替换掉~, 保存搞定~
1~160每个破解过程,在吾爱破解论坛都有高手破解过了,也有整理好现成的, 我这边主要就是自己动手操作的过程,与他们的不太一样
附上高手们的连接: 点击前往查看
使用的工具连接(工具有点多有点大,可以先下OD,其它的后面慢慢下) 点击前往下载
新人入门教程"玩玩破解,写给新人看" 点击前往查看
我就是从这里开始的,对我这样的小白感觉超级友好~
下面是我的OD的界面布局,我觉得这4个是最常用的界面,其它的我基本上没用到~


浙公网安备 33010602011771号