- UID
- 41862
注册时间2007-12-18
阅读权限8
最后登录1970-1-1
初入江湖
该用户从未签到
|
【破文标题】电脑定时关机1.3.6 算法分析
【破文作者】pemet
【作者邮箱】[email protected]
【作者主页】
【破解工具】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 编辑 ] |
评分
-
查看全部评分
|