首页
社区
课程
招聘
[旧帖] [原创]记一次破解小软件 0.00雪花
2012-1-9 13:15 3737

[旧帖] [原创]记一次破解小软件 0.00雪花

2012-1-9 13:15
3737
实验对象http://down.qiannao.com/space/file/lengyeasu/share/2010/8/1/linglei.rar/.page我在这下载的。下面说下我是怎样破解这个水印软件的。

由于基础太差,我就不具体分析了。代码我加的分析可能有错误,朋友们看到了还望指出。
用Ollyice载入已脱壳的程序,至于脱壳方法相信大家比我懂,此处不再啰嗦。
依靠ollyice的字符串参考在软件的这里设下断点

1.     00538F73 . E8 C0FDFFFF call 00538D38 ; 关键Call

2.     00538F78 . 84C0 test al, al

按F7跟进,来到这里:(因为基础差做了很多没用的注释删去了)

1.     00538D38 /$ 55 push ebp

2.     00538D39 |. 8BEC mov ebp, esp

3.     00538D3B |. 33C9 xor ecx, ecx

4.     00538D3D |. 51 push ecx

5.     00538D3E |. 51 push ecx

6.     00538D3F |. 51 push ecx

7.     00538D40 |. 51 push ecx

8.     00538D41 |. 51 push ecx

9.     00538D42 |. 53 push ebx

10.  00538D43 |. 56 push esi

11.  00538D44 |. 8955 FC mov dword ptr [ebp-4], edx ; edx=005472B0 (1.005472B0), ASCII "HsjMakeSign"

12.  00538D47 |. 8BD8 mov ebx, eax ; 将eax暂时--ebx eax=00C18148

13.  00538D49 |. 8B45 FC mov eax, dword ptr [ebp-4] ; edx---eax ASCII "HsjMakeSign"

14.  00538D4C |. E8 B7BDECFF call 00404B08

15.  00538D51 |. 33C0 xor eax, eax

16.  00538D53 |. 55 push ebp

17.  00538D54 |. 68 238E5300 push 00538E23

18.  00538D59 |. 64:FF30 push dword ptr fs:[eax]

19.  00538D5C |. 64:8920 mov dword ptr fs:[eax], esp

20.  00538D5F |. 8D4D F4 lea ecx, dword ptr [ebp-C]

21.  00538D62 |. 8B55 FC mov edx, dword ptr [ebp-4] ; edx -- "HsjMakeSign"

22.  00538D65 |. 8BC3 mov eax, ebx ; 还原ebx--eax

23.  00538D67 |. E8 F0FCFFFF call 00538A5C ; 得到软件的机器码数字部分

24.  00538D6C |. 8D55 F8 lea edx, dword ptr [ebp-8]

25.  00538D6F |. 8B45 F4 mov eax, dword ptr [ebp-C] ; 载入机器码

26.  00538D72 |. E8 1DFEFFFF call 00538B94 ; 得到正确的注册码的关键CALL

27.  00538D77 |. B9 3C8E5300 mov ecx, 00538E3C ; hsjsoft.ini临时存放机器码

28.  00538D7C |. B2 01 mov dl, 1

29.  00538D7E |. A1 00C94300 mov eax, dword ptr [43C900]

30.  00538D83 |. E8 283CF0FF call 0043C9B0

31.  00538D88 |. 8BD8 mov ebx, eax

32.  00538D8A |. 6A 00 push 0

33.  00538D8C |. 8D45 EC lea eax, dword ptr [ebp-14]

34.  00538D8F |. 50 push eax

35.  00538D90 |. B9 508E5300 mov ecx, 00538E50 ; reg_code

36.  00538D95 |. 8B55 FC mov edx, dword ptr [ebp-4]

37.  00538D98 |. 8BC3 mov eax, ebx

38.  00538D9A |. 8B30 mov esi, dword ptr [eax]

39.  00538D9C |. FF16 call near dword ptr [esi] ; 传递注册数据

40.  00538D9E 8B45 EC mov eax, dword ptr [ebp-14] ; 传入用户输入的注册码

41.  00538DA1 |. 8D55 F0 lea edx, dword ptr [ebp-10]

42.  00538DA4 |. E8 EF01EDFF call 00408F98

43.  00538DA9 |. 8BC3 mov eax, ebx

44.  00538DAB |. E8 88AAECFF call 00403838

45.  00538DB0 |. E8 8BA1ECFF call 00402F40

46.  00538DB5 |. B8 20000000 mov eax, 20

47.  00538DBA |. E8 8DA4ECFF call 0040324C

