首页
社区
课程
招聘
[原创]菜鸟必看的破解文章(2)-追出软件注册码
发表于: 2005-1-23 20:17 27819

[原创]菜鸟必看的破解文章(2)-追出软件注册码

2005-1-23 20:17
27819

【破文作者】   小弟[爆破王]

【文章题目】   菜鸟必看的破解文章(2)-追出软件注册码

【软件名称】   crackme

【加密方式】   序列号

【破解工具】   Ollydbg 1.10b

【破解平台】   XP SP2

----------------------------------------------------------------------------------------------
【文章简介】

呵呵,这是我的第二篇较长帖子了.
第一篇帖子有些错字,实在不好意思,这个帖子我已经看了很多遍,应该没有错字了^_^
希望大家喜欢我的作品.^_^
有什么不明白的可以在下面贴处.

----------------------------------------------------------------------------------------------
【破解过程】
追出软件注册码的原理

一般的软件都是用对比真假码的方法来检查软件的注册码是否正确,而检查前软件的真假注册码要有一个存放的位置,
这个位置就可能是堆栈(当然也可能是寄存器,不过这里以堆栈为例),所以,我们可以通过找对比注册码的位置,然后下
断点,再单步跟踪,查看堆栈,来追出软件的真正注册码.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
这个crackme也可以爆破----------------------------------------------------------------------------------------
载入unabexcm5.exe,运行这个crackme,单击check,查看错误的提示信息"The serial you entered is not correct!"(不带 |
引号),然后在反汇编的代码上右击,搜索->字符参考.找到这个错误提示信息,双击,来到这里----------------------------|--------
然后向上找,找到这里下断点--------                                                                           |       |
004010AF   |> /8305 5C224000 01 | /add dword ptr ds:[40225C],1                                              |       |
004010B6   |. |8305 5D224000 01 | |add dword ptr ds:[40225D],1                                              |       |
004010BD   |. |8305 5E224000 01 | |add dword ptr ds:[40225E],1                                              |       |
004010C4   |. |8305 5F224000 01 | |add dword ptr ds:[40225F],1                                              |       |
004010CB   |. |FECA             | |dec dl                                                                   |       |
004010CD   |.^\75 E0  在这里下断->\jnz short unabexcm.004010AF  <----之所以在这里下断是因为注册码的判断一   |       |
004010CF   |.  68 FD234000        push unabexcm.004023FD             般都在错误提示的前面把正确的           |       |
004010D4   |.  68 00204000        push unabexcm.00402000             注册码和不正确的注册码分别压栈         |       |
004010D9   |.  E8 63000000        call <jmp.&KERNEL32.lstrcatA>      而确切的压栈地点第一次破解时并不是     |       |
004010DE   |.  68 5C224000        push unabexcm.0040225C             很清楚所以在这里下断(只要是在对比注册  |       |
004010E3   |.  68 00204000        push unabexcm.00402000             码前他地方也是可以,大家可以试一试)     |       |
004010E8   |.  E8 54000000        call <jmp.&KERNEL32.lstrcatA>      ; \lstrcatA                            |       |
004010ED   |.  68 24234000        push unabexcm.00402324             ; /String2 = ""                        |       |
004010F2   |.  68 00204000        push unabexcm.00402000             ; |String1 = ""                        |       |
004010F7   |.  E8 51000000        call <jmp.&KERNEL32.lstrcmpiA>     ; \lstrcmpiA                           |       |
004010FC   |.  83F8 00            cmp eax,0                                                                 |       |
004010FF   |.  74 16      错误的话je short unabexcm.00401117就继续执行<-把这里的je改成jne即可<---------------       |
00401101   |.  6A 00         |    push 0                             ; /Style = MB_OK|MB_APPLMODAL                  |
00401103   |.  68 34244000   |    push unabexcm.00402434             ; |Title = "Error!"                            |
00401108   |.  68 3B244000   |    push unabexcm.0040243B             ; |Text = "The serial you entered is not correct!"
0040110D   |.  FF75 08       |    push dword ptr ss:[ebp+8]          ; |hOwner
00401110   |.  E8 56000000   |    call <jmp.&USER32.MessageBoxA>     ; \MessageBoxA
00401115   |.  EB 16         |    jmp short unabexcm.0040112D
00401117   |>  6A 00      正确的话push 0跳到这里                     ; /Style = MB_OK|MB_APPLMODAL
00401119   |.  68 06244000        push unabexcm.00402406             ; |Title = "Well Done!"
0040111E   |.  68 11244000        push unabexcm.00402411             ; |Text = "Yep, you entered a correct serial!"
00401123   |.  FF75 08            push dword ptr ss:[ebp+8]          ; |hOwner
00401126   |.  E8 40000000        call <jmp.&USER32.MessageBoxA>     ; \MessageBoxA

