estoy intentando realizar un keygen o un crack para un programa, el programa en si es una xorrada pero si no esta registrado no va el resto que es lo importante, (que mal me explico)
empezare por el principio
abrimos el programa y este genera un unico codigo por maquina, deforma que tienes que enviar un correo con el codigo para que te den el codigo de activacion que se guarda en un archivo reg. el archico reg solo contiene el numero...
bien llego a mi casa con el porgrama lo copio porque no hace falta instalacion, y al ejecutar como mi maquina es distinta a la "original" no me vale el codigo
bien asi que digo bueno...vamos a abrir las correspondientes partes que tiene el programa por separado aver si me deja ejecutarlo, son varios Excel que al abrirlos primero te dice ejecutalos desde el principal si le dices que no te los abres pero las formulas las borra, bien tras abrir los excel (una copia de ellos) con un editor hex, y cambiar el DPB por DPX y leugo en el visual basic de la excel he podido ver el codigo de algunas cosas y una de ellas lo que hace es poner en algunas columnas 0 para que no funcionen las cosas,
asi que decido borrarlas pero no sigue sin ir eso si ya no me salta el mensaje de necesitas este programa
bien que mas tiene este programa incluye dos ejecutables mas que tb se lanzan desde el principal, que son dos Flash pero empaquetados como EXE, uno de ellos puede correr sin problmas el oro me salta y me dice que no que lo ejecute desde el princpal
bien asi que lo que he intentando es con el OLLYdbg era buscar el bucle de bueno y malo como he visto en algunos tutoriales y bueno creo que lo e encotrado pero sigo sin saber como acer para que funcione le quito los je les pongo jne pero no acierto....
os pongo una imagen de lo que aparece en el visual basic de la excel y otra del ollydbg
lo que hay en el Visual basic del excel :
Option Explicit
Const margensegundos = 40
Private Function acceso()
Dim objFs, objfile, resul, cadena, rutafile, ArrL
Dim i, cur, modulo, valido, curadd
Dim ahora, ahorac
ArrL = Array("FGYTXH8NZQR", "AFJKERMDSOP", "JLYTHIRWDGZ", "AFJKERMDSOP", "YWUAHSTDRZN", "POAISBCYEQD", "JGHAI7YZSOK", "PQLUCJANKZ9", "OAUWTGJCUBH")
resul = False
rutafile = ThisWorkbook.Path & "\include.lib"
rutafile = Replace(rutafile, "\HE4_termica\include.lib", "\include.lib", 1, 1)
rutafile = Replace(rutafile, "\HE5_fotovoltaica\include.lib", "\include.lib", 1, 1)
Set objFs = CreateObject("Scripting.FileSystemObject")
If (objFs.FileExists(rutafile)) Then
Set objfile = objFs.OpenTextFile(rutafile, 1, False)
cadena = objfile.Read(20)
If (Len(cadena) > 19) Then
valido = ""
For i = 1 To 19
cur = Mid(cadena, i, 1)
modulo = i Mod 9
curadd = InStr(ArrL(modulo), cur) - 1
If (curadd > -1) Then valido = curadd & valido
Next i
If (Len(valido) > 18) Then
valido = Mid(valido, 4, 14)
ahora = Now
ahorac = TimeSerial(Mid(valido, 9, 2), Mid(valido, 11, 2), Mid(valido, 13, 2)) + DateSerial(Mid(valido, 1, 4), Mid(valido, 5, 2), Mid(valido, 7, 2))
If (DateDiff("s", ahorac, ahora) < margensegundos) Then
resul = True
End If
End If
End If
objfile.Close
Set objfile = Nothing
End If
Set objFs = Nothing
acceso = resul
End Function
Private Sub Workbook_BeforeClose(Cancel As Boolean)
' Poner a 0
Dim Counter, curCell
Set curCell = Worksheets("Potencia Pico").Cells(26, 3)
curCell.Value = 0
For Counter = 1 To 12
'fila,columna
Set curCell = Worksheets("Energia producida").Cells(34 + Counter, 2)
curCell.Value = 0
Next Counter
For Counter = 1 To 12
'fila,columna
Set curCell = Worksheets("Datos de usuario").Cells(76 + Counter, 7)
curCell.Value = 0
Next Counter
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
' Poner a 0
Dim Counter, curCell
Set curCell = Worksheets("Potencia Pico").Cells(26, 3)
curCell.Value = 0
For Counter = 1 To 12
'fila,columna
Set curCell = Worksheets("Energia producida").Cells(34 + Counter, 2)
curCell.Value = 0
Next Counter
For Counter = 1 To 12
'fila,columna
Set curCell = Worksheets("Datos de usuario").Cells(76 + Counter, 7)
curCell.Value = 0
Next Counter
End Sub
Private Sub Workbook_Open()
' Poner a 0
Dim Counter, curCell
Set curCell = Worksheets("Potencia Pico").Cells(26, 3)
curCell.Value = 0
For Counter = 1 To 12
'fila,columna
Set curCell = Worksheets("Energia producida").Cells(34 + Counter, 2)
curCell.Value = 0
Next Counter
For Counter = 1 To 12
'fila,columna
Set curCell = Worksheets("Datos de usuario").Cells(76 + Counter, 7)
curCell.Value = 0
Next Counter
'Poner a 0
If (acceso()) Then
Set curCell = Worksheets("Potencia Pico").Cells(26, 3)
curCell.Value = 1
For Counter = 1 To 12
'fila,columna
Set curCell = Worksheets("Energia producida").Cells(34 + Counter, 2)
curCell.Value = 1
Next Counter
For Counter = 1 To 12
'fila,columna
Set curCell = Worksheets("Datos de usuario").Cells(76 + Counter, 7)
curCell.Value = 1
Next Counter
Else
' ha fallado la validación
MsgBox ("Utilice el programa de arranque para acceder a esta aplicación")
ThisWorkbook.Close
End If
End Sub
lo que hay en el ollydbg
00460228 /$ 55 PUSH EBP
00460229 |. 8BEC MOV EBP,ESP
0046022B |. 83C4 D0 ADD ESP,-30
0046022E |. 53 PUSH EBX
0046022F |. 56 PUSH ESI
00460230 |. 57 PUSH EDI
00460231 |. 33D2 XOR EDX,EDX
00460233 |. 8955 D0 MOV DWORD PTR SS:[EBP-30],EDX
00460236 |. 8955 D4 MOV DWORD PTR SS:[EBP-2C],EDX
00460239 |. 8955 DC MOV DWORD PTR SS:[EBP-24],EDX
0046023C |. 8955 D8 MOV DWORD PTR SS:[EBP-28],EDX
0046023F |. 8955 F4 MOV DWORD PTR SS:[EBP-C],EDX
00460242 |. 8955 F0 MOV DWORD PTR SS:[EBP-10],EDX
00460245 |. 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
00460248 |. 33C0 XOR EAX,EAX
0046024A |. 55 PUSH EBP
0046024B |. 68 DC034600 PUSH ctesolar.004603DC
00460250 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
00460253 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
00460256 |. B8 EC034600 MOV EAX,ctesolar.004603EC ; ASCII "0123456789"
0046025B |. 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0046025E |. B8 F8034600 MOV EAX,ctesolar.004603F8 ; ASCII "FGYTXH8NZQR"
00460263 |. 8945 E0 MOV DWORD PTR SS:[EBP-20],EAX
00460266 |. B8 04044600 MOV EAX,ctesolar.00460404 ; ASCII "AFJKERMDSOP"
0046026B |. 8945 E4 MOV DWORD PTR SS:[EBP-1C],EAX
0046026E |. B8 10044600 MOV EAX,ctesolar.00460410 ; ASCII "JLYTHIRWDGZ"
00460273 |. 8945 E8 MOV DWORD PTR SS:[EBP-18],EAX
00460276 |. 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
00460279 |. A1 6C384600 MOV EAX,DWORD PTR DS:[46386C]
0046027E |. 8B80 DC020000 MOV EAX,DWORD PTR DS:[EAX+2DC]
00460284 |. E8 9F9EFCFF CALL ctesolar.0042A128
00460289 |. 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
0046028C |. E8 C736FAFF CALL ctesolar.00403958
00460291 |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
00460294 |. E8 3F39FAFF CALL ctesolar.00403BD8
00460299 |. 8BF0 MOV ESI,EAX
0046029B |. 83FE 07 CMP ESI,7
0046029E |. 7E 0F JLE SHORT ctesolar.004602AF
004602A0 |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
004602A3 |. 8BCE MOV ECX,ESI
004602A5 |. BA 09000000 MOV EDX,9
004602AA |. E8 713BFAFF CALL ctesolar.00403E20
004602AF |> 83FE 05 CMP ESI,5
004602B2 |. 7E 66 JLE SHORT ctesolar.0046031A
004602B4 |. BB 01000000 MOV EBX,1
004602B9 |> 8D45 DC /LEA EAX,DWORD PTR SS:[EBP-24]
004602BC |. BA 08000000 |MOV EDX,8
004602C1 |. 2BD3 |SUB EDX,EBX
004602C3 |. 8B4D F4 |MOV ECX,DWORD PTR SS:[EBP-C]
004602C6 |. 8A1411 |MOV DL,BYTE PTR DS:[ECX+EDX]
004602C9 |. E8 3238FAFF |CALL ctesolar.00403B00
004602CE |. 8B45 DC |MOV EAX,DWORD PTR SS:[EBP-24]
004602D1 |. 50 |PUSH EAX
004602D2 |. 8D45 D8 |LEA EAX,DWORD PTR SS:[EBP-28]
004602D5 |. 8B55 F8 |MOV EDX,DWORD PTR SS:[EBP-8]
004602D8 |. E8 3338FAFF |CALL ctesolar.00403B10
004602DD |. 8B55 D8 |MOV EDX,DWORD PTR SS:[EBP-28]
004602E0 |. 58 |POP EAX
004602E1 |. E8 DE3BFAFF |CALL ctesolar.00403EC4
004602E6 |. 8BF8 |MOV EDI,EAX
004602E8 |. 8BC3 |MOV EAX,EBX
004602EA |. B9 03000000 |MOV ECX,3
004602EF |. 99 |CDQ
004602F0 |. F7F9 |IDIV ECX
004602F2 |. 8955 EC |MOV DWORD PTR SS:[EBP-14],EDX
004602F5 |. 8D45 D4 |LEA EAX,DWORD PTR SS:[EBP-2C]
004602F8 |. 8B55 EC |MOV EDX,DWORD PTR SS:[EBP-14]
004602FB |. 8B5495 E0 |MOV EDX,DWORD PTR SS:[EBP+EDX*4-20]
004602FF |. 8A143A |MOV DL,BYTE PTR DS:[EDX+EDI]
00460302 |. E8 F937FAFF |CALL ctesolar.00403B00
00460307 |. 8B55 D4 |MOV EDX,DWORD PTR SS:[EBP-2C]
0046030A |. 8D45 F0 |LEA EAX,DWORD PTR SS:[EBP-10]
0046030D |. E8 CE38FAFF |CALL ctesolar.00403BE0
00460312 |. 43 |INC EBX
00460313 |. 83FB 09 |CMP EBX,9
00460316 |.^75 A1 \JNZ SHORT ctesolar.004602B9
00460318 |. EB 10 JMP SHORT ctesolar.0046032A
0046031A |> 837D FC 01 CMP DWORD PTR SS:[EBP-4],1
0046031E |. 75 0A JNZ SHORT ctesolar.0046032A
00460320 |. B8 24044600 MOV EAX,ctesolar.00460424
00460325 |. E8 E2B2FEFF CALL ctesolar.0044B60C
0046032A |> 8D55 D0 LEA EDX,DWORD PTR SS:[EBP-30]
0046032D |. A1 6C384600 MOV EAX,DWORD PTR DS:[46386C]
00460332 |. 8B80 EC020000 MOV EAX,DWORD PTR DS:[EAX+2EC]
00460338 |. E8 EB9DFCFF CALL ctesolar.0042A128
0046033D |. 8B45 D0 MOV EAX,DWORD PTR SS:[EBP-30]
00460340 |. 8B55 F0 MOV EDX,DWORD PTR SS:[EBP-10]
00460343 |. E8 A039FAFF CALL ctesolar.00403CE8
00460348 |. 75 36 JNZ SHORT ctesolar.00460380
0046034A |. 83FE 06 CMP ESI,6
0046034D |. 7E 31 JLE SHORT ctesolar.00460380
0046034F |. 837D FC 01 CMP DWORD PTR SS:[EBP-4],1
00460353 |. 75 0A JNZ SHORT ctesolar.0046035F
00460355 |. B8 4C044600 MOV EAX,ctesolar.0046044C ; ASCII "Gracias por registrar el producto"
0046035A |. E8 ADB2FEFF CALL ctesolar.0044B60C
0046035F |> 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10]
00460362 |. E8 29F8FFFF CALL ctesolar.0045FB90
00460367 |. E8 7CFDFFFF CALL ctesolar.004600E8
0046036C |. A1 6C384600 MOV EAX,DWORD PTR DS:[46386C]
00460371 |. 8B80 04030000 MOV EAX,DWORD PTR DS:[EAX+304]
00460377 |. 33D2 XOR EDX,EDX
00460379 |. E8 C29CFCFF CALL ctesolar.0042A040
0046037E |. EB 27 JMP SHORT ctesolar.004603A7
00460380 |> E8 03FEFFFF CALL ctesolar.00460188
00460385 |. 837D FC 01 CMP DWORD PTR SS:[EBP-4],1
00460389 |. 75 0A JNZ SHORT ctesolar.00460395
0046038B |. B8 78044600 MOV EAX,ctesolar.00460478
00460390 |. E8 77B2FEFF CALL ctesolar.0044B60C
00460395 |> A1 6C384600 MOV EAX,DWORD PTR DS:[46386C]
0046039A |. 8B80 04030000 MOV EAX,DWORD PTR DS:[EAX+304]
004603A0 |. B2 01 MOV DL,1
004603A2 |. E8 999CFCFF CALL ctesolar.0042A040
004603A7 |> BB 01000000 MOV EBX,1
004603AC |. 33C0 XOR EAX,EAX
004603AE |. 5A POP EDX
004603AF |. 59 POP ECX
004603B0 |. 59 POP ECX
004603B1 |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
004603B4 |. 68 E3034600 PUSH ctesolar.004603E3
004603B9 |> 8D45 D0 LEA EAX,DWORD PTR SS:[EBP-30]
004603BC |. E8 9735FAFF CALL ctesolar.00403958
004603C1 |. 8D45 D4 LEA EAX,DWORD PTR SS:[EBP-2C]
004603C4 |. BA 03000000 MOV EDX,3
004603C9 |. E8 AE35FAFF CALL ctesolar.0040397C
004603CE |. 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
004603D1 |. BA 02000000 MOV EDX,2
004603D6 |. E8 A135FAFF CALL ctesolar.0040397C
004603DB \. C3 RETN
004603DC .^E9 0F30FAFF JMP ctesolar.004033F0
004603E1 .^EB D6 JMP SHORT ctesolar.004603B9
004603E3 . 8BC3 MOV EAX,EBX
004603E5 . 5F POP EDI
004603E6 . 5E POP ESI
004603E7 . 5B POP EBX
004603E8 . 8BE5 MOV ESP,EBP
004603EA . 5D POP EBP
004603EB . C3 RETN
004603EC . 30 31 32 33 34>ASCII "0123456789",0
004603F7 00 DB 00
004603F8 . 46 47 59 54 58>ASCII "FGYTXH8NZQR",0
00460404 . 41 46 4A 4B 45>ASCII "AFJKERMDSOP",0
00460410 . 4A 4C 59 54 48>ASCII "JLYTHIRWDGZ",0
0046041C FF DB FF
si quereis trastear
[spoiler]https://mega.co.nz/#!wVI1WDJT!IUsilUsMf2ygyhLCaKviVidXdH0RJGoOp9Bih0aSSok
[/spoiler]
quizá te conviene generar el serial! básicamente lo que hace es:
espero ser claro!
1) tiene conjuntos establecidos
ArrL = Array("FGYTXH8NZQR", "AFJKERMDSOP", "JLYTHIRWDGZ", "AFJKERMDSOP", "YWUAHSTDRZN", "POAISBCYEQD", "JGHAI7YZSOK", "PQLUCJANKZ9", "OAUWTGJCUBH")
2) lee de una ruta establecida por la sentencia path una secuencia de 20 caracteres
3)compara que cadena leída tiene que tener más de 19 caracteres
4)toma cada caracter de la cadena
5)toma la ubicación del caracter dentro de la cadena y lo divide por 9 tomando el resto
6)Ahora busca la ubicación del caracter dentro del conjunto establecido por el resto
7)si la letra no esta en el conjunto devuelve un valor vacio, en caso contrario el lugar que ocupa en el conjunto
8)tiene que haber 19 lugares válidos
9)despues toma la fecha del sistema
10) y por último compara que la fecha actual y la cadena final de los lugares sea igual.
Ahora bien, sospecho que te falta otra cosa por que para que funcione tendría que cambiar la cadena cada día. O sea sino lo registras el mismo día que te envían el código de activación perdiste.
Como dijiste que el archivo reg solo contiene un número aparentemente ese número es lo que dije antes, pero eso no haría que funcione en cada máquina, si copias el archivo en cada máquina el mismo día y a la misma hora (la diferencia debe ser solo de segundos) te andaría.
Te recomiendo que leas las funciones mod mid instr y date de visual basic!
en cuanto a la imagen del olly esta incompleta pero, tenes que cambiar los saltos que eviten llegar a 00460355 lo cual solo quiere decir que aparezca el letrero de gracias por registar, no de que el soft sea funcional.
ok yo creia que podia hacer con el olly que se saltara esos pasos y se registrara veo que no :(
voy a probar eso que dices de las sumas y las restas
sobre lo de la clave de activacion, no secomo lo hace pero solo se que cambia con la maquina pero sobre esa maquina siempre es la misma, he probado a cambiar la fecha por el 2006 por ejemplo y me da el mismo numero activacion, limpie el registro, por cierto que es un valor numerico
esto es lo que me aparece en pantalla y esto es lo que hay dentro del archivo include.lib
(http://imageshack.us/a/img442/7637/capturarrw.png)
(http://imageshack.us/a/img444/6677/captura2tu.png)
bueno, si ese código de máquina y el de activación son correctos te diré que solo cumple con la función del orden dentro de los conjuntos, pero no cumple con el de que tenga + de 18 correctos (If (Len(valido) > 18)) pero tiene la fecha 23/03/2013 4 : 15 am, insisto que te estás pasando algo por alto, o sea te falta analizar algo.
otra cosa ¿probaste cambiar el código que te da tú maquina por el correcto? asi usas el mismo archivo de reg
el rdg packer me dice:
(http://img526.imageshack.us/img526/118/dibujoulh.jpg)
no consegui sacar las excel asi que vuelvo con el ejecutable directamente.
NO SE MUY BIEN COMO PERO HE CONSEGUIDO registrar el producto ahora loq ue quiero hacer es el keygen, tambien decir que el "archivo modificado del OLLYBDG" me decia que estaba registrado pero luego me tiraba error I/O 32, pero que abriendo otra copia en el mismo pc con el codigo descubierto en el Olly funciona!
ahra lo que tengo que ver es como va sumando restando para ver como se crea ;)
en el ordenador actual me pide como codigo de activacion
2901114637 y la clave descubierta es xxxxxxx
ahora subo un video del ollybdg
Video_1368710542.wmv (48.9 MB)
https://mega.co.nz/#!wAg2FR4R!c1BQ7DQDUDvnyMS0WqTyny0qGL9TZz6JkB6JODBsH0A
supongo que haciendo un programa que lea esa linea se podria hacer un keygen no?
;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-)
por lo menos ya se como registrarlo en cualquier maquina
(http://img40.imageshack.us/img40/9271/capturamr.PNG)
@ebercue: Felicitaciones por el logro! Ahora, por favor, quita el serial que haz puesto, pues este foro es sobre Ing. Inversa, no Cracks/Serialz/etc.
Espero comprendas...
Saludos!
si es quitar las fotos las quito
de todas formas este serial es solo para mi maquina para la tuya o la de cualquier otro no serviria ;) ya que este programa pide uno distinto para cada uno ;)
de todas formas si tengo que editar algo mas lo edito ;)