(转A-new)天狼星第三代录像文件销售(注册)加密系统破解

应该是最新的吧,机器码是40位的
这里算法就不怎么分析了,有些太麻烦了,直接给出patch的地方

1.     00416EDB |> /0FBE39 |/movsx edi, byte ptr [ecx] ; 20位算法

2.     00416EDE |. |8BC7 ||mov eax, edi

3.     00416EE0 |. |BF 09000000 ||mov edi, 9

4.     00416EE5 |. |33C3 ||xor eax, ebx

5.     00416EE7 |. |43 ||inc ebx

6.     00416EE8 |. |99 ||cdq

7.     00416EE9 |. |F7FF ||idiv edi

8.     00416EEB |. |8BC2 ||mov eax, edx ; (Initial CPU selection)

9.     00416EED |. |8B55 B4 ||mov edx, dword ptr [ebp-4C]

10.  00416EF0 |. |83C0 30 ||add eax, 30

11.  00416EF3 |. |8802 ||mov byte ptr [edx], al

12.  00416EF5 |. |8801 ||mov byte ptr [ecx], al

13.  00416EF7 |. |8B45 0C ||mov eax, dword ptr [ebp+C]

14.  00416EFA |. |41 ||inc ecx

15.  00416EFB |. |C780 C4180000>||mov dword ptr [eax+18C4], 64

16.  00416F05 |. |8345 B4 03 ||add dword ptr [ebp-4C], 3

17.  00416F09 |. |83FB 14 ||cmp ebx, 14

18.  00416F0C |.^\7C CD |\jl short 00416EDB

复制代码

这个是通过硬盘序列号来计算出来的

本帖隐藏的内容

注意这两句

1.     00416EF3 |. |8802 ||mov byte ptr [edx], al

2.     00416EF5 |. |8801 ||mov byte ptr [ecx], al

复制代码

修改对应地方的数据
20-30
位机器码出现

1.     00404CDC |. 8B55 D4 mov edx, dword ptr [ebp-2C]

2.     00404CDF |. 52 push edx

3.     00404CE0 |. 8D8D D4FEFFFF lea ecx, dword ptr [ebp-12C]

4.     00404CE6 |. 51 push ecx

5.     00404CE7 |. E8 58E30200 call 00433044 ; 20-30

6.     00404CEC |. 66:C745 E8 08>mov word ptr [ebp-18], 8

7.     00404CF2 |. 83C4 08 add esp, 8

8.     00404CF5 |. 8D95 D4FEFFFF lea edx, dword ptr [ebp-12C]

9.     00404CFB |. 8D45 FC lea eax, dword ptr [ebp-4]

复制代码

其中中间有个,分三段计算出来 XXX XXXX XXXX,所以这里要循环3次,如下代码

1.     00497D01 |. 50 |push eax

2.     00497D02 |. 51 |push ecx

3.     00497D03 |. 8B55 C8 |mov edx, dword ptr [ebp-38]

4.     00497D06 |. 52 |push edx

5.     00497D07 |. 8B4D E8 |mov ecx, dword ptr [ebp-18]

6.     00497D0A |. 51 |push ecx

7.     00497D0B |. FF75 DC |push dword ptr [ebp-24]

8.     00497D0E |. FF75 D8 |push dword ptr [ebp-28]

9.     00497D11 |. E8 7A310000 |call 0049AE90 ; 重点,这里每次出现一次看寄存器进行修改

10.  00497D16 |. 83C4 18 |add esp, 18 ; 修改EAX里面的值

11.  00497D19 |> 837D F8 00 |cmp dword ptr [ebp-8], 0

12.  00497D1D |. 0F8C 19020000 |jl 00497F3C

13.  00497D23 |. 8B55 E8 |mov edx, dword ptr [ebp-18]

复制代码

接着换第31位机器码

1.     00404F0A > /0FBE08 movsx ecx, byte ptr [eax] ; 31

2.     00404F0D . |0FBE70 0A movsx esi, byte ptr [eax+A]

3.     00404F11 . |03CE add ecx, esi

4.     00404F13 . |D1F9 sar ecx, 1

5.     00404F15 . |79 03 jns short 00404F1A

6.     00404F17 . |83D1 00 adc ecx, 0

7.     00404F1A > |8808 mov byte ptr [eax], cl ;注意CL的值,跟踪EAX进行修改

8.     00404F1C . |42 inc edx

9.     00404F1D . |40 inc eax

10.  00404F1E > |8D4B F6 lea ecx, dword ptr [ebx-A]

11.  00404F21 . |3BD1 cmp edx, ecx

12.  00404F23 .^\7C E5 jl short 00404F0A

复制代码

接着修改第11-14位机器码

1.     004176E7 |> /0FBE01 movsx eax, byte ptr [ecx]

2.     004176EA |. |BE 0A000000 mov esi, 0A

3.     004176EF |. |33D2 xor edx, edx

4.     004176F1 |. |F7F6 div esi

