Cita de: kenosis en 12 Septiembre 2015, 19:17 PMSe que hay varias maneras de Crackearlo pero se me ocurrió que la más simple era cambiar en el método CheckRegistration().
El problema es que no logro modificar el codigo IL para que quede de la forma anterior, modifique las primeras instrucciones Il con el Reflexil de la siguiente manera pero no funciona:
No intentes modificar manualmente las instrucciones IL si no sabes hacerlo correctamente (yo tampoco se mucho), dices que estás utilizando .Net Reflector + el plugin Reflexil y tienes localizado la función validatoria, entonces con el mismo Reflexil puedes modificar el código del método a tu semejanza utilizando la sintaxis VB.Net o C# del byte-code, es decir, modificar las órdenes para dejarlo más o menos así:
Código (vbnet) [Seleccionar]
Public Function CheckRegistration() As RegistrationState
Me._isProLicense = True
Return RegistrationState.Registered
End Function
No es necesario más que eso, olvida el código IL.
Aquí tienes un tutorial que hice con imágenes sobre cómo usar la opción "Replace all with code", por si te sirve de algo, pero no creas que soy experto ni nada parecido en la ing. inversa, simplemente me defiendo en la técnica Reflection ya que desarrollo bajo la plataforma .Net y eso siempre ayuda a entender lo que haces al craquear un ensamblado .Net:
➢ [TUTORIAL] Craquear librería Nostalgia.Net (Reflection)
En el panel de Reflexil, lo configuras para usar la sintaxis de VB.Net, posteriormente seleccionas todas las instrucciones IL de la class PhotoPartyUpload.PhotoBoothUpload.Registration, presionas click derecho y seleccionas la opción "Replace all with code", seguidamente, reemplazas la class entera por el siguiente código modificado que te muestro aquí abajo, y compilas usando la misma versión del compiler de .NetFx que hayan usado originálmente al desarrollar la dll.
Debo mencionar que obviamente no puedo verificar que no sea necesario realizar más modificaciones de las que hice, o ignorar alguna modificación, pues aparte de que con la dll que subiste no es suficiente ya que faltan referencias a otras classes de otros ensamblados de la aplicación los cuales no has compartido, además de eso me ha sido imposible descargar el trial de la app para testearlo, ya que al parecer te piden la VISA y demás para un miserable trial, es de locos, así que si tienes problemas en compilar este código entonces envíame el instalador completo del tal PBU por mensaje privado y veré que puedo hacer, pero en principio esto te podría servir cómo solución final:
Código (vbnet) [Seleccionar]
Option Explicit On
Option Strict On
#Region " Imports "
Imports System
Imports System.Collections.Generic
Imports System.Text
#End Region
Namespace PhotoPartyUpload.PhotoBoothUpload.Registration
Class Registration
Function CheckRegistration() As PhotoPartyUpload.PhotoBoothUpload.Registration.RegistrationState
Return RegistrationState.Registered
End Function
#Region " Methods stubs "
Function get_LicenseData() As PhotoPartyUpload.PhotoBoothUpload.Registration.LicenseData
Return Nothing
End Function
Sub set_LicenseData(ByVal value As PhotoPartyUpload.PhotoBoothUpload.Registration.LicenseData)
End Sub
Function get_RemaningDaysTrial() As Integer
Return Integer.MaxValue
End Function
Function GetCurrentTime() As System.DateTime
Return DateTime.Now()
End Function
Function LoadLicenseData() As PhotoPartyUpload.PhotoBoothUpload.Registration.LicenseData
Return Nothing
End Function
Sub SaveLicenseData(ByVal regData As PhotoPartyUpload.PhotoBoothUpload.Registration.LicenseData)
End Sub
Function LoadRegistrationData() As PhotoPartyUpload.PhotoBoothUpload.Registration.RegistrationData
Return New RegistrationData
End Function
Sub SaveRegistrationData(ByVal regData As PhotoPartyUpload.PhotoBoothUpload.Registration.RegistrationData)
End Sub
Shared Function KeyGenerator(ByVal name As String, ByVal systemCode As String, ByVal expiryDate As System.DateTime, ByVal updatesExpiryDate As System.DateTime, ByVal isProVersion As Boolean) As String
Return String.Empty
End Function
Function DecodeLicense(ByVal name As String, ByVal systemCode As String, ByVal code As String) As PhotoPartyUpload.PhotoBoothUpload.Registration.LicenseData
Return Nothing
End Function
Sub SetCurrentTime(ByVal currentTime As System.DateTime)
End Sub
Function get_IsBasicLicense() As Boolean
Return False
End Function
Function get_IsDemoMode() As Boolean
Return False
End Function
Function get_IsProLicense() As Boolean
Return True
End Function
Function get_LicenseCode() As String
Return "2fa747e3-4604-46e5-9083-3d01aadb9499"
End Function
Shared Function GetSystemKey() As String
Return String.Empty
End Function
Shared Function GetSystemInfo() As String
Return String.Empty
End Function
Shared Function RunQuery(ByVal TableName As String, ByVal MethodName As String) As String
Return String.Empty
End Function
Sub New()
End Sub
Shared Sub New()
End Sub
#End Region
#Region " Fields stubs "
Dim Shared TrialDays As Integer = Integer.MaxValue
Dim Shared RegistrationSubKey As String = String.Empty
Dim Shared RegistrationSubKeyOld As String = String.Empty
Dim _registrationState As PhotoPartyUpload.PhotoBoothUpload.Registration.RegistrationState = RegistrationState.Registered
Dim _isProLicense As Boolean = True
Dim _licenseCode As String = "2fa747e3-4604-46e5-9083-3d01aadb9499"
Dim RegData As PhotoPartyUpload.PhotoBoothUpload.Registration.RegistrationData = New RegistrationData
Dim Shared RegistrationKey As String = "{76995B8C-ECAF-4A37-8AE7-D2CFD9B303A5}"
Dim Shared DataKey As String = "{C4D4B1C3-C9C9-4CFE-A70A-54358EE10109}"
Dim IsRegistrationDisabled As Boolean = False
' Dim <LicenseData>k__BackingField As PhotoPartyUpload.PhotoBoothUpload.Registration.LicenseData
#End Region
End Class
End Namespace
Saludos