48.  00538DBF |. 8BD8 mov ebx, eax

49.  00538DC1 |. 85DB test ebx, ebx

50.  00538DC3 |. 7F 05 jg short 00538DCA

51.  00538DC5 |. BB 01000000 mov ebx, 1

52.  00538DCA |> 83FB 1E cmp ebx, 1E

53.  00538DCD |. 7E 05 jle short 00538DD4

54.  00538DCF |. BB 1E000000 mov ebx, 1E

55.  00538DD4 |> 8D45 F8 lea eax, dword ptr [ebp-8]

56.  00538DD7 |. 50 push eax

57.  00538DD8 |. B9 02000000 mov ecx, 2

58.  00538DDD |. 8BD3 mov edx, ebx

59.  00538DDF |. 8B45 F8 mov eax, dword ptr [ebp-8]

60.  00538DE2 |. E8 91BDECFF call 00404B78

61.  00538DE7 |. 8D45 F0 lea eax, dword ptr [ebp-10]

62.  00538DEA |. 50 push eax

63.  00538DEB |. B9 02000000 mov ecx, 2

64.  00538DF0 |. 8BD3 mov edx, ebx

65.  00538DF2 8B45 F0 mov eax, dword ptr [ebp-10]

66.  00538DF5 |. E8 7EBDECFF call 00404B78 ; 来到比较的地方,我估计是取任意位置的两数比较

67.  00538DFA |. 8B45 F8 mov eax, dword ptr [ebp-8]

68.  00538DFD 8B55 F0 mov edx, dword ptr [ebp-10]

69.  00538E00 |. E8 5FBCECFF call 00404A64 ; 判断注册码是否正确

70.  00538E05 |. 0F94C3 sete bl

71.  00538E08 |. 33C0 xor eax, eax

72.  00538E0A |. 5A pop edx

73.  00538E0B |. 59 pop ecx

74.  00538E0C |. 59 pop ecx

75.  00538E0D |. 64:8910 mov dword ptr fs:[eax], edx

76.  00538E10 |. 68 2A8E5300 push 00538E2A

77.  00538E15 |> 8D45 EC lea eax, dword ptr [ebp-14]

78.  00538E18 |. BA 05000000 mov edx, 5

79.  00538E1D |. E8 4AB8ECFF call 0040466C

80.  00538E22 \. C3 retn

81.  00538E23 .^ E9 78B1ECFF jmp 00403FA0

82.  00538E28 .^ EB EB jmp short 00538E15

83.  00538E2A . 8BC3 mov eax, ebx

84.  00538E2C . 5E pop esi

85.  00538E2D . 5B pop ebx

86.  00538E2E . 8BE5 mov esp, ebp

87.  00538E30 . 5D pop ebp

88.  00538E31 . C3 retn

在这里动态调试单步走,在00538D67处进入得到软件的机器码数字部分代码:

1.     00538A5C $ 55 push ebp ; 机器码获取部分

2.     00538A5D . 8BEC mov ebp, esp ; 保存esp至ebp

3.     00538A5F . 83C4 D0 add esp, -30

4.     00538A62 . 53 push ebx

5.     00538A63 . 56 push esi

6.     00538A64 . 57 push edi ; edi=0012FE94

7.     00538A65 . 33DB xor ebx, ebx ; ebx归零

8.     00538A67 . 895D E0 mov dword ptr [ebp-20], ebx

9.     00538A6A . 895D F0 mov dword ptr [ebp-10], ebx

10.  00538A6D . 895D EC mov dword ptr [ebp-14], ebx

11.  00538A70 . 895D E8 mov dword ptr [ebp-18], ebx

12.  00538A73 . 895D E4 mov dword ptr [ebp-1C], ebx

13.  00538A76 . 895D F4 mov dword ptr [ebp-C], ebx

14.  00538A79 . 894D F8 mov dword ptr [ebp-8], ecx

15.  00538A7C . 8955 FC mov dword ptr [ebp-4], edx ; edx=005472B0 (1.005472B0), ASCII "HsjMakeSign"

16.  00538A7F . 8BD8 mov ebx, eax ; ebx=eax=00C18148

17.  00538A81 . 8B45 FC mov eax, dword ptr [ebp-4] ; eax=HsjMakeSign

18.  00538A84 . E8 7FC0ECFF call 00404B08 ; 用途未知

19.  00538A89 . 33C0 xor eax, eax ; eax清零

20.  00538A8B . 55 push ebp ; ebp压入

21.  00538A8C . 68 698B5300 push 00538B69 ; 00538B69=00538B69

