vipcrack 发表于 2014-7-25 18:53:18

Sublime Text Build 3059_破解

【破文标题】Sublime Text Build 3059
【破文作者】vipcrack
【破文邮箱】-
【作者主页】-
【破解工具】OD 1.1
【破解平台】WIN7 X64
【软件名称】Sublime Text Build 3059
【软件大小】8.56M
【来源地址】http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%20Build%203059.zip
【保护方式】RSA
【软件简介】
Sublime Text is a sophisticated text editor for code, markup and prose.
You'll love the slick user interface, extraordinary features and amazing performance.
----------------------------------------------
【破解声明】本文仅供交流分析,请勿用于商业用途。
----------------------------------------------
【破解过程】
既然程序显示Unregistered,那么就从Unregistered入手,OD里查找跳转,定位关键点:


00A54AA3   .E8 C7020000            call    00A54D6F                                          ;跟进去找要点
00A54AA8   .83C4 38                add   esp, 0x38
00A54AAB   .803D 908DCF00 00       cmp   byte ptr , 0x0                        ;全局变量
00A54AB2   .0F84 2B010000          je      00A54BE3                                          ;不跳则显示授权
00A54AB8   .8D8D C0FBFFFF          lea   ecx, dword ptr
00A54ABE   .E8 C42BF2FF            call    00977687
00A54AC3   .8365 FC 00             and   dword ptr , 0x0
00A54AC7   .68 26FEC100            push    00C1FE26                                          ; /Arg2 = 00C1FE26
00A54ACC   .68 18FEC100            push    00C1FE18                                          ; |Registered to
00A54AD1   .8D8D C0FBFFFF          lea   ecx, dword ptr                         ; |
00A54AD7   .E8 C03BF2FF            call    0097869C                                          ; \sublime_.001D869C
00A54ADC   .68 74DFCB00            push    00CBDF74                                          ; /Arg1 = 00CBDF74
00A54AE1   .8D8D B0FBFFFF          lea   ecx, dword ptr                         ; |
00A54AE7   .E8 4624F2FF            call    00976F32                                          ; \sublime_.001D6F32
00A54AEC   .FFB5 B4FBFFFF          push    dword ptr                            ; /Arg2
00A54AF2   .8D8D C0FBFFFF          lea   ecx, dword ptr                         ; |
00A54AF8   .FFB5 B0FBFFFF          push    dword ptr                            ; |Arg1
00A54AFE   .E8 993BF2FF            call    0097869C                                          ; \sublime_.001D869C
00A54B03   .8D8D C0FBFFFF          lea   ecx, dword ptr
00A54B09   .E8 043AF2FF            call    00978512
00A54B0E   .DD85 A0FBFFFF          fld   qword ptr
00A54B14   .FFB5 C8FBFFFF          push    dword ptr
00A54B1A   .DD05 6891C100          fld   qword ptr
00A54B20   .DCC1                   fadd    st(1), st
00A54B22   .C785 BCFBFFFF FFFFFFFF mov   dword ptr , -0x1
00A54B2C   .FFB5 BCFBFFFF          push    dword ptr
00A54B32   .D9C9                   fxch    st(1)
00A54B34   .8DB5 80FBFFFF          lea   esi, dword ptr
00A54B3A   .FFB3 B4000000          push    dword ptr
00A54B40   .DD95 A0FBFFFF          fst   qword ptr
00A54B46   .DEC1                   faddp   st(1), st
00A54B48   .83EC 28                sub   esp, 0x28
00A54B4B   .DD5C24 20            fstp    qword ptr
00A54B4F   .6A 08                  push    0x8
00A54B51   .59                     pop   ecx
00A54B52   .8BFC                   mov   edi, esp
00A54B54   .FFB5 B8FBFFFF          push    dword ptr
00A54B5A   .F3:A5                  rep   movs dword ptr es:, dword ptr
00A54B5C   .E8 0E020000            call    00A54D6F
00A54B61   .FF35 948DCF00          push    dword ptr
00A54B67   .8D45 D8                lea   eax, dword ptr
00A54B6A   .50                     push    eax
00A54B6B   .E8 32091700            call    00BC54A2
00A54B70   .83C4 40                add   esp, 0x40
00A54B73   .8378 14 10             cmp   dword ptr , 0x10
00A54B77   .C645 FC 01             mov   byte ptr , 0x1
00A54B7B   .72 02                  jb      short 00A54B7F
00A54B7D   .8B00                   mov   eax, dword ptr
00A54B7F   >DD85 A0FBFFFF          fld   qword ptr
00A54B85   .50                     push    eax
00A54B86   .DC85 A8FBFFFF          fadd    qword ptr
00A54B8C   .C785 BCFBFFFF FFFFFFFF mov   dword ptr , -0x1
00A54B96   .FFB5 BCFBFFFF          push    dword ptr
00A54B9C   .8DB5 80FBFFFF          lea   esi, dword ptr
00A54BA2   .FFB3 B4000000          push    dword ptr
00A54BA8   .DC05 60CBC100          fadd    qword ptr
00A54BAE   .83EC 28                sub   esp, 0x28
00A54BB1   .DD5C24 20            fstp    qword ptr
00A54BB5   .6A 08                  push    0x8
00A54BB7   .59                     pop   ecx
00A54BB8   .8BFC                   mov   edi, esp
00A54BBA   .FFB5 B8FBFFFF          push    dword ptr
00A54BC0   .F3:A5                  rep   movs dword ptr es:, dword ptr
00A54BC2   .E8 A8010000            call    00A54D6F
00A54BC7   .83C4 38                add   esp, 0x38
00A54BCA   .8D4D D8                lea   ecx, dword ptr
00A54BCD   .E8 7DCFF1FF            call    00971B4F
00A54BD2   .834D FC FF             or      dword ptr , 0xFFFFFFFF
00A54BD6   .8D8D C0FBFFFF          lea   ecx, dword ptr
00A54BDC   .E8 B92AF2FF            call    0097769A
00A54BE1   .EB 4D                  jmp   short 00A54C30
00A54BE3   >DD85 A0FBFFFF          fld   qword ptr
00A54BE9   .68 28FEC100            push    00C1FE28                                          ;Unregistered
00A54BEE   .DD05 6891C100          fld   qword ptr
00A54BF4   .C785 BCFBFFFF FFFFFFFF mov   dword ptr , -0x1
00A54BFE   .FFB5 BCFBFFFF          push    dword ptr
00A54C04   .DCC1                   fadd    st(1), st
00A54C06   .8DB5 80FBFFFF          lea   esi, dword ptr
00A54C0C   .FFB3 B4000000          push    dword ptr
00A54C12   .DEC1                   faddp   st(1), st
00A54C14   .83EC 28                sub   esp, 0x28
00A54C17   .DD5C24 20            fstp    qword ptr
00A54C1B   .6A 08                  push    0x8
00A54C1D   .59                     pop   ecx
00A54C1E   .8BFC                   mov   edi, esp
跟入之后,发现没有修改全局变量的内容:
00A54D6F      55                     push    ebp
00A54D70      8BEC                   mov   ebp, esp
00A54D72      51                     push    ecx
00A54D73      FF75 3C                push    dword ptr
00A54D76|.FF75 34                push    dword ptr
00A54D79|.E8 5461F3FF            call    0098AED2
00A54D7E|.D95D FC                fstp    dword ptr
00A54D81|.D945 FC                fld   dword ptr
00A54D84|.83C4 04                add   esp, 0x4
00A54D87|.D91C24               fstp    dword ptr
00A54D8A|.E8 CA62F3FF            call    0098B059
00A54D8F|.DD45 1C                fld   qword ptr
00A54D92|.51                     push    ecx
00A54D93|.DC65 0C                fsub    qword ptr
00A54D96|.DD05 082FC100          fld   qword ptr
00A54D9C|.DCC9                   fmul    st(1), st
00A54D9E|.DECA                   fmulp   st(2), st
00A54DA0|.DEE1                   fsubrpst(1), st
00A54DA2|.DD1C24               fstp    qword ptr
00A54DA5|.E8 269C0100            call    00A6E9D0
00A54DAA|.DD45 2C                fld   qword ptr
00A54DAD|.59                     pop   ecx
00A54DAE|.59                     pop   ecx
00A54DAF|.D9C9                   fxch    st(1)
00A54DB1|.FF75 3C                push    dword ptr
00A54DB4|.8B4D 08                mov   ecx, dword ptr
00A54DB7|.FF75 38                push    dword ptr
00A54DBA|.8B11                   mov   edx, dword ptr
00A54DBC|.83EC 10                sub   esp, 0x10
00A54DBF|.8BC4                   mov   eax, esp
00A54DC1|.FF75 34                push    dword ptr
00A54DC4|.DD18                   fstp    qword ptr
00A54DC6|.DD58 08                fstp    qword ptr
00A54DC9|.FF52 08                call    dword ptr
00A54DCC|.C9                     leave
00A54DCD\.C3                     retn
那么我们就直接搜索全局常量
参考位于 sublime_:.text 到常量 0xCF8D90
地址       反汇编                                    注释
00A0CF14   mov   byte ptr , al
00A0CF5B   mov   byte ptr , al
00A0CF77   mov   al, byte ptr          =01
00A0D223   cmp   byte ptr , 0x0          ds:=01
00A0D44B   cmp   byte ptr , 0x0          ds:=01
00A0DE29   and   byte ptr , al
00A0EF54   mov   al, byte ptr          =01
00A210EA   cmp   byte ptr , bl
00A33F76   cmp   byte ptr , 0x0          ds:=01
00A34394   mov   byte ptr , bl
00A343D9   sete    byte ptr                ds:=01
00A345C3   mov   byte ptr , bl
00A35638   cmp   byte ptr , 0x0          ds:=01
00A48279   mov   al, byte ptr          =01
00A48283   cmp   byte ptr , al
00A54AAB   cmp   byte ptr , 0x0          (初始 CPU 选择)