5.     004176F3 |. |80C2 30 add dl, 30

6.     004176F6 |. |43 inc ebx

7.     004176F7 |. |8811 mov byte ptr [ecx], dl ;注意DL的值,直接跟踪ECX进行修改

8.     004176F9 |. |41 inc ecx

9.     004176FA |. |83FB 04 cmp ebx, 4

10.  004176FD |.^\7C E8 jl short 004176E7

复制代码

然后生成第31-34为机器码

1.     00417797 |> /0FBE03 movsx eax, byte ptr [ebx] ; 31-34

2.     0041779A |. |BE 0A000000 mov esi, 0A

3.     0041779F |. |33D2 xor edx, edx

4.     004177A1 |. |F7F6 div esi

5.     004177A3 |. |80C2 30 add dl, 30

6.     004177A6 |. |41 inc ecx

7.     004177A7 |. |8813 mov byte ptr [ebx], dl ; 注意EBXDL

8.     004177A9 |. |43 inc ebx

9.     004177AA |. |83F9 04 cmp ecx, 4

10.  004177AD |.^\7C E8 jl short 00417797

复制代码

生成第35位机器码

1.     00417899 |> \8BC6 mov eax, esi ; 35 DL

2.     0041789B BB 0A000000 mov ebx, 0A

3.     004178A0 |. 99 cdq

4.     004178A1 F7FB idiv ebx

5.     004178A3 80C2 30 add dl, 30 ; 注意DL

6.     004178A6 |. 8D45 FC lea eax, dword ptr [ebp-4]

7.     004178A9 |. 88940D 74FFFF>mov byte ptr [ebp+ecx-8C], dl

复制代码

生成第36-38位机器码,感觉36位一直是0

1.     00417A0C |. B8 C89C4B00 mov eax, 004B9CC8 ; 0

2.     00417A11 |. E8 CAA80800 call 004A22E0

3.     00417A16 |. 8D55 EC lea edx, dword ptr [ebp-14]

4.     00417A19 |. 8D45 FC lea eax, dword ptr [ebp-4]

5.     00417A1C |. E8 8BA40800 call 004A1EAC

6.     00417A21 |. FF4E 1C dec dword ptr [esi+1C]

7.     00417A24 |. 8D45 EC lea eax, dword ptr [ebp-14]

8.     00417A27 |. BA 02000000 mov edx, 2

9.     00417A2C |. E8 4BA40800 call 004A1E7C ; 36-38

10.  00417A31 |> 33C0 xor eax, eax ; 寄存器出现机器码

复制代码

最后两位机器码

1.     00417A51 |. 8BD0 mov edx, eax

2.     00417A53 |. FF46 1C inc dword ptr [esi+1C]

3.     00417A56 |. 8D45 F8 lea eax, dword ptr [ebp-8]

4.     00417A59 |. E8 4EA40800 call 004A1EAC

5.     00417A5E |. FF4E 1C dec dword ptr [esi+1C]

6.     00417A61 |. 8D45 E8 lea eax, dword ptr [ebp-18]

7.     00417A64 |. BA 02000000 mov edx, 2

8.     00417A69 |. E8 0EA40800 call 004A1E7C ; 最后两位

9.     00417A6E |. 837D F8 00 cmp dword ptr [ebp-8], 0 ; 寄存器出现机器码

复制代码

——————–
其实从36-40位都可以从这里看到

1.     00497D01 |. 50 |push eax

2.     00497D02 |. 51 |push ecx

3.     00497D03 |. 8B55 C8 |mov edx, dword ptr [ebp-38]

4.     00497D06 |. 52 |push edx

5.     00497D07 |. 8B4D E8 |mov ecx, dword ptr [ebp-18]

6.     00497D0A |. 51 |push ecx

7.     00497D0B |. FF75 DC |push dword ptr [ebp-24]

8.     00497D0E |. FF75 D8 |push dword ptr [ebp-28]

9.     00497D11 |. E8 7A310000 |call 0049AE90 ; 重点,这里每次出现一次看寄存器进行修改

10.  00497D16 |. 83C4 18 |add esp, 18 ; 修改EAX里面的值

11.  00497D19 |> 837D F8 00 |cmp dword ptr [ebp-8], 0

12.  00497D1D |. 0F8C 19020000 |jl 00497F3C

13.  00497D23 |. 8B55 E8 |mov edx, dword ptr [ebp-18]

复制代码

———————–
这样屏幕录像专家加密替换一下机器码可以看了,我这里在OD调试的时候,内存替换机器码可以看一下,但是一会儿就提示错误,不知道什么原因,汗~~

顺便做了个小录像
http://www.dbank.com/download.action?t=40&k=MzM4MDE0Mg==&pcode=LCwyNjAyODcsMjYwMjg3&rnd=5

http://www.brsbox.com/filebox/down/fc/d12e14f7fdb774ea7e11c7072ed032bc

 

Tags:

发表回复