初学解密,某个商业软件,使用delphi编程,软件检测硬件生成机器码,输入假序列号点OK,无任何提示,退出后重新运行,软件对比注册信息,如系列号正确,OK按键才变虚。我暴破已经成功,想了解具体加密的方法,找出系列号,望各位大侠指点:
软件检测硬件生成机器码:IFHZZkQ5d45M
(硬件检测后先生成9个阿拉伯数字:131599821
先转换成12位的IFHZZkQ5d45M,(显示的机器码)再转换生成wwpPog1xzjaQ2TRk写入注册表default2,
我输入假系列号是8个英文字母,转换生成OIeXqgMKabM,写入注册表default3
注册表的信息:
default1=LVs9VKtkKHwc+D
default2=wwpPog1xzjaQ2TRk
default3=OIeXqgMKabM
请问如何识别算法?
代码如下:
004D5974 /$ 55 PUSH EBP
004D5975 |. 8BEC MOV EBP,ESP
004D5977 |. 33C9 XOR ECX,ECX
004D5979 |. 51 PUSH ECX
004D597A |. 51 PUSH ECX
004D597B |. 51 PUSH ECX
004D597C |. 51 PUSH ECX
004D597D |. 51 PUSH ECX
004D597E |. 51 PUSH ECX
004D597F |. 53 PUSH EBX
004D5980 |. 56 PUSH ESI
004D5981 |. 8BF0 MOV ESI,EAX
004D5983 |. 33C0 XOR EAX,EAX ; eax=0
004D5985 |. 55 PUSH EBP
004D5986 |. 68 505B4D00 PUSH Unpacked.004D5B50
004D598B |. 64:FF30 PUSH DWORD PTR FS:[EAX]
004D598E |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
004D5991 |. 8BCE MOV ECX,ESI ; ESI=0012FA28
004D5993 |. 66:BA 7D79 MOV DX,797D ; EDX=dceb38为机器码的注册表值的地址,将DX=797d地址
004D5997 |. B8 685B4D00 MOV EAX,Unpacked.004D5B68 ; eax=4d5b68="U4Ea4B"
004D599C |. E8 EBF4FFFF CALL Unpacked.004D4E8C ; F7
004D59A1 |. 6A 00 PUSH 0
004D59A3 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
004D59A6 |. 50 PUSH EAX
004D59A7 |. B9 785B4D00 MOV ECX,Unpacked.004D5B78 ; ASCII "default2"
004D59AC |. BA 8C5B4D00 MOV EDX,Unpacked.004D5B8C
004D59B1 |. B0 01 MOV AL,1
004D59B3 |. E8 04FEFFFF CALL Unpacked.004D57BC ; 装入机器码转换表值
004D59B8 |. 837D FC 00 CMP DWORD PTR SS:[EBP-4],0 ; 比较wwpPog1xzjaQ2TRk
004D59BC |. 0F84 73010000 JE Unpacked.004D5B35
004D59C2 |. 6A 00 PUSH 0
004D59C4 |. 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]
004D59C7 |. 50 PUSH EAX
004D59C8 |. B9 985B4D00 MOV ECX,Unpacked.004D5B98 ; ASCII "default3"
004D59CD |. BA 8C5B4D00 MOV EDX,Unpacked.004D5B8C
004D59D2 |. B0 01 MOV AL,1 ; eax=12fc8
004D59D4 |. E8 E3FDFFFF CALL Unpacked.004D57BC ; 装入wangfeng的转换表值
004D59D9 |. 837D F8 00 CMP DWORD PTR SS:[EBP-8],0 ; [0012F9C8]=00DCEBAC, (ASCII "OIeXqgMKabM")
004D59DD |. 0F84 52010000 JE Unpacked.004D5B35 ; 跳转没有实现
004D59E3 |. 8D4D F4 LEA ECX,DWORD PTR SS:[EBP-C] ; 堆栈地址=0012F9C4
004D59E6 |. 66:BA 7D79 MOV DX,797D ; dx=797d
004D59EA |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; [0012F9CC]=00DCEB8C, (ASCII "wwpPog1xzjaQ2TRk")
004D59ED |. E8 9AF4FFFF CALL Unpacked.004D4E8C :见下call
004D59F2 |. 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C] ; [0012F9C4]=00DCEC08, (ASCII "IFHZZkQ5d45M")
004D59F5 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] ; 堆栈地址=0012F9CC
004D59F8 |. E8 23E4F2FF CALL Unpacked.00403E20
004D59FD |. 8D4D F0 LEA ECX,DWORD PTR SS:[EBP-10] ; 堆栈地址=0012F9C0
004D5A00 |. 66:BA 7D79 MOV DX,797D ; DX=F9A4
004D5A04 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; [0012F9CC]=00DCEC08, (ASCII "IFHZZkQ5d45M")
004D5A07 |. E8 80F4FFFF CALL Unpacked.004D4E8C
004D5A0C |. 8B55 F0 MOV EDX,DWORD PTR SS:[EBP-10] ; [0012F9C0]=00DCEC7C, (ASCII "131599821")
004D5A0F |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] ; 堆栈地址=0012F9CC
004D5A12 |. E8 09E4F2FF CALL Unpacked.00403E20
004D5A17 |. 8D4D EC LEA ECX,DWORD PTR SS:[EBP-14] ; ECX=0012F9BC
004D5A1A |. 66:BA 1979 MOV DX,7919 ; DX=EC08
004D5A1E |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] ; [0012F9C8]=00DCEBAC, (ASCII "OIeXqgMKabM")
004D5A21 |. E8 66F4FFFF CALL Unpacked.004D4E8C
004D5A26 |. 8B55 EC MOV EDX,DWORD PTR SS:[EBP-14] ; [0012F9BC]=00DCECC0, (ASCII "我输入的8个英文字母的假序列号")
004D5A29 |. 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8] ; 堆栈地址=0012f9c8
004D5A2C |. E8 EFE3F2FF CALL Unpacked.00403E20
004D5A31 |. 8D4D E8 LEA ECX,DWORD PTR SS:[EBP-18] ; 堆栈地址=0012F9B8
004D5A34 |. 66:BA 1979 MOV DX,7919 ; DX=7919,EDX=00127919
004D5A38 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] ; [0012F9C8]=00DCECC0, (ASCII 我输入的8个英文字母的假序列号)
004D5A3B |. E8 4CF4FFFF CALL Unpacked.004D4E8C
004D5A40 |. 8B55 E8 MOV EDX,DWORD PTR SS:[EBP-18] ; edx=Stack SS:[0012F9B8]=00DCECD8
004D5A43 |. 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8] ; 堆栈地址=0012F9C8
004D5A46 |. E8 D5E3F2FF CALL Unpacked.00403E20
004D5A4B |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; [0012F9CC]=00DCEC7C, (ASCII "131599821")
004D5A4E |. 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8] ; Stack SS:[0012F9C8]=00DCECD8
004D5A51 |. E8 C2E6F2FF CALL Unpacked.00404118 ; cmp cl,bl
004D5A56 |. 0F94C3 SETE BL ; 根据比较结果设置bL的值 应为TRUE 即:01
004D5A59 |. 84DB TEST BL,BL ; BL=00
004D5A5B |. 74 10 JE SHORT Unpacked.004D5A6D ; 跳转已经实现
004D5A5D |. 8BCE MOV ECX,ESI
004D5A5F |. 66:BA 7D79 MOV DX,797D
004D5A63 |. B8 AC5B4D00 MOV EAX,Unpacked.004D5BAC ; ASCII "AEWgaC"
004D5A68 |. E8 1FF4FFFF CALL Unpacked.004D4E8C
004D5A6D |> 8BCE MOV ECX,ESI ; ESI=0012FA28
004D5A6F |. 66:BA 7D79 MOV DX,797D ; DX=0006
004D5A73 |. B8 685B4D00 MOV EAX,Unpacked.004D5B68 ; 004D5B68=Unpacked.004D5B68 (ASCII "U4Ea4B")
004D5A78 |. E8 0FF4FFFF CALL Unpacked.004D4E8C
004D5A7D |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; [0012F9CC]=00DCEC7C, (ASCII "131599821")
004D5A80 |. 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8] ; Stack SS:[0012F9C8]=00DCECD8
004D5A83 |. E8 90E6F2FF CALL Unpacked.00404118
004D5A88 |. 0F94C0 SETE AL ; 条件为假 FALSE
004D5A8B |. 84DB TEST BL,BL ; BL=00
004D5A8D |. 74 10 JE SHORT Unpacked.004D5A9F ; 跳转已经实现
004D5A8F |. 8BCE MOV ECX,ESI
004D5A91 |. 66:BA 7D79 MOV DX,797D
004D5A95 |. B8 AC5B4D00 MOV EAX,Unpacked.004D5BAC ; ASCII "AEWgaC"
004D5A9A |. E8 EDF3FFFF CALL Unpacked.004D4E8C
004D5A9F |> 8BCE MOV ECX,ESI ; ESI=0012FA28
004D5AA1 |. 66:BA 7D79 MOV DX,797D ; DX=0006
004D5AA5 |. B8 685B4D00 MOV EAX,Unpacked.004D5B68 ; 004D5B68=Unpacked.004D5B68 (ASCII "U4Ea4B")
004D5AAA |. E8 DDF3FFFF CALL Unpacked.004D4E8C
004D5AAF |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; Stack SS:[0012F9CC]=00DCEC7C, (ASCII "131599821")
004D5AB2 |. 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8] ; Stack SS:[0012F9C8]=00DCECD8
004D5AB5 |. E8 5EE6F2FF CALL Unpacked.00404118
004D5ABA |. 0F94C0 SETE AL ; 条件为假 FALSE
004D5ABD |. 84DB TEST BL,BL ; BL=00
004D5ABF |. 74 10 JE SHORT Unpacked.004D5AD1 ; 跳转已经实现
004D5AC1 |. 8BCE MOV ECX,ESI
004D5AC3 |. 66:BA 7D79 MOV DX,797D
004D5AC7 |. B8 AC5B4D00 MOV EAX,Unpacked.004D5BAC ; ASCII "AEWgaC"
004D5ACC |. E8 BBF3FFFF CALL Unpacked.004D4E8C
004D5AD1 |> 8BCE MOV ECX,ESI ; ESI=0012FA28
004D5AD3 |. 66:BA 7D79 MOV DX,797D ; DX=0006
004D5AD7 |. B8 685B4D00 MOV EAX,Unpacked.004D5B68 ; 004D5B68=Unpacked.004D5B68 (ASCII "U4Ea4B")
004D5ADC |. E8 ABF3FFFF CALL Unpacked.004D4E8C
004D5AE1 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; Stack SS:[0012F9CC]=00DCEC7C, (ASCII "131599821")
004D5AE4 |. 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8] ; Stack SS:[0012F9C8]=00DCECD8
004D5AE7 |. E8 2CE6F2FF CALL Unpacked.00404118
004D5AEC |. 0F94C0 SETE AL ; 条件为假 FALSE
004D5AEF |. 84DB TEST BL,BL ; BL=00
004D5AF1 |. 74 10 JE SHORT Unpacked.004D5B03 ; 跳转已经实现
004D5AF3 |. 8BCE MOV ECX,ESI
004D5AF5 |. 66:BA 7D79 MOV DX,797D
004D5AF9 |. B8 AC5B4D00 MOV EAX,Unpacked.004D5BAC ; ASCII "AEWgaC"
004D5AFE |. E8 89F3FFFF CALL Unpacked.004D4E8C
004D5B03 |> 8BCE MOV ECX,ESI ; ESI=0012FA28
004D5B05 |. 66:BA 7D79 MOV DX,797D ; DX=0006
004D5B09 |. B8 685B4D00 MOV EAX,Unpacked.004D5B68 ; 004D5B68=Unpacked.004D5B68 (ASCII "U4Ea4B")
004D5B0E |. E8 79F3FFFF CALL Unpacked.004D4E8C
004D5B13 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; Stack SS:[0012F9CC]=00DCEC7C, (ASCII "131599821")
004D5B16 |. 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8] ; Stack SS:[0012F9C8]=00DCECD8
004D5B19 |. E8 FAE5F2FF CALL Unpacked.00404118
004D5B1E |. 0F94C0 SETE AL ; 条件为假 FALSE
004D5B21 |. 84DB TEST BL,BL ; BL=00
004D5B23 |. 74 10 JE SHORT Unpacked.004D5B35 ; 跳转已经实现
004D5B25 |. 8BCE MOV ECX,ESI
004D5B27 |. 66:BA 7D79 MOV DX,797D
004D5B2B |. B8 AC5B4D00 MOV EAX,Unpacked.004D5BAC ; ASCII "AEWgaC"
004D5B30 |. E8 57F3FFFF CALL Unpacked.004D4E8C
004D5B35 |> 33C0 XOR EAX,EAX ; EAX=00000000
004D5B37 |. 5A POP EDX
004D5B38 |. 59 POP ECX
004D5B39 |. 59 POP ECX
004D5B3A |. 64:8910 MOV DWORD PTR FS:[EAX],EDX ; EDX=0012F9D8
004D5B3D |. 68 575B4D00 PUSH Unpacked.004D5B57
004D5B42 |> 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18] ; 堆栈地址=0012F9B8
004D5B45 |. BA 06000000 MOV EDX,6 ; EDX=0012F9D8
004D5B4A |. E8 5DE2F2FF CALL Unpacked.00403DAC
004D5B4F \. C3 RETN
004D5B50 .^ E9 CBDCF2FF JMP Unpacked.00403820
004D5B55 .^ EB EB JMP SHORT Unpacked.004D5B42
004D5B57 . 5E POP ESI
004D5B58 . 5B POP EBX
004D5B59 . 8BE5 MOV ESP,EBP
004D5B5B . 5D POP EBP
004D5B5C . C3 RETN
004D59EA |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; [0012F9CC]=00DCEB8C, (ASCII "wwpPog1xzjaQ2TRk")
004D4E8C
004D4E8C /$ 55 PUSH EBP ; EBP=0012F9D0
004D4E8D |. 8BEC MOV EBP,ESP ; ESP=0012F99C
004D4E8F |. 6A 00 PUSH 0
004D4E91 |. 53 PUSH EBX ; EBX=07D80DCD
004D4E92 |. 56 PUSH ESI ; ESI=0012FA28
004D4E93 |. 57 PUSH EDI
004D4E94 |. 8BF9 MOV EDI,ECX
004D4E96 |. 8BF2 MOV ESI,EDX ; EDX=0000797D
004D4E98 |. 8BD8 MOV EBX,EAX ; EAX=00DCEB8C, (ASCII "wwpPog1xzjaQ2TRk")
004D4E9A |. 33C0 XOR EAX,EAX ; EAX=0
004D4E9C |. 55 PUSH EBP ; EBP=0012F99C
004D4E9D |. 68 D44E4D00 PUSH Unpacked.004D4ED4 ; 004D4ED4=Unpacked.004D4ED4
004D4EA2 |. 64:FF30 PUSH DWORD PTR FS:[EAX] ; FS:[00000000]=[7FFDE000]=0012F9A4
004D4EA5 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP ; ESP=0012F980
004D4EA8 |. 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4] ; 堆栈地址=0012F998
004D4EAB |. 8BC3 MOV EAX,EBX ; EBX=00DCEB8C, (ASCII "wwpPog1xzjaQ2TRk")
004D4EAD |. E8 CAFEFFFF CALL Unpacked.004D4D7C
004D4EB2 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; Stack SS:[0012F998]=00DCEBEC
004D4EB5 |. 8BCF MOV ECX,EDI ; EDI=0012F9C4
004D4EB7 |. 8BD6 MOV EDX,ESI ; ESI=0000797D
004D4EB9 |. E8 5AFFFFFF CALL Unpacked.004D4E18
004D4EBE |. 33C0 XOR EAX,EAX ; EAX=000051B0
004D4EC0 |. 5A POP EDX ; Stack [0012F980]=0012F9A4 (0012F9A4)
004D4EC1 |. 59 POP ECX ; Stack [0012F984]=004D4ED4 (Unpacked.004D4ED4)
004D4EC2 |. 59 POP ECX ; Stack [0012F988]=0012F99C (0012F99C)
004D4EC3 |. 64:8910 MOV DWORD PTR FS:[EAX],EDX ; EDX=0012F9A4
004D4EC6 |. 68 DB4E4D00 PUSH Unpacked.004D4EDB
004D4ECB |> 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] ; 堆栈地址=0012F998
004D4ECE |. E8 B5EEF2FF CALL Unpacked.00403D88
004D4ED3 \. C3 RETN ; 返回到 004D4EDB (Unpacked.004D4EDB)
004D4EDB . 5F POP EDI ; Stack [0012F98C]=004E4164 (Unpacked.004E4164)
004D4EDC . 5E POP ESI ; Stack [0012F990]=0012FA28 (0012FA28)
004D4EDD . 5B POP EBX ; Stack [0012F994]=07D80DCD
004D4EDE . 59 POP ECX ; Stack [0012F998]=00000000
004D4EDF . 5D POP EBP ; Stack [0012F99C]=0012F9D0 (0012F9D0)
004D4EE0 . C3 RETN ; 返回到 004D59F2 (Unpacked.004D59F2)
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)