22.  00538A91 . 64:FF30 push dword ptr fs:[eax] ; fs:[00000000]=[7FFDF000]=0012FBC4

23.  00538A94 . 64:8920 mov dword ptr fs:[eax], esp ; esp=0012FB74

24.  00538A97 . 8B45 F8 mov eax, dword ptr [ebp-8] ; 堆栈 ss:[0012FBB4]=0012FBE0

25.  00538A9A . E8 A9BBECFF call 00404648

26.  00538A9F . 33C0 xor eax, eax ; eax归零

27.  00538AA1 . 55 push ebp ; ebp=0012FBBC

28.  00538AA2 . 68 0E8B5300 push 00538B0E ; 00538B0E=00538B0E

29.  00538AA7 . 64:FF30 push dword ptr fs:[eax] ; fs:[00000000]=[7FFDF000]=0012FB74

30.  00538AAA . 64:8920 mov dword ptr fs:[eax], esp

31.  00538AAD . FF75 FC push dword ptr [ebp-4] ; 堆栈 ss:[0012FBB8]=005472B0 (1.005472B0), ASCII "HsjMakeSign"

32.  00538AB0 . 68 808B5300 push 00538B80

33.  00538AB5 . 8D45 F0 lea eax, dword ptr [ebp-10] ; 堆栈地址=0012FBAC

34.  00538AB8 . E8 63F8FFFF call 00538320 ; 获取机器信息---bios部分

35.  00538ABD . FF75 F0 push dword ptr [ebp-10] ; 机器信息(ASCII "BiosInfo:System BIOS Version Line 1 = LENOVO - 1System BIOS Version Line 2 = Ver 1.00System BIOS Date 12/04/09Video BIOS Version Line 1 = Hardware Version 0.0")

36.  00538AC0 . 68 808B5300 push 00538B80 ; ;

37.  00538AC5 . 8D45 EC lea eax, dword ptr [ebp-14] ; 堆栈地址=0012FBA8

38.  00538AC8 . E8 87FBFFFF call 00538654 ; 获取机器信息

39.  00538ACD . FF75 EC push dword ptr [ebp-14] ; ASCII "DisplayDeviceInfo:Mobile Intel(R) 4 Series Express Chipset FamilyMobile Intel(R) 4 Series Express Chipset FamilyNetMeeting driverRDPDD Chained DD

40.  00538AD0 . 68 808B5300 push 00538B80 ; ;

41.  00538AD5 . 8D45 E8 lea eax, dword ptr [ebp-18]

42.  00538AD8 . E8 57FCFFFF call 00538734 ; 获取机器信息---CPU部分

43.  00538ADD . FF75 E8 push dword ptr [ebp-18] ; CpuType:GenuineIntel586

44.  00538AE0 . 68 808B5300 push 00538B80 ; ;

45.  00538AE5 . 8D55 E4 lea edx, dword ptr [ebp-1C]

46.  00538AE8 . 8BC3 mov eax, ebx

47.  00538AEA . E8 F5FDFFFF call 005388E4 ; 获取机器信息---硬盘id部分

48.  00538AEF . FF75 E4 push dword ptr [ebp-1C] ; ASCII DiskId:

49.  00538AF2 . 68 808B5300 push 00538B80 ; ;

50.  00538AF7 . 8D45 F4 lea eax, dword ptr [ebp-C]

51.  00538AFA . BA 0A000000 mov edx, 0A

52.  00538AFF . E8 D4BEECFF call 004049D8

53.  00538B04 . 33C0 xor eax, eax

54.  00538B06 . 5A pop edx

55.  00538B07 . 59 pop ecx

56.  00538B08 . 59 pop ecx

57.  00538B09 . 64:8910 mov dword ptr fs:[eax], edx

58.  00538B0C . EB 0A jmp short 00538B18

59.  00538B0E .^ E9 D9B1ECFF jmp 00403CEC

60.  00538B13 . E8 3CB5ECFF call 00404054

61.  00538B18 > 68 8C8B5300 push 00538B8C ; 6.0;

62.  00538B1D . FF75 FC push dword ptr [ebp-4]

63.  00538B20 . 8D55 D0 lea edx, dword ptr [ebp-30] ; 下一步就将机器信息汇总

64.  00538B23 . 8B45 F4 mov eax, dword ptr [ebp-C] ; HsjMakeSign;BiosInfo:System BIOS Version Line 1 = LENOVO - 1System BIOS Version Line 2 = Ver 1.00System BIOS Date 12/04/09Video BIOS Version Line 1 = Hardware Version 0.0;DisplayDeviceInfo:Mobile Intel(R) 4 Series Express Chipset FamilyM

