阳光网驿-企业信息化交流平台【DTC零售连锁全渠道解决方案】

 找回密码
 注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

手机号码,快捷登录

老司机
查看: 1817|回复: 5

[转帖] 【转帖赚币】新手进阶—超详细代码过程分析(八)

[复制链接]
  • TA的每日心情
    慵懒
    2017-10-6 11:28
  • 签到天数: 296 天

    [LV.8]以坛为家I

    发表于 2010-9-1 18:31:41 | 显示全部楼层 |阅读模式
    本帖最后由 struggle 于 2010-9-1 18:32 编辑

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



    废话不多,开始教程。

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



    1.jpg


    2.jpg


    开始PJ

    程序没有加壳,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:perator=>;  取完整用户名
    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:perator=>;  取填写的注册码
    00402A58   .  EB 0C                       jmp short Unhurrie.00402A66
    00402A5A   >  68 B8C24000         push Unhurrie.0040C2B8               

    00402A5F   .  8BCF                       mov ecx,edi
    00402A61   .  E8 464B0000          call <jmp.&MFC42.#CString:perator=>
    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:perator=>
    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吧。我的PJ版就是利用了这个注册的BUG。

    程序是明码比较,可以写内存zcj,大家可以自己尝试一下。我是考虑到有些不知道的人说我放毒(内存zcj杀毒软件一般会误报),所以不提供内存zcj

    注意:使用PJ版时,注册码可以任意输入,但必须是23位。PJ版的图标,我改成了醒目的大眼睛图标,(其实是新浪网图标),便于区别。


    附上软件:不慌不忙.rar 点击下载

    评分

    参与人数 1阳光币 +2 收起 理由
    ttpxk + 2 资料分享奖励

    查看全部评分

    楼主热帖
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    开心
    2014-2-3 19:34
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    发表于 2010-9-26 23:06:34 | 显示全部楼层
    咦。。我还以为说纯赚钱呀。这个真的很不错呀。。不过软件能不能是很想要的那种。比较行业软件呀。等!!
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    开心
    2015-10-8 09:06
  • 签到天数: 64 天

    [LV.6]常住居民II

    发表于 2010-10-7 10:15:55 | 显示全部楼层
    以前已看过了,不过也要支持下楼主!
    留下痕迹,好再查看!
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情

    2014-7-15 19:40
  • 签到天数: 239 天

    [LV.7]常住居民III

    发表于 2010-10-20 12:09:26 | 显示全部楼层
    这个我搞懂了。谢谢楼主提供的教程。不胜感激。
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    开心
    2020-2-20 08:39
  • 签到天数: 2055 天

    [LV.Master]伴坛终老

    发表于 2010-11-8 09:18:46 | 显示全部楼层
    不错的一款实用的小软件!
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    开心
    2012-4-13 15:48
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    发表于 2011-1-20 15:26:05 | 显示全部楼层
    这个要能看懂汇编语言的,我正在学习,谢谢楼主的经验
    启用邀请码注册,提高发帖质量,建设交流社区
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

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