Навигация по сайту:
дата выхода worms battlegrounds
Статья "Кейген для реальной программы, написанной на Basic .NET":
<< Все статьи по взлому Версия для печати
Только для образовательных целей!
Автор:FEUERRADER [AHTeam]
Уровень:Для начинающих
Программа:FirePanel XP 1.5.7.0
Тип защиты:Имя/код
Инструменты:Lutz Roeder's .NET Reflector 4.1.29.0, Microsoft Visual Studio .NET 2003

Исследование программ, написанных для новой платформы .NET оказывается очень легким делом. Не берусь сказать, что всегда это будет легким и простым, но сейчас скажу, т.к. без особого труда можно написать кейген для такой реальной программы как FirePanel XP, которая написана на Basic .NET.

Суем ее в декомпилятор Reflector. Одной из особенностей его является то, что он может показывать декомпилированный код на языках IL, Basic, Delphi, C#. Так как программа написана на Basic, то и кейген будет на нем же, чтобы просто выдрать генерирующую код процедуру. Следует внимательно изучить дерево объектов в объекте FirePanel XP. Т.к. неизвестно в какой именно процедуре происходит проверка кода, мне пришлось проверять их все по порядку. Очень скоро попадается функция Info().

Private Sub info()
...
Dim text2 As String = Interaction.InputBox("Please input registered name here:", "", "", -1, -1)
If (StringType.StrCmp(text2, "", False) = 0) Then
Me.override = True
Me.Close
End If
Dim text1 As String = Interaction.InputBox("Please input key here:", "", "", -1, -1)
If (StringType.StrCmp(text1, "", False) = 0) Then
Me.override = True
Me.Close
End If
If (StringType.StrCmp(Me.kc(text2, 100, 200, 300, 400), text1, False) = 0) Then
Interaction.MsgBox("Thank You For Your Support", MsgBoxStyle.OKOnly, Nothing)
Me.ln.Text = text2
Me.ln2.Text = text1
Dim key1 As RegistryKey = Registry.LocalMachine.CreateSubKey("SOFTWARE\FirePanel XP")
key1.SetValue("username", text2)
key1.SetValue("key", text1)
Me.btnr.Visible = False
Else
Interaction.MsgBox("Your serial is invalid", MsgBoxStyle.OKOnly, Nothing)
Me.override = True
Me.Close
End If
...
End Sub

Сразу видно, что введенный код проверяется с верным значением функцией StrCmp(). А сам ключ возвращается функцией kc() уже готовенький и при этом как строка. Как кстати! Смотрим kc():

Public Function kc(ByVal username As String, ByVal var1 As Object, ===>
===> ByVal var2 As Object, ByVal var3 As Object, ByVal var4 As Object) As String

Dim obj5 As Object = Strings.Asc(username.Substring(0, 1))
Dim obj6 As Object = Strings.Asc(username.Substring((username.Length - 1), 1))
Dim obj7 As Object = Strings.Asc(username.Substring(0, CType(Math.Round ===>
===> (CType((CType(username.Length,Double) / 2),Double)),Integer)))

Dim obj8 As Object = Strings.Asc(username.Substring(CType(Math.Round ===>
===> (CType((CType(username.Length,Double) / 2),Double)),Integer)))

Dim obj1 As Object = Conversion.Hex(ObjectType.AddObj(ObjectType.MulObj(obj5, obj6), ObjectType.MulObj ===>
===> (ObjectType.MulObj(ObjectType.AddObj(obj7, obj8), var1), 100))).Substring(1, 5)

Dim obj2 As Object = Conversion.Hex(ObjectType.AddObj(ObjectType.MulObj(obj6, obj8), ObjectType.MulObj ===>
===> (ObjectType.MulObj(ObjectType.AddObj(obj5, obj6), var2), 100))).Substring(0, 5)

Dim obj3 As Object = Conversion.Hex(ObjectType.AddObj(ObjectType.MulObj(obj5, obj7), ObjectType.MulObj ===>
===> (ObjectType.MulObj(ObjectType.AddObj(obj6, obj8), var3), 100))).Substring(1, 5)

Dim obj4 As Object = Conversion.Hex(ObjectType.AddObj(ObjectType.MulObj(obj6, obj8), ObjectType.MulObj ===>
===> (ObjectType.MulObj(ObjectType.AddObj(obj7, obj5), var4), 100))).Substring(0, 5)

Return StringType.FromObject(ObjectType.AddObj(ObjectType.AddObj(ObjectType.AddObj(ObjectType.AddObj ===>
===> (ObjectType.AddObj(ObjectType.AddObj(obj1, "-"), obj2), "-"), obj3), "-"), obj4))

End Function

В принципе это готовая функция, которую осталось только скопировать в кейген. Т.к. я не знаю Basic абсолютно, то и разбираться, как же генерируется код мне было лень.

Создаем в Visual Studio новый солюшен как Basic -> Windows Application. Вставляем на форму кнопку и на событие нажатия делаем вызов функции. Типа такого:

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ===>
===> ByVal e As System.EventArgs) Handles TextBox1.TextChanged

MessageBox.Show(kc("my name here", 100, 200, 300, 400), ===>
===> "my key",MessageBoxButtons.OK)
End Sub

А выше вставляем выдранную функцию kc(). В принципе всё... Если пробовать компилировать то выйдет ошибка "Name 'ObjectType' is not declared". Покопавшись в MSDN, удается узнать, что ObjectType нужно указывать как CompilerServices.ObjectType. Таким образом везде где будет ругаться, то добавляем CompilerServices.

Если всё сделать правильно, то получите код для программы :) Но разве это цель была?

Автор: FEUERRADER [AHTeam]
Jan 2005

<< Все статьи по взлому Версия для печати
Комментарии читателей к статье "Кейген для реальной программы, написанной на Basic .NET":

21.01.2010 20:34
Статья хороша,для познания.Вот только как туда мелодию засунуть?

27.07.2007 13:08
Мне, как молодому программисту (3-ий курс колледжа) такое пригодится... Оьщие развитие, как было сказано выше...

04.11.2006 11:27
Хорошая статейка. Для общего развития интересно почитать. =)
Добавить свой комментарий:
Ваше имя: Текст сообщения:
Ваш E-Mail:
Введите код:   

ALIEN Hack Team - © 2003-2017
Лицензионное соглашение