65.  00538B26 . E8 EDE6FFFF call 00537218

66.  00538B2B . 8D45 D0 lea eax, dword ptr [ebp-30]

67.  00538B2E . 8D55 E0 lea edx, dword ptr [ebp-20] ; edx此时存放有机器信息

68.  00538B31 . E8 56E7FFFF call 0053728C ; 计算得到机器码的关键Call

69.  00538B36 . FF75 E0 push dword ptr [ebp-20]

70.  00538B39 . 8B45 F8 mov eax, dword ptr [ebp-8]

71.  00538B3C . BA 03000000 mov edx, 3

72.  00538B41 . E8 92BEECFF call 004049D8

73.  00538B46 . 33C0 xor eax, eax

74.  00538B48 . 5A pop edx

75.  00538B49 . 59 pop ecx

76.  00538B4A . 59 pop ecx

77.  00538B4B . 64:8910 mov dword ptr fs:[eax], edx

78.  00538B4E . 68 708B5300 push 00538B70

79.  00538B53 > 8D45 E0 lea eax, dword ptr [ebp-20]

80.  00538B56 . BA 06000000 mov edx, 6

81.  00538B5B . E8 0CBBECFF call 0040466C

82.  00538B60 . 8D45 FC lea eax, dword ptr [ebp-4]

83.  00538B63 . E8 E0BAECFF call 00404648

84.  00538B68 . C3 retn

85.  00538B69 .^ E9 32B4ECFF jmp 00403FA0

86.  00538B6E .^ EB E3 jmp short 00538B53

87.  00538B70 . 5F pop edi

88.  00538B71 . 5E pop esi

89.  00538B72 . 5B pop ebx

90.  00538B73 . 8BE5 mov esp, ebp

91.  00538B75 . 5D pop ebp

92.  00538B76 . C3 retn

以上代码前半部分是获取机器信息,在00538B31处跟进来到计算机器码32位数字的代码部分(注:分成的四部分机器码都经过调序得到真正机器码的四部分):

1.     0053728C /$ 55 push ebp

2.     0053728D |. 8BEC mov ebp, esp

3.     0053728F |. 83C4 E8 add esp, -18

4.     00537292 |. 53 push ebx

5.     00537293 |. 56 push esi

6.     00537294 |. 57 push edi

7.     00537295 |. 33C9 xor ecx, ecx

8.     00537297 |. 894D EC mov dword ptr [ebp-14], ecx

9.     0053729A |. 894D E8 mov dword ptr [ebp-18], ecx

10.  0053729D |. 8BF0 mov esi, eax

11.  0053729F |. 8D7D F0 lea edi, dword ptr [ebp-10]

