吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9452|回复: 20
收起左侧

[分享] 新手进阶——超详细代码过程分析

  [复制链接]
晴天 发表于 2010-8-14 07:46
本帖最后由 晴天 于 2010-8-17 08:00 编辑

大家好,我是晴天(Flash_Magic),我今天给大家带来的是破解不慌不忙的教程(不慌不忙是软件名),不慌不忙这个软件还是很受欢迎的,很多人以前发过爆破的教程,但没有对注册的过程进行分析。那我今天就带大家分析代码,让我们的破解提高一个水平。
基础知识还是要的,还没入门的可以看我的新手教程
3.JPG
这些都是我的详细的新手教程,在论坛搜索就可找到

废话不多,开始教程。

先介绍一下不慌不忙:大家都有过忙手忙脚最小化窗口(或关闭窗口)的经历吧!原因很简单——不想让突如其来的老板、老妈、老婆看到我们电脑屏幕上正在显示的游戏、日记、MM:-) 等属于个人隐私的东东。
本软件就能为你解决以上的烦恼,当你鼠标左、右键同时按下时,软件就能迅速隐藏正在显示的窗口,免去人工瞄准并按下每个窗口右上方的那个小得可怜的的最小化按扭之苦了。当危险解除再鼠标左、右键同时按下能使隐藏的窗口恢复。
此外程序还有关闭声音,保留某些窗口,自定义快捷键,隐藏桌面,隐藏任务栏,关闭程序等辅助功能。软件操作容易,界面简洁,不需要过多的时间摸索就能熟练使用。

1.JPG
2.JPG



开始破解

程序没有加壳,OD载入后用F12调用堆栈法或下API断点都可到达关键位置
开始分析过程