然后继续执行程序,点击check后断下,这里是一个循环,按F8单步执行开始会跳到上面,然后按F8单步往下执行就不会循环了
,要注意看右下角的堆栈窗口
按一下,看一眼,直到来到这里-----
004010ED   |.  68 24234000    |   push unabexcm.00402324
004010F2   |.  68 00204000    |   push unabexcm.00402000
004010F7   |.  E8 51000000  这里->call <jmp.&KERNEL32.lstrcmpiA>
004010FC   |.  83F8 00            cmp eax,0
然后你看堆栈窗口会有两个字符串
0012FB00    00402000   |String1 = "L2C-57816784-ABEX"<-
0012FB04    00402324   \String2 = "Enter your serial" |<-
第一个是正确的注册码----------------------------------- |
第二个就是你输入的注册码.--------------------------------
把第一个字符串"L2C-57816784-ABEX"(不带引号)复制到crackme里,然后点击check,是不是注册成功了?^_^

----------------------------------------------------------------------------------------------
【破解心得】

破解其实很简单,如果是追注册码,你知道了在那里下断点,就成功了一半.
写出程序的格式:

.......注册码算法                              <---这里一般是注册码算法,也可能其他的一些无用的代码.
压栈 正确的注册码                              <--|这两个代码的位置不是绝对的.有可能互相调换.
压栈 输入的注册码                              <----|
.......其他代码
if 正确的注册码=输入的注册码 then              <---在比较注册码的时候,你就会在堆栈窗口看见真正的注册码和假码.
注册成功
else
注册失败
end if

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
这里把爆破的程序格式再写一遍

if 注册码正确 then
注册成功
else
注册失败
end if

爆破后

if 注册码不正确 then
注册成功
else
注册失败
end if

这里再给各位菜鸟介绍一下速记跳转的方法,Jc,Jz,Je,Js,Jo,Jp这几个跳转,只要在两个字母之间加上n,
他的跳转条件就和原来相反,比如"jz 为0跳转"中间加上n"jnz 不为0跳转"

高手不要笑我,其实本人会的只有这么多,所以就写了这么菜的东西,希望对广大破解菜鸟有所帮助.^_^
大家看看下面的第二个crackme,这个crackme要爆破的话要改10多处,看过我第一篇帖子的人可以试试
破解,并不是很难,对比注册码的跳转虽多但很容易找到.过段时间我会在下面贴处答案.

----------------------------------------------------------------------------------------------
【破解声明】   我是一只小菜鸟,偶得一点心得,愿与大家分享:)

【版权声明】   本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
----------------------------------------------------------------------------------------------
                                                                                 文章写于2005-1-23 15:36:45

附件:unabexcm5fl.rar 附件:unpacked2.rar


[峰会]看雪.第八届安全开发者峰会10月23日上海龙之梦大酒店举办!

收藏
免费 7
支持
分享
最新回复 (47)
雪    币: 2054
活跃值: (272)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
2
呵呵,预览帖子时格式是乱的,不过发表后格式不是乱的,看来看雪大哥的论坛系统有一个小毛病哦:D
2005-1-23 20:21
0
雪    币: 44153
活跃值: (20200)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
3
test

