作者:小弟[爆破王]
来源:bbs.pediy.com
【破文作者】 小弟[爆破王]
【文章题目】 菜鸟必看的破解文章(1)-爆破软件
【软件名称】 crackme
【下载地址】 看下面
----------------------------------------------------------------------------------------------
【加密方式】 光盘加密
【破解工具】 OllyDbg v1.10b
【软件限制】 没有
【破解平台】 XP SP2
----------------------------------------------------------------------------------------------
【文章简介】
这篇文章是专门给菜鸟看的,高手莫笑,本人的能力也很有限,所以只能写出这样的文章,不要笑我.
有什么不明的可以下面帖出.
----------------------------------------------------------------------------------------------
【破解过程】
这帖子破解的是一个crackme.主要是真正的软件我破解不了^_^.
这里把暴力破解的原理讲解一下.
if qqq=1 then
注册正确
end if
这里用这个语句来说明一下,
如果QQ=1的话注册正确,但是我们可以使条件变成相反的变成
if not qqq=1 then
注册正确
end if
这样我们就可以使用不正确的注册码,而用正确的注册码凡尔不正确。因为我们的条件去反了。
这就是爆破的基本原理
这里给主一些经常见到的跳转
Jc 有进位则跳转 jnc 无进位则跳转
Jz 为 0 跳转 jnz 不为0跳转
Je 等于则跳转 jne 不等于则跳转
Js 为负号则跳转 jns 不为负号则跳转
Jo 有溢出则跳转 jno 无溢出则跳转
Jp 奇偶位为偶 jnp 奇偶位为奇
好了,现在开始我们的爆破旅程^_^
先用OllyDbg v1.10b载入unabexcm1.exe
然后看到一下代码
00401000 u>/$ 6A 00 push 0 ; /Style = MB_OK|MB_APPLMODAL
00401002 |. 68 00204000 push unabexcr.00402000 ; |Title = "abex 3rd crackme"
00401007 |. 68 12204000 push unabexcr.00402012 ; |Text = "Click OK to check for the keyfile."
0040100C |. 6A 00 push 0 ; |hOwner = NULL
0040100E |. E8 8C000000 call ; MessageBoxA
00401013 |. 6A 00 push 0 ; /hTemplateFile = NULL
00401015 |. 68 80000000 push 80 ; |Attributes = NORMAL
0040101A |. 6A 03 push 3 ; |Mode = OPEN_EXISTING
0040101C |. 6A 00 push 0 ; |pSecurity = NULL
0040101E |. 6A 00 push 0 ; |ShareMode = 0
00401020 |. 68 00000080 push 80000000 ; |Access = GENERIC_READ
00401025 |. 68 B9204000 push unabexcr.004020B9 ; |FileName = "abex.l2c"
是不是看不懂?不用管他,按F9继续执行点击确定之后提示Hmmmmm,I cant find the file!记下来后面有用
然后在汇编代码上右击选择搜索->字符参考.
过一会看到一堆字符,找到Hmmmmm,I cant find the file!双击
来到这里
00401034 |. 83F8 FF cmp eax,-1 -----------------------
00401037 |. 74 3C je short unabexcr.00401075<-----|---看到这个跳转了么? |
00401039 |. 6A 00 push 0 | 他会先检查是否 |
0040103B |. FF35 CA204000 push dword ptr ds:[4020CA] | 有光盘,如果没有就跳转到错误提示
00401041 |. E8 4D000000 call | 那里(1)改过之后就不会跳转而出现
00401046 |. 83F8 12 cmp eax,12 | 文件错误的提示使因为
00401049 |. 75 15 jnz short unabexcr.00401060 |<--这个跳转的原因,他会比较文件是否
0040104B |. 6A 00 push 0 | 正确,如果不正确就会跳转到文件错
0040104D |. 68 35204000 push unabexcr.00402035 | 误的提示-------------------------
00401052 |. 68 40204000 push unabexcr.00402040 | 我们把他改为jz就可以完美爆破 |
00401057 |. 6A 00 push 0 | ; |hOwner = NULL |
00401059 |. E8 41000000 call | ; MessageBoxA |
0040105E |. EB 28 jmp short unabexcr.00401088 | |
00401060 |> 6A 00 push 0 | ; /Style = MB_OK|MB_APPLMODAL<-(2)
00401062 |. 68 79204000 push unabexcr.00402079 | ; |Title = "Error"
00401067 |. 68 7F204000 push unabexcr.0040207F | ; |Text = "The found file is not a valid keyfile!"
0040106C |. 6A 00 push 0 | ; |hOwner = NULL
0040106E |. E8 2C000000 call | ; Me