从查表结果可以更加确定,全局变量是准确的。
找赋值的看看:

00A0CF06   .E8 A2660200            call    00A335AD                         ;多次调用,
00A0CF0B   .83C4 14                add   esp, 0x14
00A0CF0E   .F7D8                   neg   eax
00A0CF10   .1AC0                   sbb   al, al
00A0CF12   .FEC0                   inc   al
00A0CF14   .A2 908DCF00            mov   byte ptr , al          ;修改全局变量
00A0CF19   .75 4E                  jnz   short 00A0CF69
00A0CF1B   .8365 E8 00             and   dword ptr , 0x0
00A0CF1F   .57                     push    edi
00A0CF20   .56                     push    esi
00A0CF21   .8D4D D8                lea   ecx, dword ptr
00A0CF24   .C745 EC 0F000000       mov   dword ptr , 0xF
00A0CF2B   .C645 D8 00             mov   byte ptr , 0x0
00A0CF2F   .E8 2A61F6FF            call    0097305E
00A0CF34   .8D45 9C                lea   eax, dword ptr
00A0CF37   .50                     push    eax
00A0CF38   .68 948DCF00            push    00CF8D94
00A0CF3D   .8D45 D8                lea   eax, dword ptr
00A0CF40   .68 74DFCB00            push    00CBDF74
00A0CF45   .50                     push    eax
00A0CF46   .C645 FC 01             mov   byte ptr , 0x1
00A0CF4A   .E8 5E660200            call    00A335AD                         ;多次调用
00A0CF4F   .83C4 10                add   esp, 0x10
00A0CF52   .F7D8                   neg   eax
00A0CF54   .1AC0                   sbb   al, al
00A0CF56   .FEC0                   inc   al
00A0CF58   .8D4D D8                lea   ecx, dword ptr
00A0CF5B   .A2 908DCF00            mov   byte ptr , al          ;修改全局变量
00A0CF60   .C645 FC 00             mov   byte ptr , 0x0
00A0CF64   .E8 E64BF6FF            call    00971B4F
00A0CF69   >FF35 0897CB00          push    dword ptr                               ; /Arg1 = 00C1956C ASCII "licensed"
前面这两个调用我们可以调试发现,只要修改CALL返回的EAX=0,即可实现给全局变量赋值1,那么实际修改后的程序,是否能完成破解呢?
继续往下看,有个比较巧妙的and计算就直接干掉了我们这种想法……

