加入收藏  |  设为首页  |  联系我们
网站首页 公司概况 公司文化 新闻动态 加密狗展示 工作坏境 招贤纳士 精诚合作 在线留言
新闻中心
公司新闻
行业资讯
 
地    址:广东省深圳市地王大厦38层8801号。
客服QQ1:4642967
客服QQ2:5915307
手    机:13528540969(刘先生)
邮    箱:4642967@qq.com
网    址:http://www.taixuan.net/
新闻中心 当前位置:首页 >> 新闻中心 >> 公司新闻

加密狗破解入门之爆破

发表时间:2018-07-14    来源:不详    浏览次数:1556

本文是破解入门教程第三篇,带大家破解一个注册失败也没有错误提示对话框的crackme,教大家如何破解这方面的软件。
【破解过程】
破解前的思路:
在输入注册码后,点击cheak,在Serial里提示"Maybe ask Joe?",估计程序里应该有这个提示字符串,所以用常规方法尝试
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
用Ollydbg 1.10b载入sd-cm_.exe,提示此软件已加壳,退出Ollydbg 1.10b,用peid查看,发现是用upx加壳,用upx-ripper(
一般是先用他脱,他脱的比较好,能编辑资源文件)脱壳在最后校验的时候提示错误,看来是加了多层壳了(这是经验哦^_^),
用Unpacker for UPX(他脱壳没有效验,可以脱多层壳,缺点是资源在脱壳后无法编辑)脱壳,然后再用peid查看发现第2层壳是
LCC(什么东东?)加的壳,没有这种壳的脱壳器,只好直接调试.载入后运行,随便输入注册码和用户名,点击check,在注册码处
看到提示字符串Maybe ask Joe?,在汇编的代码上右击搜索->字符参考,显示不出字符串,用老罗的插件来显示(用Find ASCII,这里加一下上篇帖子里 <<Lanneret 兄说得VB 的问题也可一用老罗的插件,用另一个显示即可)
,发现了字符串Maybe ask Joe?.双击来到这里----------------------------------------------------------------------
0040300B    /E9 E8010000          jmp 34567890.004031F8                                                      |
00403010    |68 2C794000          push 34567890.0040792C             ; ASCII "Joe"<-这个是真正的用户名       |
00403015    |68 58764000          push 34567890.00407658             ; ASCII "xd"<-这个是你输入的姓名        |
0040301A    |E8 5D090000          call <jmp.&KERNEL32.lstrcmpA>                                              |
0040301F    |83F8 00              cmp eax,0                                                                  |
00403022    |75 14       |--跳转- jnz short 34567890.00403038<-------这个是关键跳转,可以看到他把正确的地方   |
00403024    |6A 30       |   ---| push 30                            略过了,并且跳转到了错误的信息的地方,可  |
00403026    |68 B1784000 |正    | push 34567890.004078B1             以知道它是关键跳转,改为jz,点击          |
0040302B    |68 BB784000 |确 容 | push 34567890.004078BB             继续执行,软件注册成功^_^                |
00403030    |FF75 08     |的    | push dword ptr ss:[ebp+8]                                                  |
00403033    |E8 98090000 |内 ---| call <jmp.&USER32.MessageBoxA>                                             |
00403038    |6A 23       |--到--- push 23                                                                    |
0040303A    |68 BC764000          push 34567890.004076BC             ; ASCII "Maybe ask Joe?"<----------------
0040303F    |68 C9000000          push 0C9
00403044    |FF75 08              push dword ptr ss:[ebp+8]
00403047    |E8 60090000          call <jmp.&USER32.GetDlgItemTextA>
0040304C    |A3 00404000          mov dword ptr ds:[404000],eax
00403051    |833D 00404000 20     cmp dword ptr ds:[404000],20
00403058    |73 17                jnb short 34567890.00403071
0040305A    |68 A2784000          push 34567890.004078A2             ; ASCII "Maybe ask Joe?"
0040305F    |68 C9000000          push 0C9
00403064    |FF75 08              push dword ptr ss:[ebp+8]
00403067    |E8 34090000          call <jmp.&USER32.SetDlgItemTextA>
0040306C    |E9 87010000          jmp 34567890.004031F8
00403071    |C705 0C404000 000000>mov dword ptr ds:[40400C],0
是不是很简单,只要找到关键的地方就很容易破解.


----------------------------------------------------------------------------------------------
【破解心得】
其实这个crackme有很多破解方法这里一一举出,扩展更多的知识给广大破解初学者:

方法1:
可以在这里下断"0040301F    |83F8 00              cmp eax,0"
断下后在寄存器窗口的eax那行的16进制数据上单击(那个数据的底色变成黄色),然后右击(在我的机器上不这样操作选项出不来),选择
修改,然后改为0,注册即可成功.
这里之所以改为0,是因为"cmp eax,0 和jnz short 34567890.00403038"这个代码的意思是用0来删除eax的值,如果为0就不跳转,(
注册正确)而不为0就跳转(跳就提示注册失败),我们把值改为0,这样0-0=0,不跳转,注册成功
不过一般不这样改,因为每次都要修改寄存器.比较麻烦

方法2:
修改注册错误后的跳转把"jnz short 34567890.00403038(前面是文件名,大家不要被误导)"改为
"jnz short 34567890.00403024(这个是提示注册正确的地方的开头代码)"这样注册成功,继续执行注册正确的提示代码,
注册错误,还是执行注册正确的代码
这样的破解是比较完美的.

方法3:
这个就不能说是方法了
看到我在上面的注释; ASCII "Joe"<-这个是真正的用户名
                  ; ASCII "xd"<-这个是你输入的姓名 .
了么,这了可以看出Joe是真正的注册名,因为在对比注册名的时候压入了这个字符串,所以可以猜到Joe(对比注册名,
他区分大小写)为注册名.

最后写出程序的格式

if 注册名=Joe then
注册成功
else
在注册码的文本框里显示注册错误
end if

方法1格式:
if 注册名=Joe then<--这里如果不等于,eax的值就为1,等于就为0
注册成功          (接上)我们在这里把eax的值改为0就可相等
else
在注册码的文本框里显示注册错误
end if

方法2格式:

if 注册名=Joe then
注册成功:
         注册成功
else
goto 注册成功
end if

方法3:

总结:
其实像这种crackme破解的方法有很多,本文只介绍了其中一种,以后会陆续讲到其它的方法,不过是换了个软件而已。


关闭窗口】 【打印本页】 【收藏页面
Copyright (c) 2013 - 2016 加密狗破解网 Inc. All Rights Reserved 备案号:粤ICP备08125688号 版权所有:加密狗破解网