Throttle浮点算法注册
10:50 2005-4-18破解电脑报2003光盘软件Throttle
这个软件是用来调整上网设置的,据说会使上网速度快200-300%
能应用于各种操作系统
用PECompact 1.68 - 1.84 -> Jeremy Collake加壳
但是用Peid找到的OEP居然是假的!
我不得不手动脱壳,这还是第一次。
浮点数作为注册码
我不得不再次翻阅有关浮点的资料,总算搞清了,我自已以为。
破文在说明浮点运算上,可能让人看不明白,不过经过多次跟踪,我还是知道是什么意思了。
破解人:wofan
OD载入,输入:
name:wofan
serial:123456789 后来证明这个假码是不合法的
在这里下断:
0047A0CE .BA 80A44700 mov edx,unpack.0047A480 ;ASCII "Name"
因为论坛对文章长度有限制,不能发,只发注册机!!!
从上面分析可知,注册码只与注册名的最后一个字符有关。
我的注册码:
注册名:wofan长度为5
最后一个是n,它的ASCII码是6E
6E*5=226 226的十进制形式是550
变成5505 它的十六进制形式是1581
翻个倍变成:2B02
两个固定数:6 和 9BB2EB6A
2B02×6=1020C
2B02*9BB2EB6A=44F0A4D4 r 1A28EAX=44F0A4D4数太大,扩展到EDX中的是1A28
1020C+1A28=11C34放在EDX中
EDX与EAX中的值连接起来,为
11C3444F0A4D4
它的十进制形式就是注册码的中间数:
312485797209300
这个中间数减去1000,就得到注册码,当然在输入注册码时,一定要输入它的浮点样式!!切切!!
312485797209300-1000=312485797208300
数一下它有多少位?这里是14位!
那么填入注册框中的数据就是:
312485797208300E+14
我的注册名:wofan
我的注册码:312485797208300E+14
12:55 2005-4-18
by wofan
附VB6注册机:
Option Explicit
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long '函数声明,产生网络链接效果'
Private Sub Image2_Click()
ShellExecute 0, "open", "http://ocn.e5v.com/cgi-bin/bbs/ccb/index.cgi?", vbNullString, vbNullString, 0'到OCN破解组织
End Sub
Private Sub Image3_Click()
ShellExecute 0, "open", "http://luowei.mireene.com/bbs/index.php", vbNullString, vbNullString, 0'到飘云论坛
End Sub
Private Sub Text2_Click()
Dim name As String
Dim code As String
Dim lenj As Integer
Dim a, b, c, N, d, e As Double '将常数作label2.caption,解决数制问题
N = Val(Label2.Caption)'N表示常数&H9BB2EB6A,如查直接赋值,它竟然是个负数,这是VB的错误!
name = Trim(Text1.Text)
lenj = Len(name)
If Len(name) = 0 Then
MsgBox "请输入注册名!", 48, "wofan"
Text1.SetFocus
Exit Sub
End If
a = Asc(Mid$(name, lenj, 1))
b = a * lenj
code = CStr(b)
code = code & CStr(lenj)
a = CLng(code) * 2
b = a * 6
c = a * N
b = b * &H10000000
b = b * &H10
c = c - 1000 '让它转成真正的注册码
a = b + c
code = CStr(a) '转换成字串
lenj = Len(code) '取它的长度,以便确定浮点位数!
code = code & "E+" & (lenj - 1)'转成合法的浮点样式注册码
'因为VB6在数据太大时,会自作主张转换为浮点数,这个注机对于注册名长度超过9位,就会得到
'错误的注册码,它的形式就是多了一个E+……这真是莫名其妙!
Text2.Text = code
End Sub
Private Sub Text2_GotFocus()
With Text2
.SelStart = 0
.SelLength = Len(Trim(Text2.Text))
End With
End Sub
by wofan
感谢你看完! 支持加学习~~~~~~~~~
原注册机不完美,重发,就不编译了!
Option ExplicitPrivate Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long '函数声明,产生网络链接效果'
Const N As Double = 2612194154# 'N表示常数&H9BB2EB6A
Private Sub Image2_Click()
ShellExecute 0, "open", "http://ocn.e5v.com/cgi-bin/bbs/ccb/index.cgi?", vbNullString, vbNullString, 0'到OCN破解组织
End Sub
Private Sub Image3_Click()
ShellExecute 0, "open", "http://luowei.mireene.com/bbs/index.php", vbNullString, vbNullString, 0'到飘云论坛
End Sub
Private Sub Text2_Click()
Dim name As String
Dim code, codeyes As String
Dim lenj, d, eAs Integer
Dim a, b, c As Double
name = Trim(Text1.Text)
lenj = Len(name)
If Len(name) = 0 Then
MsgBox "请输入注册名!", 48, "wofan"
Text1.SetFocus
Exit Sub
End If
a = Asc(Mid$(name, lenj, 1))
b = a * lenj
code = CStr(b)
code = code & CStr(lenj)
a = CLng(code) * 2
b = a * 6
c = a * N
b = b * &H10000000
b = b * &H10
c = c - 1000
a = b + c
code = CStr(a) '转换成字串
lenj = Len(code) '取它的长度,以便确定浮点位数!
If StrComp(".", Mid$(code, 2, 1)) = 0 Then'看看是不是太大的数!
d = InStr(code, "+") '取得浮点位数的位置
e = CInt(Mid$(code, (d + 1))) '取得浮点位数
codeyes = Mid$(code, 1, 1) & Mid$(code, 3, (d - 4))
While Len(codeyes) < e + 1 '位数不够,就补零吧!
codeyes = codeyes & "0"
Wend
code = codeyes
lenj = Len(code)
End If
code = code & "E+" & (lenj - 1)'转成合法的浮点样式注册码
'因为VB6在数据太大时,会自作主张转换为浮点数,这个注机对于注册名长度超过9位,就会得到
'错误的注册码,它的形式就是多了一个E+……这真是莫名其妙!
'2005-4-19解决这个问题
'这么一个简单的问题,都要成为拦路虎!
'虽然有点罗嗦,不过问题还是解决了。VB真是有点麻烦。
Text2.Text = code
End Sub
Private Sub Text2_GotFocus()
With Text2
.SelStart = 0
.SelLength = Len(Trim(Text2.Text))
End With
End Sub 支持兄弟。 厉害,学习~ 谢谢 指教
页:
[1]