直接跟入call    00A335AD
00A335AD/$68 80000000            push    0x80
00A335B2|.B8 6A9FBF00            mov   eax, 00BF9F6A
00A335B7|.E8 43670300            call    00A69CFF
00A335BC|.8B45 10                mov   eax, dword ptr
00A335BF|.8B75 08                mov   esi, dword ptr
00A335C2|.8B5D 0C                mov   ebx, dword ptr
00A335C5|.8985 7CFFFFFF          mov   dword ptr , eax
00A335CB|.8B45 14                mov   eax, dword ptr
00A335CE|.8985 74FFFFFF          mov   dword ptr , eax
00A335D4|.8D45 98                lea   eax, dword ptr
00A335D7|.50                     push    eax
00A335D8|.E8 D0080000            call    00A33EAD
00A335DD|.33C9                   xor   ecx, ecx
00A335DF|.6A 0F                  push    0xF
00A335E1|.58                     pop   eax
00A335E2|.894D FC                mov   dword ptr , ecx
00A335E5|.8945 94                mov   dword ptr , eax
00A335E8|.894D 90                mov   dword ptr , ecx
00A335EB|.884D 80                mov   byte ptr , cl
00A335EE|.8945 C4                mov   dword ptr , eax
00A335F1|.894D C0                mov   dword ptr , ecx
00A335F4|.884D B0                mov   byte ptr , cl
00A335F7|.8945 DC                mov   dword ptr , eax
00A335FA|.894D D8                mov   dword ptr , ecx
00A335FD|.884D C8                mov   byte ptr , cl
00A33600|.8D45 C8                lea   eax, dword ptr
00A33603|.50                     push    eax
00A33604|.8D45 B0                lea   eax, dword ptr
00A33607|.50                     push    eax
00A33608|.8D85 78FFFFFF          lea   eax, dword ptr
00A3360E|.50                     push    eax
00A3360F|.8D45 80                lea   eax, dword ptr
00A33612|.50                     push    eax
00A33613|.8D45 98                lea   eax, dword ptr
00A33616|.50                     push    eax
00A33617|.56                     push    esi
00A33618|.C645 FC 03             mov   byte ptr , 0x3
00A3361C|.8BF9                   mov   edi, ecx
00A3361E|.E8 F81F1900            call    00BC561B
00A33623|.83C4 1C                add   esp, 0x1C
00A33626|.84C0                   test    al, al
00A33628|.75 01                  jnz   short 00A3362B
00A3362A|.47                     inc   edi
00A3362B|>837D AC 10             cmp   dword ptr , 0x10
00A3362F|.8B45 98                mov   eax, dword ptr
00A33632|.73 03                  jnb   short 00A33637
00A33634|.8D45 98                lea   eax, dword ptr
00A33637|>8D4D E0                lea   ecx, dword ptr
00A3363A|.51                     push    ecx
00A3363B|.FF75 A8                push    dword ptr
00A3363E|.50                     push    eax
00A3363F|.E8 F7351300            call    00B66C3B
00A33644|.83C4 0C                add   esp, 0xC
00A33647|.807D E1 5B             cmp   byte ptr , 0x5B
00A3364B|.74 03                  je      short 00A33650
00A3364D|.33FF                   xor   edi, edi
00A3364F|.47                     inc   edi
00A33650|>85FF                   test    edi, edi
00A33652|.0F85 9A060000          jnz   00A33CF2
00A33658|.BE 1CBEC100            mov   esi, 00C1BE1C                                     ;EA7E
00A3365D|.56                     push    esi                                             ; /Arg1 => 00C1BE1C ASCII "EA7E"
00A3365E|.E8 3C06F4FF            call    00973C9F                                          ; \sublime_.001D3C9F
00A33663|.59                     pop   ecx
00A33664|.50                     push    eax
00A33665|.56                     push    esi
00A33666|.FF75 C0                push    dword ptr
00A33669|.8D4D B0                lea   ecx, dword ptr
00A3366C|.57                     push    edi
00A3366D|.E8 DB84F4FF            call    0097BB4D
00A33672|.85C0                   test    eax, eax
00A33674|.74 06                  je      short 00A3367C
00A33676|.47                     inc   edi
00A33677|.E9 76060000            jmp   00A33CF2
00A3367C|>837D DC 10             cmp   dword ptr , 0x10
00A33680|.8B45 C8                mov   eax, dword ptr
00A33683|.73 03                  jnb   short 00A33688
00A33685|.8D45 C8                lea   eax, dword ptr
00A33688|>50                     push    eax                                             ; /Arg1
00A33689|.E8 1EB80300            call    00A6EEAC                                          ; \sublime_.002CEEAC
00A3368E|.59                     pop   ecx
00A3368F|.3D 241C0C00            cmp   eax, 0xC1C24
00A33694|.0F84 55060000          je      00A33CEF
00A3369A|.3D 231C0C00            cmp   eax, 0xC1C23
00A3369F|.0F84 4A060000          je      00A33CEF
00A336A5|.3D 261C0C00            cmp   eax, 0xC1C26
00A336AA|.0F84 3F060000          je      00A33CEF
00A336B0|.3D 1C1C0C00            cmp   eax, 0xC1C1C
00A336B5|.0F84 34060000          je      00A33CEF
00A336BB|.3D A21A0C00            cmp   eax, 0xC1AA2
00A336C0|.0F84 29060000          je      00A33CEF
00A336C6|.3D 5C1C0C00            cmp   eax, 0xC1C5C
00A336CB|.0F84 1E060000          je      00A33CEF
00A336D1|.3D 591C0C00            cmp   eax, 0xC1C59
00A336D6|.0F84 13060000          je      00A33CEF
00A336DC|.3D 9B1C0C00            cmp   eax, 0xC1C9B
本地调用来自 00A0CF06, 00A0CF4A, 00A0DE1D, 00A343CF
看看这些调用,在调用完成后如何修改全局变量的,前两个在上面有代码,后两个如下:
第3处:
00A0DD6F/$6A 7C                  push    0x7C
00A0DD71|.B8 1151BF00            mov   eax, 00BF5111
00A0DD76|.E8 84BF0500            call    00A69CFF
00A0DD7B|.68 B492C100            push    00C192B4                                          ; /EA7E-1000\n
00A0DD80|.8D8D 78FFFFFF          lea   ecx, dword ptr                          ; |
00A0DD86|.E8 E039F6FF            call    0097176B                                          ; \sublime_.001D176B
00A0DD8B|.8BF8                   mov   edi, eax
00A0DD8D|.33DB                   xor   ebx, ebx
00A0DD8F|.68 C092C100            push    00C192C0                                          ; /Unlimited User License\n
00A0DD94|.8D4D A8                lea   ecx, dword ptr                          ; |
00A0DD97|.895D FC                mov   dword ptr , ebx                        ; |
00A0DD9A|.E8 CC39F6FF            call    0097176B                                          ; \sublime_.001D176B
00A0DD9F|.8BF0                   mov   esi, eax
00A0DDA1|.68 D892C100            push    00C192D8                                          ; /Invalid Key\n
00A0DDA6|.8D4D C0                lea   ecx, dword ptr                          ; |
00A0DDA9|.C645 FC 01             mov   byte ptr , 0x1                           ; |
00A0DDAD|.E8 B939F6FF            call    0097176B                                          ; \sublime_.001D176B
00A0DDB2|.56                     push    esi
00A0DDB3|.50                     push    eax
00A0DDB4|.8D45 90                lea   eax, dword ptr
00A0DDB7|.50                     push    eax
00A0DDB8|.C645 FC 02             mov   byte ptr , 0x2
00A0DDBC|.E8 8272FBFF            call    009C5043
00A0DDC1|.57                     push    edi
00A0DDC2|.50                     push    eax
00A0DDC3|.8D45 D8                lea   eax, dword ptr
00A0DDC6|.50                     push    eax
00A0DDC7|.C645 FC 03             mov   byte ptr , 0x3
00A0DDCB|.E8 7372FBFF            call    009C5043
00A0DDD0|.83C4 18                add   esp, 0x18
00A0DDD3|.8D4D 90                lea   ecx, dword ptr
00A0DDD6|.E8 743DF6FF            call    00971B4F
00A0DDDB|.8D4D C0                lea   ecx, dword ptr
00A0DDDE|.E8 6C3DF6FF            call    00971B4F
00A0DDE3|.8D4D A8                lea   ecx, dword ptr
00A0DDE6|.E8 643DF6FF            call    00971B4F
00A0DDEB|.8D8D 78FFFFFF          lea   ecx, dword ptr
00A0DDF1|.C645 FC 08             mov   byte ptr , 0x8
00A0DDF5|.E8 553DF6FF            call    00971B4F
00A0DDFA|.6A 09                  push    0x9
00A0DDFC|.5E                     pop   esi
00A0DDFD|.BF E892C100            mov   edi, 00C192E8                                     ;00000000000000000000000000000000\n
00A0DE02|>57                     /push    edi                                              ; /Arg1
00A0DE03|.E8 975EF6FF            |call    00973C9F                                       ; \sublime_.001D3C9F
00A0DE08|.59                     |pop   ecx
00A0DE09|.50                     |push    eax
00A0DE0A|.57                     |push    edi
00A0DE0B|.8D4D D8                |lea   ecx, dword ptr
00A0DE0E|.E8 C650F6FF            |call    00972ED9
00A0DE13|.4E                     |dec   esi
00A0DE14|.^ 75 EC                  \jnz   short 00A0DE02
00A0DE16|.53                     push    ebx
00A0DE17|.53                     push    ebx
00A0DE18|.8D45 D8                lea   eax, dword ptr
00A0DE1B|.53                     push    ebx
00A0DE1C|.50                     push    eax
00A0DE1D|.E8 8B570200            call    00A335AD
00A0DE22|.83C4 10                add   esp, 0x10
00A0DE25|.F7D8                   neg   eax
00A0DE27|.1AC0                   sbb   al, al
00A0DE29|.2005 908DCF00          and   byte ptr , al ;与前面1,2个CALL调用后的内存数据再次and计算,最终确定全局变量结果,这个and方式不错。
                                  ;前面调用我们修改了EAX来让全局变量为1,再次调用如果还是返回EAX=0,则会修改全局为未授权。