00401119   |.  68 06244000        push unabexcm.00402406             ; |Title = "Well Done!"
0040111E   |.  68 11244000        push unabexcm.00402411             ; |Text = "Yep, you entered a correct serial!"
00401123   |.  FF75 08            push dword ptr ss:[ebp+8]          ; |hOwner
00401126   |.  E8 40000000        call <jmp.&USER32.MessageBoxA>     ; \MessageBoxA
2005-1-23 20:45
0
雪    币: 44153
活跃值: (20200)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4
最初由 小弟 发布
呵呵,预览帖子时格式是乱的,不过发表后格式不是乱的,看来看雪大哥的论坛系统有一个小毛病哦:D


谢谢反馈,bug己修复。
2005-1-23 20:45
0
雪    币: 296
活跃值: (250)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
5
大概看了一下,好像是两位两位取注册码运算的,今天太累了,有空玩玩,满有趣的^_^
2005-1-23 21:05
0
雪    币: 95901
活跃值: (200549)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
6
支持一下!!!
2005-1-23 21:25
0
雪    币: 119
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
晕倒,这样的东东也算精帖?????????

上这个论坛的人如果连简单的跳转都不会,那还来做什么啊?

看雪大哥你要看清楚哦~~~~~

2005-1-23 22:00
0
雪    币: 44153
活跃值: (20200)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
8
最初由 hczcyy 发布
晕倒,这样的东东也算精帖?????????

上这个论坛的人如果连简单的跳转都不会,那还来做什么啊?

看雪大哥你要看清楚哦~~~~~
........


话不能这么说。
菜鸟在没入门前感觉是很困难的,需要这些扫肓性的初级文章。然后才能慢慢成长。
另外,加精也是鼓励一下 小弟 朋友,希望他能边学边总结,用这种方法相信他进步很快的。
2005-1-23 22:12
0
雪    币: 244
活跃值: (265)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
9
支持原创!
2005-1-23 22:14
0
雪    币: 95901
活跃值: (200549)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
10
最初由 kanxue 发布


话不能这么说。
菜鸟在没入门前感觉是很困难的,需要这些扫肓性的初级文章。然后才能慢慢成长。
另外,加精也是鼓励一下 小弟 朋友,希望他能边学边总结,用这种方法相信他进步很快的。


完全同意坛主的看法.
任何事物都是从不会到会,从简单到难.
2005-1-23 22:14
0
雪    币: 119
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
鼓励是应该的.但是实际上看雪论坛精华 1-6 有许多类似的帖子啊!

如果我贴几分这样的东东,也给我加精? ^_^D:

我认为加精的帖子应该是有创意的,依葫芦画瓢的恐怕
2005-1-23 22:24
0
雪    币: 296
活跃值: (250)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
12
我认为,每个新人看高手的文章都有一定困难,因此需要这样的文章,不过建议老大建立一个新手入门精华文章区,把入门需要的基础精华贴放在那里,新人找起来可以简单一点,不然面对一大堆精华文章会晕晕的^_^
2005-1-23 22:26
0
雪    币: 301
活跃值: (300)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
13
最初由 Winter-Night 发布
我认为,每个新人看高手的文章都有一定困难,因此需要这样的文章,不过建议老大建立一个新手入门精华文章区,把入门需要的基础精华贴放在那里,新人找起来可以简单一点,不然面对一大堆精华文章会晕晕的^_^


这个提议不错,我也同意
2005-1-23 23:03
0
雪    币: 214
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
最初由 Winter-Night 发布
我认为,每个新人看高手的文章都有一定困难,因此需要这样的文章,不过建议老大建立一个新手入门精华文章区,把入门需要的基础精华贴放在那里,新人找起来可以简单一点,不然面对一大堆精华文章会晕晕的^_^

严重同意!
2005-1-23 23:45
0
雪    币: 300
活跃值: (521)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
15
我想写过文章的朋友都应该知道,整理文章可比跟踪时候麻烦多了,所以觉的应该多多鼓励。
2005-1-24 00:20
0
雪    币: 2054
活跃值: (272)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
16
最初由 hczcyy 发布
鼓励是应该的.但是实际上看雪论坛精华 1-6 有许多类似的帖子啊!