004029E0   .  6A FF         push -1                              ;  这段代码的开头
004029E2   .  68 087F4000   push Unhurrie.00407F08               ;  SE 处理程序安装
004029E7   .  64:A1 0000000>mov eax,dword ptr fs:[0]
004029ED   .  50            push eax
004029EE   .  64:8925 00000>mov dword ptr fs:[0],esp
004029F5   .  83EC 54       sub esp,54
004029F8   .  53            push ebx
004029F9   .  56            push esi
004029FA   .  BB 01000000   mov ebx,1
004029FF   .  57            push edi
00402A00   .  8BF1          mov esi,ecx
00402A02   .  53            push ebx
00402A03   .  E8 E04B0000   call <jmp.&MFC42.#CWnd::UpdateData_6>;  取部分用户名,不知是干什么的
00402A08   .  8D4C24 0C     lea ecx,dword ptr ss:[esp+C]
00402A0C   .  E8 A14B0000   call <jmp.&MFC42.#CString::CString_5>
00402A11   .  8D4C24 20     lea ecx,dword ptr ss:[esp+20]
00402A15   .  C74424 68 000>mov dword ptr ss:[esp+68],0
00402A1D   .  E8 4E4B0000   call <jmp.&MFC42.#CWnd::CWnd_567>
00402A22   .  C74424 20 F89>mov dword ptr ss:[esp+20],Unhurrie.0>
00402A2A   .  8D7E 64       lea edi,dword ptr ds:[esi+64]
00402A2D   .  68 48C64000   push Unhurrie.0040C648
00402A32   .  8BCF          mov ecx,edi
00402A34   .  885C24 6C     mov byte ptr ss:[esp+6C],bl
00402A38   .  E8 6F4B0000   call <jmp.&MFC42.#CString::operator=>;  取完整用户名
00402A3D   .  8B8E 14010000 mov ecx,dword ptr ds:[esi+114]
00402A43   .  8D86 14010000 lea eax,dword ptr ds:[esi+114]
00402A49   .  8B51 F8       mov edx,dword ptr ds:[ecx-8]
00402A4C   .  85D2          test edx,edx
00402A4E   .  7E 0A         jle short Unhurrie.00402A5A          ;  判断用户名是否填写,没有填写就跳向失败
00402A50   .  50            push eax
00402A51   .  8BCF          mov ecx,edi
00402A53   .  E8 9C4B0000   call <jmp.&MFC42.#CString::operator=>;  取填写的注册码
00402A58   .  EB 0C         jmp short Unhurrie.00402A66
00402A5A   >  68 B8C24000   push Unhurrie.0040C2B8               ;  ASCII "fuckjapan"
00402A5F   .  8BCF          mov ecx,edi
00402A61   .  E8 464B0000   call <jmp.&MFC42.#CString::operator=>
00402A66   >  8B96 10010000 mov edx,dword ptr ds:[esi+110]
00402A6C   .  837A F8 17    cmp dword ptr ds:[edx-8],17
00402A70      0F85 83010000 jnz Unhurrie.00402BF9                ;  判断注册码是否为23位,不是23位就跳向失败
00402A76   .  8D4424 10     lea eax,dword ptr ss:[esp+10]
00402A7A   .  57            push edi
00402A7B   .  50            push eax
00402A7C   .  8BCE          mov ecx,esi
00402A7E   .  E8 1D020000   call Unhurrie.00402CA0               ;  算法部分,F7跟入可以分析算法
00402A83   .  50            push eax
00402A84   .  8D4C24 10     lea ecx,dword ptr ss:[esp+10]
00402A88   .  C64424 6C 02  mov byte ptr ss:[esp+6C],2
00402A8D   .  E8 624B0000   call <jmp.&MFC42.#CString::operator=>
00402A92   .  8D4C24 10     lea ecx,dword ptr ss:[esp+10]
00402A96   .  885C24 68     mov byte ptr ss:[esp+68],bl
00402A9A   .  E8 014B0000   call <jmp.&MFC42.#CString::~CString_>
00402A9F   .  8B4C24 0C     mov ecx,dword ptr ss:[esp+C]
00402AA3   .  8B86 10010000 mov eax,dword ptr ds:[esi+110]
00402AA9   .  51            push ecx                             ; /堆栈S2=真注册码
00402AAA   .  50            push eax                             ; |堆栈S1=假注册码
00402AAB   .  FF15 24934000 call dword ptr ds:[<&MSVCRT._mbscmp>>; \将真的注册码与假的比较
00402AB1   .  83C4 08       add esp,8
00402AB4   .  85C0          test eax,eax
00402AB6      0F85 9E010000 jnz Unhurrie.00402C5A                ;  判断注册码是否正确,不对就跳
00402ABC   .  8D5424 10     lea edx,dword ptr ss:[esp+10]        ;  下面开始把注册信息写入注册表
00402AC0   .  52            push edx                             ; /pHandle
00402AC1   .  68 06000200   push 20006                           ; |Access = KEY_WRITE
00402AC6   .  50            push eax                             ; |Reserved
00402AC7   .  68 8CC24000   push Unhurrie.0040C28C               ; |Subkey = "Software\Microsoft\Windows\CurrentVersion"
00402ACC   .  68 02000080   push 80000002                        ; |hKey = HKEY_LOCAL_MACHINE
00402AD1   .  FF15 04904000 call dword ptr ds:[<&ADVAPI32.RegOpe>; \RegOpenKeyExA
00402AD7   .  85C0          test eax,eax
00402AD9   .  74 15         je short Unhurrie.00402AF0           ;  判断打开注册表指定位置是否成功
00402ADB   .  6A 00         push 0
00402ADD   .  6A 00         push 0
00402ADF   .  68 78C24000   push Unhurrie.0040C278               ;  ASCII "can't open regedit!"
00402AE4   .  8BCE          mov ecx,esi
00402AE6   .  E8 EB4A0000   call <jmp.&MFC42.#CWnd::MessageBoxA_>; 提示写入注册信息失败
00402AEB   .  E9 73010000   jmp Unhurrie.00402C63
00402AF0   >  51            push ecx
00402AF1   .  8BCC          mov ecx,esp
00402AF3   .  896424 18     mov dword ptr ss:[esp+18],esp
00402AF7   .  57            push edi
00402AF8   .  E8 A94A0000   call <jmp.&MFC42.#CString::CString_5>
00402AFD   .  8BCE          mov ecx,esi
00402AFF   .  E8 5CFEFFFF   call Unhurrie.00402960
00402B04   .  8B0F          mov ecx,dword ptr ds:[edi]
00402B06   .  8B5424 10     mov edx,dword ptr ss:[esp+10]
00402B0A   .  8B3D 00904000 mov edi,dword ptr ds:[<&ADVAPI32.Reg>; ADVAPI32.RegSetValueExA
00402B10   .  8B49 F8       mov ecx,dword ptr ds:[ecx-8]
00402B13   .  41            inc ecx
00402B14   .  51            push ecx                             ; /BufSize
00402B15   .  50            push eax                             ; |Buffer
00402B16   .  53            push ebx                             ; |ValueType
00402B17   .  6A 00         push 0                               ; |Reserved = 0
00402B19   .  68 64C24000   push Unhurrie.0040C264               ; |ValueName = "RegisteredBubmTzm"
00402B1E   .  52            push edx                             ; |hKey
00402B1F   .  FFD7          call edi                             ; \RegSetValueExA
00402B21   .  85C0          test eax,eax
00402B23   .  74 15         je short Unhurrie.00402B3A          ;  判断是否可以设置键值名
00402B25   .  6A 00         push 0
00402B27   .  6A 00         push 0
00402B29   .  68 4CC24000   push Unhurrie.0040C24C               ;  ASCII "can't change regedit!"
00402B2E   .  8BCE          mov ecx,esi
00402B30   .  E8 A14A0000   call <jmp.&MFC42.#CWnd::MessageBoxA_>;  提示写入注册信息失败
00402B35   .  E9 29010000   jmp Unhurrie.00402C63
00402B3A   >  51            push ecx
00402B3B   .  8D4424 10     lea eax,dword ptr ss:[esp+10]
00402B3F   .  8BCC          mov ecx,esp
00402B41   .  896424 18     mov dword ptr ss:[esp+18],esp
00402B45   .  50            push eax
00402B46   .  E8 5B4A0000   call <jmp.&MFC42.#CString::CString_5>
00402B4B   .  8BCE          mov ecx,esi
00402B4D   .  E8 0EFEFFFF   call Unhurrie.00402960
00402B52   .  8B8E 10010000 mov ecx,dword ptr ds:[esi+110]
00402B58   .  8B5424 10     mov edx,dword ptr ss:[esp+10]
00402B5C   .  8B49 F8       mov ecx,dword ptr ds:[ecx-8]
00402B5F   .  41            inc ecx
00402B60   .  51            push ecx
00402B61   .  50            push eax
00402B62   .  53            push ebx
00402B63   .  6A 00         push 0
00402B65   .  68 38C24000   push Unhurrie.0040C238               ;  ASCII "RegisteredBubmZcm"
00402B6A   .  52            push edx
00402B6B   .  FFD7          call edi                             ;  准备写入注册信息
00402B6D   .  85C0          test eax,eax
00402B6F   .  6A 00         push 0
00402B71   .  74 13         je short Unhurrie.00402B86          ;  判断是否写入注册信息成功
00402B73   .  6A 00         push 0
00402B75   .  68 4CC24000   push Unhurrie.0040C24C               ;  ASCII "can't change regedit!"
00402B7A   .  8BCE          mov ecx,esi
00402B7C   .  E8 554A0000   call <jmp.&MFC42.#CWnd::MessageBoxA_>;  提示写入注册信息失败
00402B81   .  E9 DD000000   jmp Unhurrie.00402C63
00402B86   >  68 90C14000   push Unhurrie.0040C190
00402B8B   .  51            push ecx
00402B8C   .  8BCC          mov ecx,esp
00402B8E   .  896424 24     mov dword ptr ss:[esp+24],esp
00402B92   .  68 2CC24000   push Unhurrie.0040C22C               ;  ASCII "SOURCEINFO1"
00402B97   .  E8 404A0000   call <jmp.&MFC42.#CString::CString_5>
00402B9C   .  51            push ecx
00402B9D   .  C64424 78 03  mov byte ptr ss:[esp+78],3
00402BA2   .  8BCC          mov ecx,esp
00402BA4   .  896424 2C     mov dword ptr ss:[esp+2C],esp
00402BA8   .  68 70C14000   push Unhurrie.0040C170               ; ASCII "SOURCE_DIALOG_CN"
00402BAD   .  E8 2A4A0000   call <jmp.&MFC42.#CString::CString_5>
00402BB2   .  8D4424 24     lea eax,dword ptr ss:[esp+24]
00402BB6   .  8D4C24 30     lea ecx,dword ptr ss:[esp+30]
00402BBA   .  50            push eax
00402BBB   .  885C24 7C     mov byte ptr ss:[esp+7C],bl
00402BBF   .  E8 CCF1FFFF   call Unhurrie.00401D90
00402BC4   .  8BC8          mov ecx,eax
00402BC6   .  C64424 70 04  mov byte ptr ss:[esp+70],4
00402BCB   .  E8 70F1FFFF   call Unhurrie.00401D40
00402BD0   .  50            push eax
00402BD1   .  8BCE          mov ecx,esi
00402BD3   .  E8 FE490000   call <jmp.&MFC42.#CWnd::MessageBoxA_>; 提示注册成功
00402BD8   .  8D4C24 14     lea ecx,dword ptr ss:[esp+14]
00402BDC   .  885C24 68     mov byte ptr ss:[esp+68],bl
00402BE0   .  E8 BB490000   call <jmp.&MFC42.#CString::~CString_>
00402BE5   .  8B4C24 10     mov ecx,dword ptr ss:[esp+10]
00402BE9   .  51            push ecx                             ; /hKey
00402BEA   .  FF15 0C904000 call dword ptr ds:[<&ADVAPI32.RegClo>; \RegCloseKey
00402BF0   .  8BCE          mov ecx,esi                          ;  到此注册信息写入过程结束
00402BF2   .  E8 D3490000   call <jmp.&MFC42.#CDialog::OnOK_4853>
00402BF7   .  EB 61         jmp short Unhurrie.00402C5A          ;  这个跳转跳过失败提示
00402BF9   >  6A 00         push 0                               ;  下边开始准备提示注册失败
00402BFB   .  68 90C14000   push Unhurrie.0040C190
00402C00   .  51            push ecx
00402C01   .  8BCC          mov ecx,esp
00402C03   .  896424 28     mov dword ptr ss:[esp+28],esp
00402C07   .  68 1CC24000   push Unhurrie.0040C21C               ;  ASCII "SOURCEINFO17"
00402C0C   .  E8 CB490000   call <jmp.&MFC42.#CString::CString_5>
00402C11   .  51            push ecx
00402C12   .  C64424 78 05  mov byte ptr ss:[esp+78],5
00402C17   .  8BCC          mov ecx,esp
00402C19   .  896424 28     mov dword ptr ss:[esp+28],esp
00402C1D   .  68 70C14000   push Unhurrie.0040C170               ; ASCII "SOURCE_DIALOG_CN"
00402C22   .  E8 B5490000   call <jmp.&MFC42.#CString::CString_5>
00402C27   .  8D5424 24     lea edx,dword ptr ss:[esp+24]
00402C2B   .  8D4C24 30     lea ecx,dword ptr ss:[esp+30]
00402C2F   .  52            push edx
00402C30   .  885C24 7C     mov byte ptr ss:[esp+7C],bl
00402C34   .  E8 57F1FFFF   call Unhurrie.00401D90
00402C39   .  8BC8          mov ecx,eax
00402C3B   .  C64424 70 06  mov byte ptr ss:[esp+70],6
00402C40   .  E8 FBF0FFFF   call Unhurrie.00401D40
00402C45   .  50            push eax
00402C46   .  8BCE          mov ecx,esi
00402C48   .  E8 89490000   call <jmp.&MFC42.#CWnd::MessageBoxA_>;  出现错误提示
00402C4D   .  8D4C24 14     lea ecx,dword ptr ss:[esp+14]
00402C51   .  885C24 68     mov byte ptr ss:[esp+68],bl
00402C55   .  E8 46490000   call <jmp.&MFC42.#CString::~CString_>
00402C5A   >  6A 00         push 0
00402C5C   .  8BCE          mov ecx,esi
00402C5E   .  E8 85490000   call <jmp.&MFC42.#CWnd::UpdateData_6>
00402C63   >  8D4C24 20     lea ecx,dword ptr ss:[esp+20]
00402C67   .  C64424 68 00  mov byte ptr ss:[esp+68],0
00402C6C   .  E8 5F490000   call <jmp.&MFC42.#CButton::~CButton_>
00402C71   .  8D4C24 0C     lea ecx,dword ptr ss:[esp+C]
00402C75   .  C74424 68 FFF>mov dword ptr ss:[esp+68],-1
00402C7D   .  E8 1E490000   call <jmp.&MFC42.#CString::~CString_>
00402C82   .  8B4C24 60     mov ecx,dword ptr ss:[esp+60]
00402C86   .  5F            pop edi
00402C87   .  5E            pop esi
00402C88   .  64:890D 00000>mov dword ptr fs:[0],ecx
00402C8F   .  5B            pop ebx
00402C90   .  83C4 60       add esp,60
00402C93   .  C3            retn                                 ; 代码结束


代码有点乱,大家将就吧,程序的目录下也有代码分析,那里的代码比较清楚一点

另外说一下,注册信息保存在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion 的RegisteredBubmTzm 和RegisteredBubmZcm这两个键值下
根据我的调试发现,只要在注册时输入任意23位注册码,并修改00402AB6的跳转,软件在写入注册信息时就写入正确的注册码,而不是用户输入的23位注册码,这个也算是这个软件的一个BUG吧。我的破解版就是利用了这个注册的BUG。
程序是明码比较,可以写内存注册机,大家可以自己尝试一下。我是考虑到有些不知道的人说我放毒(内存注册机杀毒软件一般会误报),所以不提供内存注册机
注意:使用破解版时,注册码可以任意输入,但必须是23位。破解版的图标,我改成了醒目的大眼睛图标,(其实是新浪网图标),便于区别。

附上不慌不忙软件的下载地址:http://u.115.com/file/f31f1c7dc   不慌不忙.rar

写这个帖子花了我不少时间,大家多加评分呀

免费评分

参与人数 1热心值 +1 收起 理由
hbfnmxb + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

tyou 发表于 2010-8-14 07:51
哇 沙发 lz 这干嘛使的。。。
枫叶红 发表于 2010-8-14 08:01
love、you 发表于 2010-8-14 08:17
james0922 发表于 2010-8-14 08:49
支持你楼主
182394598 发表于 2010-8-14 08:53
不错 学习了。
头像被屏蔽
hls518 发表于 2010-8-14 08:56
提示: 作者被禁止或删除 内容自动屏蔽
ximo 发表于 2010-8-14 10:30
不错,鼓励下,建议新人对照着练习下。
love、you 发表于 2010-8-14 10:38
学习啦~~~~~
支持下LZ..
xylon 发表于 2010-8-14 10:45
感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 14:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表