原创]破解蓝鸟灌水机功能
破解某灌水机功能,一次不完美的破解-------------------
【作者】xxdoc
【工具】OLLDBG<第3版> ,MFC按钮消息入口查找工具
我在家里搞了很长时间,都没搞定注册,所以我就准备破解功能!本人是菜鸟,不会SMC《SELF MODIFYING COAD》技术,所以破解不是很好,写的也是菜鸟文章,高手就不用看了~~~~
首先PEID查壳,没有壳,是易语言写的!
我门打开程序看看吧,首先有个提示框,点击确定,出现注册框,硬盘吗程序已经算好了!我的是 :1485442661。好我填上假吗123456,点注册,提示注册错误,点确定程序退出了。好重来,点试用,看到没有很多灰色按钮,且点击发帖有广告《测试版发贴时会自动加上“蓝鸟发贴机-发贴测试”字样,注册后可消除》;另外试用只能小于51次,超过了,发帖按钮就变灰!
由于我下这个软件的时候没看说明书,通过我的测试只知道上面的几个限制,是否有其他的,大家可以到作者网站上去看,我的电脑不能上网,所以我今天就破解上面的几个限制!
Od载入程序吧!我门先分析注册过程吧!
我用插件看下程序的函数:
看到了这两个
ExitProcess程序退出 注册失败就退出
MessageBoxA对话框
我门下MessageBoxA断点!F9运行程序停在这里了
77D504E9 90 nop
77D504EA >8BFF mov edi, edi 这里停下来
77D504EC 55 push ebp
77D504ED 8BEC mov ebp, esp
看堆栈提示:
0012F790 100622C6? /CALL 到 MessageBoxA 来自 krnln.100622C0
我门反汇编中跟随:100622C0
100622BE 6A 00 push 0
100622C0 FF15 98360C10 call dword ptr 这里就是函数。[<&USER32.MessageBoxA>>; USER32.MessageBoxA
100622C6 5F pop edi
我门看一下就可以了,我门返回到刚才中断的地方
77D504EA >8BFF mov edi, edi
f9运行,弹出提示框!点确定,F9继续,这时候出现了注册框,我门填上假吗123456,点注册,
77D504E8 90 nop
77D504E9 90 nop
77D504EA >8BFF mov edi, edi 中断在这里
77D504EC 55 push ebp
77D504ED 8BEC mov ebp, esp
77D504EF 833D BC04D777 0>cmp dword ptr , 0
看堆栈提示:
0012F150 100622
C6? /CALL 到 MessageBoxA 来自 krnln.100622C0
跟上面的一样
我门这时候F8继续
77D5052A E8 2D000000 call MessageBoxExA
在这里弹出注册失败的信息!点确定,F8继续向下!经过一个RETN返回
100622C0 FF15 98360C10 call dword ptr [<&USER32.MessageBoxA>>; USER32.MessageBoxA
100622C6 5F pop edi 到这里
100622C7 83F8 03 cmp eax, 3
继续F8向下跟,经过几个RETN,最后返回00436FFD
00436FCD 55 push ebp 在这里下个断点
00436FCE 8BEC mov ebp, esp
00436FD0 6A 00 push 0
00436FD2 6A 00 push 0
00436FD4 6A 00 push 0
00436FD6 68 01030080 push 80000301
00436FDB 6A 00 push 0
00436FDD 68 00000000 push 0
00436FE2 68 04000080 push 80000004
00436FE7 6A 00 push 0
00436FE9 68 B4BA4000 push 0040BAB4 注册码错误
00436FEE 68 03000000 push 3
00436FF3 BB 00030000 mov ebx, 300
00436FF8 E8 B9030000 call 004373B6 是弹信息的call
00436FFD 83C4 28 add esp, 28到这里
00437000 68 01000100 push 10001
00437005 68 00000106 push 6010000
下完上面的断点,应为程序注册失败是要退出的,我门继续F8向下跟,经过很多的RETn,和跳转,最终来到了00436CFD
00436CCF 6A 00 push 0
00436CD1 68 01000000 push 1
00436CD6 6A 00 push 0
00436CD8 6A 00 push 0
00436CDA 6A 00 push 0
00436CDC 68 01000100 push 10001
00436CE1 68 E0000106 push 60100E0
00436CE6 68 DF000152 push 520100DF
00436CEB 68 03000000 push 3
00436CF0 BB 20030000 mov ebx, 320
00436CF5 E8 BC060000 call 004373B6关键CALL下断,将来要F7跟进去看看的
00436CFA 83C4 28 add esp, 28
00436CFD 68 01030080 push 80000301这里
00436D02 6A 00 push 0
00436D04 68 00000000 push 0
00436D09 68 04000080 push 80000004
00436D0E 6A 00 push 0
00436D10 68 39BA4000 push 0040BA39
这里要注意注释里的提示字符!继续F8向下跟,直到程序退出!
我门看到0040BA39 这个位置就是 "Software\soft\software"
00436DD6 68 04000080 push 80000004
00436DDB 6A 00 push 0
00436DDD 68 67BA4000 push 0040BA67注意这里 的字符,就是注册表里面的纪录试用次数的位置 "Software\Microsoft\ftp\Accounts\Login"
00436DE2 68 01030080 push 80000301
00436DE7 6A 00 push 0
00436DE9 68 03000000 push 3
=============================
00436E7E 6A 00 push 0
00436E80 68 03000000 push 3
00436E85 68 03000000 push 3
00436E8A BB A4060000 mov ebx, 6A4
00436E8F E8 22050000 call 004373B6 ; 这个call的 作用是将试用的次数加一,nop就ok
00436E94 83C4 28 add esp, 28
00436E97 68 01030080 push 80000301
00436E9C 6A 00 push 0
===========================
00436EC5 DC1D E9914000 fcomp qword ptr
00436ECB DFE0 fstsw ax
00436ECD F6C4 41 test ah, 41 ; 此处是判断试用次数的.注意EAX=100
00436ED0 0F85 AE000000 jnz 00436F84 ; 如果试用次数大于51,eax=0,这个跳转不能实现
00436ED6 6A 00 push 0
00436ED8 68 8DBA4000 push 0040BA8D
=============================
后面的我就不详细跟了,一直F8最后到这里
00437376 68 01000152 push 52010001
0043737B E8 1E000000 call 0043739E这个call要注意 00437380 83C4 04 add esp, 4
00437383 6A 00 push 0 这里
00437385 E8 0E000000 call 00437398
0043738A E8 03000000 call 00437392
在f8进过两个CALL就退出了!
注册过程分析结束了!
下面分析试用过程。
重新载入!
00436CF5 E8 BC060000 call 004373B6 ; 关键弹出提示框的 那个 call我们nop掉就ok
00436CFA 83C4 28 add esp, 28
00436CFD 68 01030080 push 80000301断在提示框的下面00436D02 6A 00 push 0
00436D04 68 00000000 push 0
注意观察注册表的键值变化!上面我已经写过了!就不重复下!注意上面提到的关键地方!会影响试用的!
直接F9运行观察!点发帖,可以看到发帖内容有广告!(蓝 鸟 发 )还有很多的限制!
好了,应为我很菜,在关键的CALL里跟过,无法找到关键的爆破点,所以我今天就破解他的限制功能并去掉广告,使试用版无限制,也算破解了吧,下面就是操作了!先去注册提示框吧
00436CEB 68 03000000 push 3
00436CF0 BB 20030000 mov ebx, 320
00436CF5 E8 BC060000 call 004373B6 ; 关键弹出提示框的 那个 call我们nop掉就ok
00436CFA 83C4 28 add esp, 28
第2步去次数限制:
00436E7E 6A 00 push 0
00436E80 68 03000000 push 3
00436E85 68 03000000 push 3
00436E8A BB A4060000 mov ebx, 6A4
00436E8F E8 22050000 call 004373B6 ; 这个call的 作用是将试用的次数加一,nop就ok
00436E94 83C4 28 add esp, 28
00436E97 68 01030080 push 80000301
00436E9C 6A 00 push 0
第3步去广告字符:载入程序,在数据窗口搜索字符:蓝鸟,可以找到广告的位置,然后,在CUP 窗口查找命令:PUSH 这个位置就可以找到,具体怎么改我还没搞定,不行的话可以把他们变为000《本人还没搞懂,真是菜啊~~,希望大家完善》
第四步,用MFC按钮消息入口查找工具的按钮突破功能搞定灰色按钮!《本人不会SMC技术,具体怎吗搞希望大虾门做个入门教程吧》
到此基本搞定,到底搞定没有,我没试验过,估计还有问题。留给大家搞定吧!
后来到看雪论坛看到:
据看雪的牛人说:作者发布的是DEMO版,没有注册模块,但功能完整! 看得真不错,,向你学习 推荐个站,
http://arteam.accessroot.com/releases/
里面有CRACKME。和一些我还不会用的东西
1 这个可以用那个按钮克星突破。但是还有软件附带的广告词。 缺憾美。。。呵呵。。。 感觉是在云里雾里呢 我查了一下壳,Microsoft Visual C++ 6.0 [覆盖]
用messageboxa好像断下来的与楼主的不同 学习了。。。。谢谢了