00A0DE2F|.8D4D D8                lea   ecx, dword ptr
00A0DE32|.E8 183DF6FF            call    00971B4F
00A0DE37|.E8 72BE0500            call    00A69CAE
00A0DE3C\.C3                     retn

第4处:
00A343CF   .E8 D9F1FFFF            call    00A335AD
00A343D4   .83C4 10                add   esp, 0x10
00A343D7   .85C0                   test    eax, eax
00A343D9   .0F9405 908DCF00      sete    byte ptr                                ;设置全局变量,并根据EAX的数值跳转判断授权码是否正确等
00A343E0   .85C0                   test    eax, eax                                          ;Switch (cases 0..3)
00A343E2   .0F85 E4000000          jnz   00A344CC
00A343E8   .8D45 D8                lea   eax, dword ptr                          ;Case 0 of switch 00A343E0
00A343EB   .50                     push    eax
00A343EC   .E8 C7F9FFFF            call    00A33DB8
00A343F1   .8D45 A8                lea   eax, dword ptr
00A343F4   .50                     push    eax
00A343F5   .E8 30FBFFFF            call    00A33F2A
00A343FA   .59                     pop   ecx
00A343FB   .59                     pop   ecx
00A343FC   .8B4D D8                mov   ecx, dword ptr
00A343FF   .C645 FC 03             mov   byte ptr , 0x3
00A34403   .397D EC                cmp   dword ptr , edi
00A34406   .73 03                  jnb   short 00A3440B
00A34408   .8D4D D8                lea   ecx, dword ptr
00A3440B   >3978 14                cmp   dword ptr , edi
00A3440E   .72 02                  jb      short 00A34412
00A34410   .8B00                   mov   eax, dword ptr
00A34412   >6A 01                  push    0x1                                             ; /Arg5 = 00000001
00A34414   .53                     push    ebx                                             ; |Arg4
00A34415   .FF75 E8                push    dword ptr                               ; |Arg3
00A34418   .51                     push    ecx                                             ; |Arg2
00A34419   .50                     push    eax                                             ; |Arg1
00A3441A   .E8 B055F4FF            call    009799CF                                          ; \sublime_.001D99CF
00A3441F   .8AD8                   mov   bl, al
00A34421   .83C4 14                add   esp, 0x14
00A34424   .F6DB                   neg   bl
00A34426   .8D4D A8                lea   ecx, dword ptr
00A34429   .1ADB                   sbb   bl, bl
00A3442B   .C645 FC 02             mov   byte ptr , 0x2
00A3442F   .E8 1BD7F3FF            call    00971B4F
00A34434   .FEC3                   inc   bl
00A34436   .74 4E                  je      short 00A34486
00A34438   .8D45 C0                lea   eax, dword ptr
00A3443B   .50                     push    eax
00A3443C   .E8 E9FAFFFF            call    00A33F2A
00A34441   .50                     push    eax
00A34442   .8D45 A8                lea   eax, dword ptr
00A34445   .68 ACBFC100            push    00C1BFAC                                          ;Unable to write license file:
00A3444A   .50                     push    eax
00A3444B   .C645 FC 04             mov   byte ptr , 0x4
00A3444F   .E8 3D95F6FF            call    0099D991
00A34454   .83C4 10                add   esp, 0x10
00A34457   .C645 FC 05             mov   byte ptr , 0x5
00A3445B   .3978 14                cmp   dword ptr , edi
00A3445E   .72 02                  jb      short 00A34462
00A34460   .8B00                   mov   eax, dword ptr
00A34462   >50                     push    eax
00A34463   .8BCE                   mov   ecx, esi
00A34465   .E8 503C1400            call    00B780BA
00A3446A   .50                     push    eax
00A3446B   .E8 CE6B1300            call    00B6B03E
00A34470   .59                     pop   ecx
00A34471   .59                     pop   ecx
00A34472   .8D4D A8                lea   ecx, dword ptr
00A34475   .E8 D5D6F3FF            call    00971B4F
00A3447A   .8D4D C0                lea   ecx, dword ptr
00A3447D   .C645 FC 02             mov   byte ptr , 0x2
00A34481   .E8 C9D6F3FF            call    00971B4F
00A34486   >8B7D 8C                mov   edi, dword ptr
00A34489   .57                     push    edi                                             ; /Arg1
00A3448A   .E8 87FBFFFF            call    00A34016                                          ; \sublime_.00294016
00A3448F   .59                     pop   ecx
00A34490   .81FF F00D0C00          cmp   edi, 0xC0DF0
00A34496   .7E 08                  jle   short 00A344A0
00A34498   .81FF 0CF20C00          cmp   edi, 0xCF20C
00A3449E   .7C 0D                  jl      short 00A344AD
00A344A0   >8D87 9F51F5FF          lea   eax, dword ptr
00A344A6   .3D E6030000            cmp   eax, 0x3E6
00A344AB   .77 07                  ja      short 00A344B4
00A344AD   >68 D0BFC100            push    00C1BFD0                                          ;Thanks for trying out Sublime Text 3!\n\nSublime Text 3 is a paid upgrade from Sublime Text 2, and an upgrade will be required for use when 3.0 is released.\n\nUntil then, please enjoy Sublime Text 3 Beta.
00A344B2   .EB 05                  jmp   short 00A344B9
00A344B4   >68 9CC0C100            push    00C1C09C                                          ;Thanks for purchasing!
00A344B9   >8BCE                   mov   ecx, esi
00A344BB   .E8 FA3B1400            call    00B780BA
00A344C0   .50                     push    eax
00A344C1   .E8 786B1300            call    00B6B03E
00A344C6   .59                     pop   ecx
00A344C7   .59                     pop   ecx
00A344C8   .33DB                   xor   ebx, ebx
00A344CA   .EB 5B                  jmp   short 00A34527
00A344CC   >83F8 01                cmp   eax, 0x1
00A344CF   .75 07                  jnz   short 00A344D8
00A344D1   .68 B8C0C100            push    00C1C0B8                                          ;That license key doesn't appear to be valid.\n\nPlease check that you have entered all lines from the license key, including the BEGIN LICENSE and END LICENSE lines.; Case 1 of switch 00A343E0
00A344D6   .EB 16                  jmp   short 00A344EE
00A344D8   >83F8 02                cmp   eax, 0x2
00A344DB   .75 07                  jnz   short 00A344E4
00A344DD   .68 5CC1C100            push    00C1C15C                                          ;That license key is no longer valid.; Case 2 of switch 00A343E0
00A344E2   .EB 0A                  jmp   short 00A344EE
00A344E4   >83F8 03                cmp   eax, 0x3
00A344E7   .75 3E                  jnz   short 00A34527
00A344E9   .68 88C1C100            push    00C1C188                                          ;That license key has been invalidated, due to being shared.\n\nPlease email [email protected] to get your license key reissued.; Case 3 of switch 00A343E0
00A344EE   >8BCE                   mov   ecx, esi
00A344F0   .E8 C53B1400            call    00B780BA
00A344F5   .50                     push    eax
00A344F6   .E8 846A1300            call    00B6AF7F
00A344FB   .59                     pop   ecx
00A344FC   .59                     pop   ecx
00A344FD   .EB 28                  jmp   short 00A34527
00A344FF   >8D45 C0                lea   eax, dword ptr
00A34502   .50                     push    eax
00A34503   .E8 22FAFFFF            call    00A33F2A
00A34508   .59                     pop   ecx
00A34509   .C645 FC 06             mov   byte ptr , 0x6
00A3450D   .3978 14                cmp   dword ptr , edi
00A34510   .72 02                  jb      short 00A34514
00A34512   .8B00                   mov   eax, dword ptr
00A34514   >50                     push    eax
00A34515   .E8 DD43F4FF            call    009788F7
00A3451A   .59                     pop   ecx
00A3451B   .8D4D C0                lea   ecx, dword ptr
00A3451E   .C645 FC 02             mov   byte ptr , 0x2
00A34522   .E8 28D6F3FF            call    00971B4F
00A34527   >399E D0000000          cmp   dword ptr , ebx                         ;Default case of switch 00A343E0
00A3452D   .74 14                  je      short 00A34543
00A3452F   .8B8E D0000000          mov   ecx, dword ptr
00A34535   .85C9                   test    ecx, ecx
00A34537   .75 05                  jnz   short 00A3453E
00A34539   .E8 9F2E0300            call    00A673DD
00A3453E   >8B01                   mov   eax, dword ptr
00A34540   .FF50 08                call    dword ptr
至于其他方面的比较,并不修改全局变量,那么我们可以直接下手修改:
00A0CF12   .B001                   mov   al,1
00A0CF56   .B001                   mov   al,1
00A0DE27      B001                   mov   al,1
00A343D7   00A343D7      C605 908D5B01 01   mov   byte ptr , 0x1
00A343DE      90               nop
00A343DF      90               nop
00A343E0      33C0               xor   eax, eax
00A343E2      90               nop
00A343E3      90               nop
00A343E4      90               nop
00A343E5      90               nop
00A343E6      90               nop
00A343E7      90               nop



保存程序,完成PATCH。

【破解总结】
修改的时候发现不能直接返回0,感觉这种检测还不错,需要修改检测后的数据。
【版权声明】无

左岸麦田 发表于 2014-7-27 00:53:39

感谢楼主CRACK,学习的成果出来了。{:titter:}

andyfeifei 发表于 2014-7-31 15:23:47

支持的哦,改天我也要去学习的了

gujin162 发表于 2014-8-24 13:03:36


你们懂的,楼主好人~~~~~~

cfc1680 发表于 2014-10-7 19:31:18

学习一下了,感谢分享了

阳光宅男 发表于 2014-10-7 21:47:28

感谢分享了,支持啦
页: [1]
查看完整版本: Sublime Text Build 3059_破解