飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2763|回复: 1

[原创] 电脑定时关机1.3.6 算法分析

[复制链接]

该用户从未签到

发表于 2009-1-21 16:32:33 | 显示全部楼层 |阅读模式
【破文标题】电脑定时关机1.3.6 算法分析
【破文作者】pemet
【作者邮箱】pemet@163.com
【作者主页】
破解工具】PEID,OD
【破解平台】WINDOWS XP SP3
【软件名称】电脑定时关机1.3.6
【软件大小】
【原版下载】自己找
【保护方式】注册杩
【软件简介】
【破解声明】本人菜鸟一个,第一次写算法破文,在这献丑了~~把学习过程拿出来,跟大家分享一下
------------------------------------------------------------------------
【破解过程】定时关机.exe 查壳 显示为:Microsoft Visual Basic 5.0 / 6.0 没有加壳
下消息断点 bp rtcMsgBox 直到程序领空

0043BCBD   .  C785 5CFFFFFF 0>mov dword ptr ss:[ebp-A4],定时关机.00409500
0043BCC7   .  C785 54FFFFFF 0>mov dword ptr ss:[ebp-AC],8
0043BCD1   .  8D95 54FFFFFF   lea edx,dword ptr ss:[ebp-AC]
0043BCD7   .  8D4D 94         lea ecx,dword ptr ss:[ebp-6C]
0043BCDA   .  FF15 F8114000   call dword ptr ds:[<&MSVBVM60.__vbaVarDup>>;  MSVBVM60.__vbaVarDup
0043BCE0   .  8D95 64FFFFFF   lea edx,dword ptr ss:[ebp-9C]
0043BCE6   .  52              push edx
0043BCE7   .  8D85 74FFFFFF   lea eax,dword ptr ss:[ebp-8C]
0043BCED   .  50              push eax
0043BCEE   .  8D4D 84         lea ecx,dword ptr ss:[ebp-7C]
0043BCF1   .  51              push ecx
0043BCF2   .  6A 30           push 30
0043BCF4   .  8D55 94         lea edx,dword ptr ss:[ebp-6C]
0043BCF7   .  52              push edx
0043BCF8   .  FF15 A8104000   call dword ptr ds:[<&MSVBVM60.#595>]       ;   提示错误
0043BCFE   .  8D4D B0         lea ecx,dword ptr ss:[ebp-50]
0043BD01   .  FF15 74124000   call dword ptr ds:[<&MSVBVM60.__vbaFreeObj>;  MSVBVM60.__vbaFreeObj
==================================================================================================
向上翻

0043B9F3   .  FF15 74124000   call dword ptr ds:[<&MSVBVM60.__vbaFreeObj>;  MSVBVM60.__vbaFreeObj
0043B9F9   .  8D55 84         lea edx,dword ptr ss:[ebp-7C]
0043B9FC   .  52              push edx
0043B9FD   .  8D45 94         lea eax,dword ptr ss:[ebp-6C]
0043BA00   .  50              push eax
0043BA01   .  6A 02           push 2
0043BA03   .  FF15 3C104000   call dword ptr ds:[<&MSVBVM60.__vbaFreeVar>;  MSVBVM60.__vbaFreeVarList
0043BA09   .  83C4 0C         add esp,0C
0043BA0C   .  C745 FC 0300000>mov dword ptr ss:[ebp-4],3
0043BA13   .  8B4D DC         mov ecx,dword ptr ss:[ebp-24]
0043BA16   .  51              push ecx
0043BA17   .  68 04694000     push 定时关机.00406904
0043BA1C   .  FF15 04114000   call dword ptr ds:[<&MSVBVM60.__vbaStrCmp>>;  MSVBVM60.__vbaStrCmp
0043BA22   .  85C0            test eax,eax
0043BA24   .  75 15           jnz short 定时关机.0043BA3B
0043BA26   .  C745 FC 0400000>mov dword ptr ss:[ebp-4],4
0043BA2D   .  BA 7C6B4000     mov edx,定时关机.00406B7C                      ;  UNICODE "none"
0043BA32   .  8D4D DC         lea ecx,dword ptr ss:[ebp-24]
0043BA35   .  FF15 C4114000   call dword ptr ds:[<&MSVBVM60.__vbaStrCopy>;  MSVBVM60.__vbaStrCopy
0043BA3B   >  C745 FC 0600000>mov dword ptr ss:[ebp-4],6
0043BA42   .  8D55 DC         lea edx,dword ptr ss:[ebp-24]
0043BA45   .  52              push edx
0043BA46   .  E8 558EFEFF     call 定时关机.004248A0                         ;  这里就是算法CALL
0043BA4B   .  C745 FC 0700000>mov dword ptr ss:[ebp-4],7
0043BA52   .  833D D4F74300 0>cmp dword ptr ds:[43F7D4],0
0043BA59   .  75 1C           jnz short 定时关机.0043BA77                       关键跳转

==============================================================================================

F7 跟进0043BA46算法CALL

00424946   .  E8 F519FEFF     call 定时关机.00406340
0042494B   .  FF15 84104000   call dword ptr ds:[<&MSVBVM60.__vbaSetSyst>;  获取计算机名称MSVBVM60.__vbaSetSystemError
00424951   .  8B45 E4         mov eax,dword ptr ss:[ebp-1C]
00424954   .  50              push eax
00424955   .  68 28F04300     push 定时关机.0043F028
0042495A   .  FF15 54114000   call dword ptr ds:[<&MSVBVM60.__vbaStrToUn>;  MSVBVM60.__vbaStrToUnicode
00424960   .  8D4D E4         lea ecx,dword ptr ss:[ebp-1C]
00424963   .  FF15 78124000   call dword ptr ds:[<&MSVBVM60.__vbaFreeStr>;  MSVBVM60.__vbaFreeStr
00424969   .  8D4D B4         lea ecx,dword ptr ss:[ebp-4C]
0042496C   .  68 FF000000     push 0FF

00424A34   .  FF15 58104000   call dword ptr ds:[<&MSVBVM60.#518>]       ;   大小写转换
00424A3A   .  8D4D D4         lea ecx,dword ptr ss:[ebp-2C]
00424A3D   .  51              push ecx
00424A3E   .  FFD3            call ebx                                   ;  <&MSVBVM60.__vbaStrVarMove>
00424A40   .  8BD0            mov edx,eax
00424A42   .  B9 28F04300     mov ecx,定时关机.0043F028
00424A47   .  FFD6            call esi                                   ;  <&MSVBVM60.__vbaStrMove>
00424A49   .  8D4D D4         lea ecx,dword ptr ss:[ebp-2C]
00424A4C   .  FFD7            call edi                                   ;  <&MSVBVM60.__vbaFreeVar>
00424A4E   .  BA 247A4000     mov edx,定时关机.00407A24
00424A53   .  8D4D E8         lea ecx,dword ptr ss:[ebp-18]
00424A56   .  FF15 C4114000   call dword ptr ds:[<&MSVBVM60.__vbaStrCopy>;  MSVBVM60.__vbaStrCopy
00424A5C   .  8B15 28F04300   mov edx,dword ptr ds:[43F028]              ;  
00424A62   .  52              push edx
00424A63   .  FF15 34104000   call dword ptr ds:[<&MSVBVM60.__vbaLenBstr>;  取得计算机名长度

00424A69   .  8BF8            mov edi,eax
00424A6B   >  85FF            test edi,edi
00424A6D   .  0F8E 9F000000   jle 定时关机.00424B12
00424A73   .  8D45 D4         lea eax,dword ptr ss:[ebp-2C]              ;  
00424A76   .  8D4D B4         lea ecx,dword ptr ss:[ebp-4C]              ;  
00424A79   .  50              push eax
00424A7A   .  57              push edi
00424A7B   .  8D55 C4         lea edx,dword ptr ss:[ebp-3C]              ;  
00424A7E   .  51              push ecx
00424A7F   .  52              push edx
00424A80   .  C745 DC 0100000>mov dword ptr ss:[ebp-24],1                ;  
00424A87   .  C745 D4 0200000>mov dword ptr ss:[ebp-2C],2                ;  
00424A8E   .  C745 BC 28F0430>mov dword ptr ss:[ebp-44],定时关机.0043F028   
00424A95   .  C745 B4 0840000>mov dword ptr ss:[ebp-4C],4008             ;  
00424A9C   .  FF15 E4104000   call dword ptr ds:[<&MSVBVM60.#632>]       ;  MSVBVM60.rtcMidCharVar
00424AA2   .  8D45 C4         lea eax,dword ptr ss:[ebp-3C]
00424AA5   .  8D4D E4         lea ecx,dword ptr ss:[ebp-1C]
00424AA8   .  50              push eax
00424AA9   .  51              push ecx
00424AAA   .  FF15 8C114000   call dword ptr ds:[<&MSVBVM60.__vbaStrVarV>;  MSVBVM60.__vbaStrVarVal
00424AB0   .  50              push eax
00424AB1   .  FF15 50104000   call dword ptr ds:[<&MSVBVM60.#516>]       ; 反之取计算机名的ASCII值
00424AB7   .  8BC8            mov ecx,eax                                ;  eax=110
00424AB9   .  FF15 60104000   call dword ptr ds:[<&MSVBVM60.__vbaI2Abs>] ;  MSVBVM60.__vbaI2Abs
00424ABF   .  8B55 E8         mov edx,dword ptr ss:[ebp-18]
00424AC2   .  52              push edx
00424AC3   .  0FBFD8          movsx ebx,ax
00424AC6   .  FF15 CC114000   call dword ptr ds:[<&MSVBVM60.__vbaI4Str>] ;  MSVBVM60.__vbaI4Str
00424ACC   .  03D8            add ebx,eax                                  ASCII值进行累加
00424ACE   .  0F80 49010000   jo 定时关机.00424C1D
00424AD4   .  53              push ebx
00424AD5   .  FF15 18104000   call dword ptr ds:[<&MSVBVM60.__vbaStrI4>] ;  MSVBVM60.__vbaStrI4
00424ADB   .  8BD0            mov edx,eax
00424ADD   .  8D4D E8         lea ecx,dword ptr ss:[ebp-18]
00424AE0   .  FFD6            call esi
00424AE2   .  8D4D E4         lea ecx,dword ptr ss:[ebp-1C]
00424AE5   .  FF15 78124000   call dword ptr ds:[<&MSVBVM60.__vbaFreeStr>;  MSVBVM60.__vbaFreeStr
00424AEB   .  8D45 C4         lea eax,dword ptr ss:[ebp-3C]
00424AEE   .  8D4D D4         lea ecx,dword ptr ss:[ebp-2C]
00424AF1   .  50              push eax
00424AF2   .  51              push ecx
00424AF3   .  6A 02           push 2
00424AF5   .  FF15 3C104000   call dword ptr ds:[<&MSVBVM60.__vbaFreeVar>;  MSVBVM60.__vbaFreeVarList
00424AFB   .  8B1D 30104000   mov ebx,dword ptr ds:[<&MSVBVM60.__vbaStrV>;  MSVBVM60.__vbaStrVarMove
00424B01   .  83C4 0C         add esp,0C
00424B04   .  83EF 01         sub edi,1
00424B07   .  0F80 10010000   jo 定时关机.00424C1D
00424B0D   .^ E9 59FFFFFF     jmp 定时关机.00424A6B


00424B12   > \8B55 E8         mov edx,dword ptr ss:[ebp-18]              ;  
00424B15   .  8B3D 6C104000   mov edi,dword ptr ds:[<&MSVBVM60.__vbaStrC>;  MSVBVM60.__vbaStrCat
00424B1B   .  52              push edx
00424B1C   .  68 2C7A4000     push 定时关机.00407A2C                         ;  UNICODE "081037"
00424B21   .  FFD7            call edi                                   ; 累加和与固定值“081037”相连
00424B23   .  8945 DC         mov dword ptr ss:[ebp-24],eax              ;
00424B26   .  8D45 D4         lea eax,dword ptr ss:[ebp-2C]              ;  
00424B29   .  6A 06           push 6                                     ;  
00424B2B   .  8D4D C4         lea ecx,dword ptr ss:[ebp-3C]              ;  
00424B2E   .  50              push eax
00424B2F   .  51              push ecx
00424B30   .  C745 D4 0800000>mov dword ptr ss:[ebp-2C],8
00424B37   .  FF15 1C124000   call dword ptr ds:[<&MSVBVM60.#617>]       ;  取相连后的前6个字节
00424B3D   .  8D55 C4         lea edx,dword ptr ss:[ebp-3C]
00424B40   .  52              push edx
00424B41   .  FFD3            call ebx
00424B43   .  8BD0            mov edx,eax
00424B45   .  8D4D E8         lea ecx,dword ptr ss:[ebp-18]
00424B48   .  FFD6            call esi
00424B4A   .  8D45 C4         lea eax,dword ptr ss:[ebp-3C]
00424B4D   .  8D4D D4         lea ecx,dword ptr ss:[ebp-2C]
00424B50   .  50              push eax
00424B51   .  51              push ecx
00424B52   .  6A 02           push 2
00424B54   .  FF15 3C104000   call dword ptr ds:[<&MSVBVM60.__vbaFreeVar>;  MSVBVM60.__vbaFreeVarList
00424B5A   .  8B55 E8         mov edx,dword ptr ss:[ebp-18]
00424B5D   .  83C4 0C         add esp,0C
00424B60   .  52              push edx
00424B61   .  FF15 CC114000   call dword ptr ds:[<&MSVBVM60.__vbaI4Str>] ;  MSVBVM60.__vbaI4Str
00424B67   .  8945 DC         mov dword ptr ss:[ebp-24],eax
00424B6A   .  8D45 D4         lea eax,dword ptr ss:[ebp-2C]
00424B6D   .  8D4D C4         lea ecx,dword ptr ss:[ebp-3C]
00424B70   .  50              push eax
00424B71   .  51              push ecx
00424B72   .  C745 D4 0300000>mov dword ptr ss:[ebp-2C],3
00424B79   .  FF15 C0114000   call dword ptr ds:[<&MSVBVM60.#573>]       ;  把前6个字节转成十六进制
00424B7F   .  8D55 C4         lea edx,dword ptr ss:[ebp-3C]
00424B82   .  52              push edx
00424B83   .  FFD3            call ebx
00424B85   .  8BD0            mov edx,eax
00424B87   .  8D4D E8         lea ecx,dword ptr ss:[ebp-18]
00424B8A   .  FFD6            call esi
00424B8C   .  8D45 C4         lea eax,dword ptr ss:[ebp-3C]
00424B8F   .  8D4D D4         lea ecx,dword ptr ss:[ebp-2C]
00424B92   .  50              push eax
00424B93   .  51              push ecx
00424B94   .  6A 02           push 2
00424B96   .  FF15 3C104000   call dword ptr ds:[<&MSVBVM60.__vbaFreeVar>;  MSVBVM60.__vbaFreeVarList
00424B9C   .  8B55 E8         mov edx,dword ptr ss:[ebp-18]
00424B9F   .  83C4 0C         add esp,0C
00424BA2   .  68 407A4000     push 定时关机.00407A40                         ;  UNICODE "DG"
00424BA7   .  52              push edx
00424BA8   .  FFD7            call edi                 取得固定值"DG"与前6个字节十六十进相连得到注册码
00424BAA   .  8BD0            mov edx,eax
00424BAC   .  8D4D E8         lea ecx,dword ptr ss:[ebp-18]
00424BAF   .  FFD6            call esi
00424BB1   .  8B45 08         mov eax,dword ptr ss:[ebp+8]
00424BB4   .  8B55 E8         mov edx,dword ptr ss:[ebp-18]
00424BB7   .  8B08            mov ecx,dword ptr ds:[eax]
00424BB9   .  51              push ecx
00424BBA   .  52              push edx
00424BBB   .  FF15 04114000   call dword ptr ds:[<&MSVBVM60.__vbaStrCmp>>;  MSVBVM60.__vbaStrCmp
00424BC1   .  85C0            test eax,eax
00424BC3   .  75 17           jnz short 定时关机.00424BDC

【算法总结】
1.取得计算机名称转成小写
2.累加计算机名称ASCII值
3.累加值与固定值081037相连
4 取得相连前6个字节,再转成十六进制
5、最后固定值"DG"与前6个字节十六进制相连得到注册码

偷懒的写一下注册机 哈哈~~

Private Sub Command1_Click()
On Error Resume Next
a = Text1.Text
n = Mid(a, 1, 1)
If a = "" Then
MsgBox "请输入计算机名", 16, "错误提示"
Else
  If Asc(n) < 97 Or Asc(n) > 122 Then
   MsgBox "请于小写输入!", 16, "错误提示"
   Else
   b = Len(a)
   For i = 1 To b
    c = c + Asc(Mid(a, i, 1))
    Next i
    c = c & "0" & 81037
    c = Mid(c, 1, 6)
    c = "DG" & Hex(c)
    Text2.Text = c
   End If
   End If
  End Sub

【注册信息】
保存在[HKEY_CURRENT_USER\SOFTWARE\VB AND VBA PROGRAM SETTINGS\电脑定时关机\SETLOG]

------------------------------------------------------------------------
【破解总结】
------------------------------------------------------------------------
【版权声明】破文是学习的手记,兴趣是成功的源泉;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

[ 本帖最后由 pemet 于 2009-1-21 16:34 编辑 ]

评分

参与人数 1威望 +20 飘云币 +80 收起 理由
tianxj + 20 + 80 感谢您发布的原创作品!

查看全部评分

PYG19周年生日快乐!
  • TA的每日心情
    开心
    2017-5-3 20:51
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2009-1-21 19:11:16 | 显示全部楼层
    先坐个沙发
    楼主辛苦,算法分析得不错
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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