12.  005372A2 |. A5 movs dword ptr es:[edi], dword ptr [e>; 机器码第一部分[0012FB9C]=AE2C1742

13.  005372A3 |. A5 movs dword ptr es:[edi], dword ptr [e>; 机器码第二部分[0012FBA0]=6FAA135F

14.  005372A4 |. A5 movs dword ptr es:[edi], dword ptr [e>; 机器码第三部分[0012FBA4]=4B1A2D3A

15.  005372A5 |. A5 movs dword ptr es:[edi], dword ptr [e>; 机器码第四部分[0012FBA8]=4031BBC7

16.  005372A6 |. 8BFA mov edi, edx

17.  005372A8 |. 33C0 xor eax, eax

18.  005372AA |. 55 push ebp

19.  005372AB |. 68 27735300 push 00537327

20.  005372B0 |. 64:FF30 push dword ptr fs:[eax]

21.  005372B3 |. 64:8920 mov dword ptr fs:[eax], esp

22.  005372B6 |. 8BC7 mov eax, edi

23.  005372B8 |. E8 8BD3ECFF call 00404648

24.  005372BD |. B3 10 mov bl, 10

25.  005372BF |. 8D75 F0 lea esi, dword ptr [ebp-10]

26.  005372C2 |> FF37 /push dword ptr [edi] ; 进入循环将机器码顺序校正直至

27.  005372C4 |. 8D45 EC |lea eax, dword ptr [ebp-14]

28.  005372C7 |. 33D2 |xor edx, edx

29.  005372C9 |. 8A16 |mov dl, byte ptr [esi]

30.  005372CB |. C1EA 04 |shr edx, 4

31.  005372CE |. 83E2 0F |and edx, 0F

32.  005372D1 |. 8A92 28255600 |mov dl, byte ptr [edx+562528]

33.  005372D7 |. E8 54D5ECFF |call 00404830

34.  005372DC |. FF75 EC |push dword ptr [ebp-14]

35.  005372DF |. 8D45 E8 |lea eax, dword ptr [ebp-18]

36.  005372E2 |. 8A16 |mov dl, byte ptr [esi]

37.  005372E4 |. 80E2 0F |and dl, 0F

38.  005372E7 |. 81E2 FF000000 |and edx, 0FF

39.  005372ED |. 8A92 28255600 |mov dl, byte ptr [edx+562528]

40.  005372F3 |. E8 38D5ECFF |call 00404830

41.  005372F8 |. FF75 E8 |push dword ptr [ebp-18]

42.  005372FB |. 8BC7 |mov eax, edi

43.  005372FD |. BA 03000000 |mov edx, 3

44.  00537302 |. E8 D1D6ECFF |call 004049D8

45.  00537307 |. 46 |inc esi

46.  00537308 |. FECB |dec bl

47.  0053730A |.^ 75 B6 \jnz short 005372C2

48.  0053730C |. 33C0 xor eax, eax

49.  0053730E |. 5A pop edx

50.  0053730F |. 59 pop ecx

51.  00537310 |. 59 pop ecx

52.  00537311 |. 64:8910 mov dword ptr fs:[eax], edx

53.  00537314 |. 68 2E735300 push 0053732E

54.  00537319 |> 8D45 E8 lea eax, dword ptr [ebp-18]

55.  0053731C |. BA 02000000 mov edx, 2

56.  00537321 |. E8 46D3ECFF call 0040466C

57.  00537326 \. C3 retn

出来后再单步走完机器码获取部分,来到00538d9e位置,这时机器码已经得到了即6.0;HsjMakeSign42172cae5f13aa6f3a2d1a4bc7bb3140
下面在进入00538D72的call-->00538B94  即得到正确的注册码的CALL:

1.     00538B94 /$ 55 push ebp

2.     00538B95 |. 8BEC mov ebp, esp

3.     00538B97 |. 83C4 D8 add esp, -28

4.     00538B9A |. 53 push ebx

5.     00538B9B |. 56 push esi

6.     00538B9C |. 33C9 xor ecx, ecx

7.     00538B9E |. 894D D8 mov dword ptr [ebp-28], ecx

8.     00538BA1 |. 894D DC mov dword ptr [ebp-24], ecx ; 4031BBC7

9.     00538BA4 |. 894D F8 mov dword ptr [ebp-8], ecx ; 0012FBE0

10.  00538BA7 |. 894D F4 mov dword ptr [ebp-C], ecx

11.  00538BAA |. 894D F0 mov dword ptr [ebp-10], ecx

12.  00538BAD |. 8BF2 mov esi, edx

13.  00538BAF |. 8945 FC mov dword ptr [ebp-4], eax

14.  00538BB2 |. 8B45 FC mov eax, dword ptr [ebp-4]

15.  00538BB5 |. E8 4EBFECFF call 00404B08

16.  00538BBA |. 33C0 xor eax, eax

17.  00538BBC |. 55 push ebp

18.  00538BBD |. 68 CB8C5300 push 00538CCB

19.  00538BC2 |. 64:FF30 push dword ptr fs:[eax]

20.  00538BC5 |. 64:8920 mov dword ptr fs:[eax], esp

21.  00538BC8 |. 8BC6 mov eax, esi

22.  00538BCA |. E8 79BAECFF call 00404648

23.  00538BCF |. 8D45 F8 lea eax, dword ptr [ebp-8]

24.  00538BD2 |. E8 71BAECFF call 00404648

25.  00538BD7 |. 8D45 F8 lea eax, dword ptr [ebp-8]

26.  00538BDA |. BA E08C5300 mov edx, 00538CE0 ; 版

27.  00538BDF |. E8 3CBDECFF call 00404920

28.  00538BE4 |. 8D45 F8 lea eax, dword ptr [ebp-8]

29.  00538BE7 |. BA EC8C5300 mov edx, 00538CEC ; 权

30.  00538BEC |. E8 2FBDECFF call 00404920

31.  00538BF1 |. 8D45 F8 lea eax, dword ptr [ebp-8]

32.  00538BF4 |. BA F88C5300 mov edx, 00538CF8 ; 所

33.  00538BF9 |. E8 22BDECFF call 00404920

34.  00538BFE |. 8D45 F8 lea eax, dword ptr [ebp-8]

35.  00538C01 |. BA 048D5300 mov edx, 00538D04 ; 有

36.  00538C06 |. E8 15BDECFF call 00404920

37.  00538C0B |. 8D45 F8 lea eax, dword ptr [ebp-8]

38.  00538C0E |. BA 108D5300 mov edx, 00538D10 ; :

39.  00538C13 |. E8 08BDECFF call 00404920

40.  00538C18 |. 8D45 F8 lea eax, dword ptr [ebp-8]

41.  00538C1B |. BA 1C8D5300 mov edx, 00538D1C ; 韩

42.  00538C20 |. E8 FBBCECFF call 00404920

43.  00538C25 |. 8D45 F8 lea eax, dword ptr [ebp-8]

44.  00538C28 |. BA 288D5300 mov edx, 00538D28 ; 树

45.  00538C2D |. E8 EEBCECFF call 00404920

46.  00538C32 |. 8D45 F8 lea eax, dword ptr [ebp-8]

47.  00538C35 |. BA 348D5300 mov edx, 00538D34 ; 江

48.  00538C3A |. E8 E1BCECFF call 00404920

49.  00538C3F |. 8D45 DC lea eax, dword ptr [ebp-24]

50.  00538C42 |. 8B4D FC mov ecx, dword ptr [ebp-4] ; (ASCII "6.0;HsjMakeSign42172cae5f13aa6f3a2d1a4bc7bb3140")

51.  00538C45 |. 8B55 F8 mov edx, dword ptr [ebp-8]

52.  00538C48 |. E8 17BDECFF call 00404964

53.  00538C4D |. 8B45 DC mov eax, dword ptr [ebp-24]

54.  00538C50 |. 8D55 E0 lea edx, dword ptr [ebp-20]

55.  00538C53 |. E8 C0E5FFFF call 00537218

56.  00538C58 |. 8D45 E0 lea eax, dword ptr [ebp-20]

57.  00538C5B |. 8D55 F4 lea edx, dword ptr [ebp-C]

58.  00538C5E |. E8 29E6FFFF call 0053728C ; 关键Call整出注册码

59.  00538C63 |. 8D45 F0 lea eax, dword ptr [ebp-10]

60.  00538C66 |. E8 DDB9ECFF call 00404648 ; 作用未知

61.  00538C6B |. 8B45 F4 mov eax, dword ptr [ebp-C] ; 注册码6c9125ab21e9252438e413f6536217d0

62.  00538C6E |. E8 A5BCECFF call 00404918

63.  00538C73 |. 8BD8 mov ebx, eax

64.  00538C75 |. 83FB 01 cmp ebx, 1

65.  00538C78 |. 7C 1F jl short 00538C99 ; 调序部分,倒转注册码

66.  00538C7A |> 8D45 D8 /lea eax, dword ptr [ebp-28]

67.  00538C7D |. 8B55 F4 |mov edx, dword ptr [ebp-C]

68.  00538C80 |. 8A541A FF |mov dl, byte ptr [edx+ebx-1]

69.  00538C84 |. E8 A7BBECFF |call 00404830

70.  00538C89 |. 8B55 D8 |mov edx, dword ptr [ebp-28]

71.  00538C8C |. 8D45 F0 |lea eax, dword ptr [ebp-10]

72.  00538C8F |. E8 8CBCECFF |call 00404920

73.  00538C94 |. 4B |dec ebx

74.  00538C95 |. 85DB |test ebx, ebx

75.  00538C97 |.^ 75 E1 \jnz short 00538C7A

76.  00538C99 |> 8BC6 mov eax, esi

77.  00538C9B |. 8B55 F0 mov edx, dword ptr [ebp-10] ; 倒转后正确的注册码0d7126356f314e8342529e12ba5219c6

78.  00538C9E |. E8 F9B9ECFF call 0040469C

79.  00538CA3 |. 33C0 xor eax, eax

80.  00538CA5 |. 5A pop edx

81.  00538CA6 |. 59 pop ecx

82.  00538CA7 |. 59 pop ecx

83.  00538CA8 |. 64:8910 mov dword ptr fs:[eax], edx

84.  00538CAB |. 68 D28C5300 push 00538CD2

85.  00538CB0 |> 8D45 D8 lea eax, dword ptr [ebp-28]

86.  00538CB3 |. BA 02000000 mov edx, 2

87.  00538CB8 |. E8 AFB9ECFF call 0040466C

88.  00538CBD |. 8D45 F0 lea eax, dword ptr [ebp-10]

89.  00538CC0 |. BA 04000000 mov edx, 4

90.  00538CC5 |. E8 A2B9ECFF call 0040466C

91.  00538CCA \. C3 retn

92.  00538CCB .^ E9 D0B2ECFF jmp 00403FA0

93.  00538CD0 .^ EB DE jmp short 00538CB0

94.  00538CD2 . 5E pop esi

95.  00538CD3 . 5B pop ebx

96.  00538CD4 . 8BE5 mov esp, ebp

97.  00538CD6 . 5D pop ebp

98.  00538CD7 . C3 retn

简单说下,这部分代码前半部分得到机器码数字,然后在00538C5E处是得到注册码的模块,那么我们在跟进0053728C那里瞧瞧:
来到这里,得到注册码的部分(注:分成的四部分注册码都需经过调序得到真正注册码的四部分)

1.     0053728C /$ 55 push ebp

2.     0053728D |. 8BEC mov ebp, esp

3.     0053728F |. 83C4 E8 add esp, -18

4.     00537292 |. 53 push ebx

5.     00537293 |. 56 push esi

6.     00537294 |. 57 push edi

7.     00537295 |. 33C9 xor ecx, ecx

8.     00537297 |. 894D EC mov dword ptr [ebp-14], ecx

9.     0053729A |. 894D E8 mov dword ptr [ebp-18], ecx

10.  0053729D |. 8BF0 mov esi, eax

11.  0053729F |. 8D7D F0 lea edi, dword ptr [ebp-10]

12.  005372A2 |. A5 movs dword ptr es:[edi], dword ptr [e>; 注册码第四部分[0012FB9C]=AB25916C

13.  005372A3 |. A5 movs dword ptr es:[edi], dword ptr [e>; 注册码第三部分[0012FBA0]=2425E921

14.  005372A4 |. A5 movs dword ptr es:[edi], dword ptr [e>; 注册码第二部分[0012FBA4]=F613E438

15.  005372A5 |. A5 movs dword ptr es:[edi], dword ptr [e>; 注册码第一部分[0012FBA8]=D0176253

16.  005372A6 |. 8BFA mov edi, edx

17.  005372A8 |. 33C0 xor eax, eax

18.  005372AA |. 55 push ebp

19.  005372AB |. 68 27735300 push 00537327

20.  005372B0 |. 64:FF30 push dword ptr fs:[eax]

21.  005372B3 |. 64:8920 mov dword ptr fs:[eax], esp

22.  005372B6 |. 8BC7 mov eax, edi

23.  005372B8 |. E8 8BD3ECFF call 00404648

24.  005372BD |. B3 10 mov bl, 10

25.  005372BF |. 8D75 F0 lea esi, dword ptr [ebp-10]

26.  005372C2 |> FF37 /push dword ptr [edi] ; 进入循环将注册码顺序校正

27.  005372C4 |. 8D45 EC |lea eax, dword ptr [ebp-14]

28.  005372C7 |. 33D2 |xor edx, edx

29.  005372C9 |. 8A16 |mov dl, byte ptr [esi]

30.  005372CB |. C1EA 04 |shr edx, 4

31.  005372CE |. 83E2 0F |and edx, 0F

32.  005372D1 |. 8A92 28255600 |mov dl, byte ptr [edx+562528]

33.  005372D7 |. E8 54D5ECFF |call 00404830

34.  005372DC |. FF75 EC |push dword ptr [ebp-14]

35.  005372DF |. 8D45 E8 |lea eax, dword ptr [ebp-18]

36.  005372E2 |. 8A16 |mov dl, byte ptr [esi]

37.  005372E4 |. 80E2 0F |and dl, 0F

38.  005372E7 |. 81E2 FF000000 |and edx, 0FF

39.  005372ED |. 8A92 28255600 |mov dl, byte ptr [edx+562528]

40.  005372F3 |. E8 38D5ECFF |call 00404830

41.  005372F8 |. FF75 E8 |push dword ptr [ebp-18]

42.  005372FB |. 8BC7 |mov eax, edi

43.  005372FD |. BA 03000000 |mov edx, 3

44.  00537302 |. E8 D1D6ECFF |call 004049D8

45.  00537307 |. 46 |inc esi

46.  00537308 |. FECB |dec bl

47.  0053730A |.^ 75 B6 \jnz short 005372C2

48.  0053730C |. 33C0 xor eax, eax

49.  0053730E |. 5A pop edx

50.  0053730F |. 59 pop ecx

51.  00537310 |. 59 pop ecx

52.  00537311 |. 64:8910 mov dword ptr fs:[eax], edx

53.  00537314 |. 68 2E735300 push 0053732E

54.  00537319 |> 8D45 E8 lea eax, dword ptr [ebp-18]

55.  0053731C |. BA 02000000 mov edx, 2

56.  00537321 |. E8 46D3ECFF call 0040466C

57.  00537326 \. C3 retn

58.  00537327 .^ E9 74CCECFF jmp 00403FA0

59.  0053732C .^ EB EB jmp short 00537319

60.  0053732E . 5F pop edi

61.  0053732F . 5E pop esi

62.  00537330 . 5B pop ebx

63.  00537331 . 8BE5 mov esp, ebp

64.  00537333 . 5D pop ebp

65.  00537334 . C3 retn

通过这段代码看到了机器码(数字部分)与注册码实际是调用同一部分代码,只是时间紧迫,我没能分析明白算法具体是什么,只能分析一下流程了。
或许大家看到这个步骤有些发懵,建议大家动手试一下,如果有流程图或许会好些吧。
至于要得到破解版本,我的思路是让软件自己计算出注册码与自己比较,呵呵,肯定是正确的了。(补充:该软件的注册方式是从32位注册码中任取两个数,与用户输入的注册码同位置两处比较,若正确则成功,所以利用追出的注册码修改一下有时能注册成功,有时则会失败。这是我在沙盘下调试多次加上动态调试的猜想,没办法,我汇编根本没起步,分析的头都大了。嘿嘿)
在此次分析第一次跟进的代码区域往下看有这样一段:

1.     00538DF2 8B45 F0 mov eax, dword ptr [ebp-10]

2.     00538DF5 |. E8 7EBDECFF call 00404B78 ; 来到比较的地方,我估计是通过函数任意取注册码的一个位置

3.     00538DFA |. 8B45 F8 mov eax, dword ptr [ebp-8]

4.     00538DFD 8B55 F0 mov edx, dword ptr [ebp-10]

5.     00538E00 |. E8 5FBCECFF call 00404A64

6.     00538E05 |. 0F94C3 sete bl ;判断逻辑真假,若为真,注册成功。

这样得到破解版我们还需做以下修改:
00538DF2和00538DFD处修改汇编代码将ebp-10改为ebp-8
此时用动态调试,00538E05逻辑为真。说明接近成功了。
保存修改,双击打开,软件就变为已注册版本了。

不求精华,知道没到那个水平,但求一个邀请码,犒劳一下。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
点赞5
打赏
分享
最新回复 (19)
雪    币: 380
活跃值: (103)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
suredwang 2 2012-1-9 13:23
2
0
分析比较详细啊,支持!学习了
雪    币: 120
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qwaa 2012-1-9 13:32
3
0
其实看到不错的软件 也真是比较好玩的啊
雪    币: 124
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
gecyilin 2012-1-9 14:44
4
0
俺增长知识了,谢谢楼主。
雪    币: 185
活跃值: (79)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
蛋蛋的蛋 2012-1-9 14:53
5
0
不错不错
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
潇楠 2012-1-9 16:00
6
0
学习, 谢谢了
雪    币: 79
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
meckun 2012-1-10 10:23
7
0
谢谢支持,虽然没有得到邀请码。我会吸取教训。再做一个有图片的。  纯文本不太好看哈。
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
eraise 2012-2-24 23:07
8
0
太牛了。。。。连断点应该设置在哪,怎么选择设置都不懂的超级菜鸟称赞道 。。。
雪    币: 517
活跃值: (35)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
BlueT 2 2012-2-25 10:25
9
0
跟踪记录要先用文本格式保存。如果直接粘贴或存为word格式的话就容易出现网页显示问题。
雪    币: 392
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
starmove 2012-2-25 12:02
10
0
小牛,哈哈!
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jiaxcheng 2012-2-25 13:01
11
0
照猫画虎,我也练习一下,教程太好了
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
cvtth 2012-2-25 13:31
12
0
来看看 学习啦
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
miaomiaowa 2012-4-9 14:31
13
0
不错,学习学习!!
雪    币: 289
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
阳雄俊 2012-4-10 00:12
14
0
不错,学习学习!!
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wflizheng 2012-4-10 07:38
15
0
照着楼主的过程做一遍,嘿嘿,谢谢楼主
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
知乐君子 2012-4-10 09:05
16
0
看看 学习啦
雪    币: 87
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mintomin 2012-4-10 22:30
17
0
向大牛学习了
雪    币: 43
活跃值: (719)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
aerfaxing 2012-4-11 08:18
18
0
不错,收藏了
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tramp九六 2012-4-11 08:56
19
0
很强哦!!!
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
huahaoyuey 2014-3-20 16:24
20
0
挺详细的,多学习
游客
登录 | 注册 方可回帖
返回