如果我贴几分这样的东东,也给我加精? ^_^D:

我认为加精的帖子应该是有创意的,依葫芦画瓢的恐怕

呵呵,谢谢hczcyy大哥的建议,不过我可不是依葫芦画瓢的哦,我也是一个菜鸟,所以我比较知道那些刚学破解的菜鸟不明白的地方,写的帖子也能让菜鸟看得明白.接纳最后一条建议,我以后会写出比较有创意的帖子.
十分感谢看雪大哥对我的支持.
2005-1-24 00:35
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
入门好文章,我是最不愿写破文的。我喜欢看
2005-1-24 03:08
0
雪    币: 162
活跃值: (63)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
18

强烈同意!呵呵,如果真有一个新手专区,那么看雪论坛一定更加亲近所有想加入crack之路的人们了!!大哥们认为呢?
2005-1-24 08:13
0
雪    币: 162
活跃值: (63)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
19

小弟兄的破文对起点要求不高,对我们这一族刚刚开始的菜鸟们来说太好了哦!最最主要的是极大的增强了我们的信心哦!!文中提到的第二个好象NOP掉四处就爆掉了,期待着新方法
2005-1-24 09:13
0
雪    币: 162
活跃值: (63)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
20

这些破文都是有英文字串参考的,有了依据,可是如果遇到一个中文字串该怎么办呢?小弟兄能不能举个把中文字串的例子啊?比如VB的 谢谢了
2005-1-24 10:21
0
雪    币: 225
活跃值: (146)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
21
这个crackme,我以前看过,好像是2004大礼包的crackme里面的.
算法其实很简单,楼主可以看一下!
以后争取也写点这样的文章,老大也给点鼓励啊.^_^
2005-1-24 11:01
0
雪    币: 211
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
22
最初由 小弟 发布
【破文作者】 小弟[爆破王]

【文章题目】 菜鸟必看的破解文章(2)-追出软件注册码

【软件名称】 crackme
........


版主加精意在对刚入此道的新手的鼓励,但还是希望在发帖之前权衡一下,别轻易加上"原创""必看"之类有心理引导趋向的词语.
2005-1-24 14:40
0
雪    币: 332
活跃值: (479)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
23
最初由 hczcyy 发布
晕倒,这样的东东也算精帖?????????

上这个论坛的人如果连简单的跳转都不会,那还来做什么啊?

看雪大哥你要看清楚哦~~~~~
........

我的第一篇,也是je jne jmp,哈哈,那时甚至连eax都不知道是什么!只知道瞎跳!居然也搞定了一个免cd的游戏。搞定之后,别提多爽了!
这就是破解的快感!
有快感才有兴趣和动力!
有动力才能前进!
....
当你的快感消失了,
你就会停止了前进...
所谓――破解疲劳????
2005-1-24 14:55
0
雪    币: 190
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
最初由 Winter-Night 发布
我认为,每个新人看高手的文章都有一定困难,因此需要这样的文章,不过建议老大建立一个新手入门精华文章区,把入门需要的基础精华贴放在那里,新人找起来可以简单一点,不然面对一大堆精华文章会晕晕的^_^


我赞成
2005-1-24 14:57
0
雪    币: 225
活跃值: (146)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
25
赞成,写的详细的入门文章其实并不多,主要原因在于写破文实在麻烦些。 这样的文章其实多些很好,入门就简单多了,少走很多弯路。另,不要认为简单的就不值得看了,这里你可以看到很多基础的东西,而这恰恰是你进一步学习的基础。循序渐进才是学习的正道,基础没打好,也许你也可以破很多软件,但原理的东西你是否真的搞明白了呢?如果有时间我真想把2004大礼里面的crackme一个个的作完,那样的化,就真正明白了pe是怎么回事了。。。。
2005-1-24 15:12
0
游客
登录 | 注册 方可回帖
返回
//