gmh5225 发表于 2014-12-17 23:40

【圣才题库】离线注册码分析

本帖最后由 gmh5225 于 2014-12-18 00:00 编辑

目标:http://tk.100xuexi.com/ 由于马上就要考4级了,找到了这个玩意儿。。。爆破很简单
010B7120/[        DISCUZ_CODE_4        ]nbsp; 55             push    ebp
010B7121|.8BEC         mov   ebp, esp
010B7123|.81EC BC040000sub   esp, 0x4BC
010B7129|.A1 B0D22801    mov   eax, dword ptr
010B712E|.33C5         xor   eax, ebp
010B7130|.8945 FC      mov   dword ptr , eax
010B7133|.8B45 08      mov   eax, dword ptr
010B7136|.53             push    ebx                              ;参数 5机器码长度+1
010B7137|.56             push    esi                              ;参数4 激活码后9位
010B7138|.57             push    edi                              ;参数3 机器码字符串
010B7139|.68 2B010000    push    0x12B                            ;参数2 299空间?
010B713E|.8BF1         mov   esi, ecx
010B7140|.8D8D D1FEFFFFlea   ecx, dword ptr
010B7146|.6A 00          push    0x0                              ;参数1 0
010B7148|.51             push    ecx                              ;参数0 未知
010B7149|.8BFA         mov   edi, edx
010B714B|.8985 48FBFFFFmov   dword ptr , eax
010B7151|.C685 D0FEFFFF >mov   byte ptr , 0x0
010B7158|.E8 23F01100    call    圣才题库.011D6180
010B715D|.68 83030000    push    0x383
010B7162|.8D95 4DFBFFFFlea   edx, dword ptr
010B7168|.6A 00          push    0x0
010B716A|.52             push    edx
010B716B|.C685 4CFBFFFF >mov   byte ptr , 0x0
010B7172|.E8 09F01100    call    圣才题库.011D6180
010B7177|.8BC6         mov   eax, esi
010B7179|.83C4 18      add   esp, 0x18
010B717C|.8D50 01      lea   edx, dword ptr
010B717F|.90             nop
010B7180|>8A08         /mov   cl, byte ptr             ;遍历取机器码
010B7182|.40             |inc   eax
010B7183|.84C9         |test    cl, cl
010B7185|.^ 75 F9          \jnz   short 圣才题库.010B7180
010B7187|.2BC2         sub   eax, edx                         ;得到机器码长度存入eax
010B7189|.8BD0         mov   edx, eax
010B718B|.8BC7         mov   eax, edi                         ;激活码后9位给了eax
010B718D|.8D58 01      lea   ebx, dword ptr
010B7190|>8A08         /mov   cl, byte ptr
010B7192|.40             |inc   eax
010B7193|.84C9         |test    cl, cl
010B7195|.^ 75 F9          \jnz   short 圣才题库.010B7190             ;遍历取激活码
010B7197|.2BC3         sub   eax, ebx                         ;得到激活码后9位的长度存入eax
010B7199|.8D4410 01      lea   eax, dword ptr    ;把2个字符串的长度相加再加1存入eax13
010B719D|.50             push    eax                              ;参数 2字符串的长度+1
010B719E|.8985 44FBFFFFmov   dword ptr , eax
010B71A4|.E8 4BC41100    call    圣才题库.011D35F4
010B71A9|.8BD8         mov   ebx, eax
010B71AB|.8BD3         mov   edx, ebx
010B71AD|.83C4 04      add   esp, 0x4
010B71B0|.8BC6         mov   eax, esi                         ;机器码给eax
010B71B2|.2BD6         sub   edx, esi
010B71B4|>8A08         /mov   cl, byte ptr
010B71B6|.880C02         |mov   byte ptr , cl
010B71B9|.40             |inc   eax
010B71BA|.84C9         |test    cl, cl
010B71BC|.^ 75 F6          \jnz   short 圣才题库.010B71B4             ;这里把机器码存入一个字符串中
010B71BE|.8BC7         mov   eax, edi                         ;激活码后9位
010B71C0|.8BD7         mov   edx, edi
010B71C2|>8A08         /mov   cl, byte ptr
010B71C4|.40             |inc   eax
010B71C5|.84C9         |test    cl, cl
010B71C7|.^ 75 F9          \jnz   short 圣才题库.010B71C2
010B71C9|.2BC2         sub   eax, edx                         ;遍历 激活码长度+1    10
010B71CB|.8D7B FF      lea   edi, dword ptr          ;把激活码后9位给edi
010B71CE|.8BFF         mov   edi, edi
010B71D0|>8A4F 01      /mov   cl, byte ptr
010B71D3|.47             |inc   edi
010B71D4|.84C9         |test    cl, cl
010B71D6|.^ 75 F8          \jnz   short 圣才题库.010B71D0
010B71D8|.8BC8         mov   ecx, eax
010B71DA|.C1E9 02      shr   ecx, 0x2                         ;右移动 10   -》2
010B71DD|.8BF2         mov   esi, edx                         ;把激活码后9位数据给esi
010B71DF|.F3:A5          rep   movs dword ptr es:, dword p>
010B71E1|.8BC8         mov   ecx, eax                         ;长度10给ecx
010B71E3|.83E1 03      and   ecx, 0x3                         ;10+3给ecx
010B71E6|.8D85 4CFBFFFFlea   eax, dword ptr
010B71EC|.50             push    eax                              ;此时的ebx是机器码+激活码后9位的前8位
010B71ED|.F3:A4          rep   movs byte ptr es:, byte ptr>
010B71EF|.8B8D 44FBFFFFmov   ecx, dword ptr        ;此时的ebx是机器码+激活码后9位 ecx是新的字符串的长度17位
010B71F5|.53             push    ebx                              ;压入合并的字符串与真码进行比较
010B71F6|.E8 7557FCFF    call    圣才题库.0107C970
这时我们进入0107C970
0107C970/[        DISCUZ_CODE_5        ]nbsp; 55             push    ebp
0107C971|.8BEC         mov   ebp, esp
0107C973|.81EC D8010000sub   esp, 0x1D8
0107C979|.A1 B0D22801    mov   eax, dword ptr
0107C97E|.33C5         xor   eax, ebp
0107C980|.8945 FC      mov   dword ptr , eax
0107C983|.8B45 0C      mov   eax, dword ptr
0107C986|.53             push    ebx                              ;压 机器码+激活码的后9位
0107C987|.56             push    esi
0107C988|.8BF1         mov   esi, ecx                         ;新的字符串的长度给13
0107C98A|.8D1CF5 0000000>lea   ebx, dword ptr          ;13*88个字节??
0107C991|.8D4B 02      lea   ecx, dword ptr          ;98+2
0107C994|.57             push    edi                              ;7400
0107C995|.51             push    ecx                              ;9A
0107C996|.89B5 34FEFFFFmov   dword ptr , esi       ;新的字符串长度
0107C99C|.8985 2CFEFFFFmov   dword ptr , eax       ;暂时是0
0107C9A2|.899D 28FEFFFFmov   dword ptr , ebx       ;98
0107C9A8|.E8 476C1500    call    圣才题库.011D35F4                  ;未知
0107C9AD|.8985 30FEFFFFmov   dword ptr , eax
0107C9B3|.83C4 04      add   esp, 0x4
0107C9B6|.8D45 BC      lea   eax, dword ptr
0107C9B9|.E8 62FFFFFF    call    圣才题库.0107C920
0107C9BE|.33FF         xor   edi, edi
0107C9C0|.33C0         xor   eax, eax
0107C9C2|>0FBE4C05 BC    /movsx   ecx, byte ptr
0107C9C7|.0FBE5405 BF    |movsx   edx, byte ptr
0107C9CC|.03D1         |add   edx, ecx
0107C9CE|.0FBE4C05 BE    |movsx   ecx, byte ptr
0107C9D3|.03D1         |add   edx, ecx
0107C9D5|.0FBE4C05 BD    |movsx   ecx, byte ptr
0107C9DA|.03D1         |add   edx, ecx
0107C9DC|.89BC05 3CFFFFF>|mov   dword ptr , edi
0107C9E3|.019405 3CFFFFF>|add   dword ptr , edx
0107C9EA|.83C0 04      |add   eax, 0x4
0107C9ED|.83F8 40      |cmp   eax, 0x40
0107C9F0|.^ 7C D0          \jl      short 圣才题库.0107C9C2
0107C9F2|.8A85 3CFFFFFFmov   al, byte ptr
0107C9F8|.8B95 40FFFFFFmov   edx, dword ptr
0107C9FE|.8B8D 48FFFFFFmov   ecx, dword ptr
0107CA04|.0FBEC0         movsx   eax, al
0107CA07|.8985 40FFFFFFmov   dword ptr , eax
0107CA0D|.8A85 44FFFFFFmov   al, byte ptr
0107CA13|.8995 3CFFFFFFmov   dword ptr , edx
0107CA19|.0FBED0         movsx   edx, al
0107CA1C|.8A85 4CFFFFFFmov   al, byte ptr
0107CA22|.8995 48FFFFFFmov   dword ptr , edx
0107CA28|.0FBED0         movsx   edx, al
0107CA2B|.8A85 54FFFFFFmov   al, byte ptr
0107CA31|.898D 44FFFFFFmov   dword ptr , ecx
0107CA37|.8B8D 50FFFFFFmov   ecx, dword ptr
0107CA3D|.8995 50FFFFFFmov   dword ptr , edx
0107CA43|.0FBED0         movsx   edx, al
0107CA46|.8A85 5CFFFFFFmov   al, byte ptr
0107CA4C|.898D 4CFFFFFFmov   dword ptr , ecx
0107CA52|.8B8D 58FFFFFFmov   ecx, dword ptr
0107CA58|.8995 58FFFFFFmov   dword ptr , edx
0107CA5E|.0FBED0         movsx   edx, al
0107CA61|.8A85 64FFFFFFmov   al, byte ptr
0107CA67|.898D 54FFFFFFmov   dword ptr , ecx
0107CA6D|.8B8D 60FFFFFFmov   ecx, dword ptr
0107CA73|.8995 60FFFFFFmov   dword ptr , edx
0107CA79|.0FBED0         movsx   edx, al
0107CA7C|.8A85 6CFFFFFFmov   al, byte ptr
0107CA82|.898D 5CFFFFFFmov   dword ptr , ecx
0107CA88|.8B8D 68FFFFFFmov   ecx, dword ptr
0107CA8E|.8995 68FFFFFFmov   dword ptr , edx
0107CA94|.0FBED0         movsx   edx, al
0107CA97|.8A85 74FFFFFFmov   al, byte ptr
0107CA9D|.898D 64FFFFFFmov   dword ptr , ecx
0107CAA3|.8B8D 70FFFFFFmov   ecx, dword ptr
0107CAA9|.8995 70FFFFFFmov   dword ptr , edx
0107CAAF|.0FBED0         movsx   edx, al
0107CAB2|.898D 6CFFFFFFmov   dword ptr , ecx
0107CAB8|.8B8D 78FFFFFFmov   ecx, dword ptr
0107CABE|.898D 74FFFFFFmov   dword ptr , ecx
0107CAC4|.8995 78FFFFFFmov   dword ptr , edx
0107CACA|.3BF7         cmp   esi, edi
0107CACC|.7E 4B          jle   short 圣才题库.0107CB19
0107CACE|.8BB5 30FEFFFFmov   esi, dword ptr
0107CAD4|.83C6 07      add   esi, 0x7
0107CAD7|.89B5 38FEFFFFmov   dword ptr , esi
0107CADD|.8D49 00      lea   ecx, dword ptr
0107CAE0|>8B45 08      /mov   eax, dword ptr       ;eax=新的字符串
0107CAE3|.8A1407         |mov   dl, byte ptr           ;取每个字符的ascii第一个是6,acsii是54
0107CAE6|.33C0         |xor   eax, eax
0107CAE8|>8AC8         |/mov   cl, al
0107CAEA|.8ADA         ||mov   bl, dl
0107CAEC|.D2FB         ||sar   bl, cl                         ;ebx=36>>eax
0107CAEE|.40             ||inc   eax
0107CAEF|.4E             ||dec   esi
0107CAF0|.80E3 01      ||and   bl, 0x1                        ;取与运算,偶数就是0,奇数是1,第一次是54是偶数是0
0107CAF3|.885E 01      ||mov   byte ptr , bl         ;每次取得的二进制数都存入数组中
0107CAF6|.83F8 08      ||cmp   eax, 0x8
0107CAF9|.^ 7C ED          |\jl      short 圣才题库.0107CAE8
0107CAFB|.8BB5 38FEFFFF|mov   esi, dword ptr
0107CB01|.47             |inc   edi
0107CB02|.83C6 08      |add   esi, 0x8
0107CB05|.89B5 38FEFFFF|mov   dword ptr , esi
0107CB0B|.3BBD 34FEFFFF|cmp   edi, dword ptr       ;这里是循环字符串长度的次数,也就是13次
0107CB11|.^ 7C CD          \jl      short 圣才题库.0107CAE0
0107CB13|.8B9D 28FEFFFFmov   ebx, dword ptr        ;98给ebx
0107CB19|>33F6         xor   esi, esi
0107CB1B|.89B5 38FEFFFFmov   dword ptr , esi
0107CB21|.3BDE         cmp   ebx, esi                         ;98《=0?
0107CB23|.0F8E 30010000jle   圣才题库.0107CC59                  ;不跳,循环
0107CB29|.8DA424 0000000>lea   esp, dword ptr
0107CB30|>8B8D 30FEFFFF/mov   ecx, dword ptr
0107CB36|.8A140E         |mov   dl, byte ptr           ;第一次是6的最后一个 0
0107CB39|.8D46 01      |lea   eax, dword ptr       ;eax给1
0107CB3C|.83E6 3F      |and   esi, 0x3F                     ;1&0x3f
0107CB3F|.8BC8         |mov   ecx, eax                        ;1给ecx
0107CB41|.81E1 3F000080|and   ecx, 0x8000003F               ;1&
0107CB47|.8985 34FEFFFF|mov   dword ptr , eax      ;1给这个变量
0107CB4D|.885435 BC      |mov   byte ptr , dl   ;给新的数组
0107CB51|.79 05          |jns   short 圣才题库.0107CB58
0107CB53|.49             |dec   ecx
0107CB54|.83C9 C0      |or      ecx, 0xFFFFFFC0
0107CB57|.41             |inc   ecx
0107CB58|>0F85 F1000000|jnz   圣才题库.0107CC4F                   ;先把 前64个数据 存入 下标为0-63的数组2CA434 a 中
0107CB5E|.33DB         |xor   ebx, ebx                        ;这是第65个清空98
0107CB60|>33C0         |/xor   eax, eax                     ;清空0x4064
0107CB62|.8D4D 1B      ||lea   ecx, dword ptr
0107CB65|>83F8 10      ||/cmp   eax, 0x10                     ;0 >=16   no
0107CB68|.7D 05          |||jge   short 圣才题库.0107CB6F
0107CB6A|.8A51 C0      |||mov   dl, byte ptr
0107CB6D|.EB 18          |||jmp   short 圣才题库.0107CB87
0107CB6F|>83F8 20      |||cmp   eax, 0x20
0107CB72|.7D 06          |||jge   short 圣才题库.0107CB7A
0107CB74|.8A5405 CC      |||mov   dl, byte ptr
0107CB78|.EB 0D          |||jmp   short 圣才题库.0107CB87
0107CB7A|>83F8 30      |||cmp   eax, 0x30
0107CB7D|.7D 04          |||jge   short 圣才题库.0107CB83
0107CB7F|.8A11         |||mov   dl, byte ptr
0107CB81|.EB 04          |||jmp   short 圣才题库.0107CB87
0107CB83|>8A5405 8C      |||mov   dl, byte ptr
0107CB87|>889405 7CFFFFF>|||mov   byte ptr , dl
0107CB8E|.40             |||inc   eax
0107CB8F|.49             |||dec   ecx
0107CB90|.83F8 40      |||cmp   eax, 0x40
0107CB93|.^ 7C D0          ||\jl      short 圣才题库.0107CB65
0107CB95|.8B949D 3CFFFFF>||mov   edx, dword ptr [ebp+ebx*4-0xC4>
0107CB9C|.B9 10000000    ||mov   ecx, 0x10                      ;16
0107CBA1|.8DB5 7CFFFFFF||lea   esi, dword ptr       ;新数组地址给esi
0107CBA7|.8D7D BC      ||lea   edi, dword ptr       ;老数组
0107CBAA|.F3:A5          ||rep   movs dword ptr es:, dword>;新数组拷贝给老数组,拷贝16次,每次4个字节,=完全拷贝
0107CBAC|.B9 40000000    ||mov   ecx, 0x40                      ;64个数据
0107CBB1|.2BCA         ||sub   ecx, edx                     ;64-1
0107CBB3|.33C0         ||xor   eax, eax
0107CBB5|.85C9         ||test    ecx, ecx                     ;循环减少,0停止
0107CBB7|.7E 17          ||jle   short 圣才题库.0107CBD0
0107CBB9|.8D5415 BC      ||lea   edx, dword ptr ;a->edx
0107CBBD|.8D49 00      ||lea   ecx, dword ptr          ;63
0107CBC0|>0FBE3402       ||/movsx   esi, byte ptr        ;esi=a    i从1开始
0107CBC4|.89B485 3CFEFFF>|||mov   dword ptr , >;c=esi   i从0
0107CBCB|.40             |||inc   eax
0107CBCC|.3BC1         |||cmp   eax, ecx
0107CBCE|.^ 7C F0          ||\jl      short 圣才题库.0107CBC0
0107CBD0|>8BC1         ||mov   eax, ecx
0107CBD2|.83F8 40      ||cmp   eax, 0x40                      ;3F》=40?? no
0107CBD5|.7D 1A          ||jge   short 圣才题库.0107CBF1
0107CBD7|.8D55 BC      ||lea   edx, dword ptr       ;老数组给edx
0107CBDA|.2BD1         ||sub   edx, ecx
0107CBDC|.8D6424 00      ||lea   esp, dword ptr
0107CBE0|>0FBE0C02       ||/movsx   ecx, byte ptr        ;ecx=a
0107CBE4|.898C85 3CFEFFF>|||mov   dword ptr , >;第64次 c是a存入c 只循环了一次
0107CBEB|.40             |||inc   eax                           ;第64次 c是a存入c 只循环了一次
0107CBEC|.83F8 40      |||cmp   eax, 0x40
0107CBEF|.^ 7C EF          ||\jl      short 圣才题库.0107CBE0
0107CBF1|>33C0         ||xor   eax, eax
0107CBF3|>8A9485 3CFEFFF>||/mov   dl, byte ptr
0107CBFA|.885405 BC      |||mov   byte ptr , dl   ;a=c前者i从0开始后者i从1开始
0107CBFE|.40             |||inc   eax
0107CBFF|.83F8 40      |||cmp   eax, 0x40
0107CC02|.^ 7C EF          ||\jl      short 圣才题库.0107CBF3
0107CC04|.43             ||inc   ebx
0107CC05|.83FB 10      ||cmp   ebx, 0x10
0107CC08|.^ 0F8C 52FFFFFF|\jl      圣才题库.0107CB60
0107CC0E|.33C0         |xor   eax, eax
0107CC10|>8A5405 BC      |/mov   dl, byte ptr     ; 取数组中元素到dl
0107CC14|.8B8D 38FEFFFF||mov   ecx, dword ptr    ;循环次数
0107CC1A|.8BB5 2CFEFFFF||mov   esi, dword ptr
0107CC20|.80C2 30      ||add   dl, 0x30
0107CC23|.88140E         ||mov   byte ptr , dl
0107CC26|.41             ||inc   ecx
0107CC27|.40             ||inc   eax
0107CC28|.898D 38FEFFFF||mov   dword ptr , ecx
0107CC2E|.83F8 40      ||cmp   eax, 0x40
0107CC31|.^ 7C DD          |\jl      short 圣才题库.0107CC10            ;这个循环把数字转字符
0107CC33|.6A 40          |push    0x40
0107CC35|.8D45 BC      |lea   eax, dword ptr
0107CC38|.6A 00          |push    0x0
0107CC3A|.50             |push    eax
0107CC3B|.E8 40951500    |call    圣才题库.011D6180
0107CC40|.8B85 34FEFFFF|mov   eax, dword ptr       ;0x40
0107CC46|.8B9D 28FEFFFF|mov   ebx, dword ptr       ;0x98
0107CC4C|.83C4 0C      |add   esp, 0xC
0107CC4F|>8BF0         |mov   esi, eax
0107CC51|.3BF3         |cmp   esi, ebx                        ;0x40是否小于0x98   循环
0107CC53|.^ 0F8C D7FEFFFF\jl      圣才题库.0107CB30                   ;下面不用算了,已经出来结果了
0107CC59|>8B8D 30FEFFFFmov   ecx, dword ptr
来到这个call0107C920
0107C920/[        DISCUZ_CODE_6        ]nbsp; 55             push    ebp
0107C921|.8BEC         mov   ebp, esp
0107C923|.51             push    ecx
0107C924|.53             push    ebx
0107C925|.56             push    esi
0107C926|.57             push    edi
0107C927|.33FF         xor   edi, edi
0107C929|.83C0 07      add   eax, 0x7
0107C92C|.8945 FC      mov   dword ptr , eax
0107C92F|.90             nop
0107C930|>8A97 9C042401/mov   dl, byte ptr     ;$8Y0fs&=
0107C936|.8B75 FC      |mov   esi, dword ptr       ;取上述字符串的二进制
0107C939|.33C0         |xor   eax, eax
0107C93B|.EB 03          |jmp   short 圣才题库.0107C940
0107C93D|   8D49 00      |lea   ecx, dword ptr
0107C940|>8AC8         |/mov   cl, al                         ;进行如下运算
0107C942|.8ADA         ||mov   bl, dl
0107C944|.D2FB         ||sar   bl, cl
0107C946|.40             ||inc   eax
0107C947|.4E             ||dec   esi
0107C948|.80E3 01      ||and   bl, 0x1
0107C94B|.885E 01      ||mov   byte ptr , bl
0107C94E|.83F8 08      ||cmp   eax, 0x8
0107C951|.^ 7C ED          |\jl      short 圣才题库.0107C940
0107C953|.8345 FC 08   |add   dword ptr , 0x8
0107C957|.47             |inc   edi
0107C958|.83FF 08      |cmp   edi, 0x8
0107C95B|.^ 7C D3          \jl      short 圣才题库.0107C930
0107C95D|.5F             pop   edi
0107C95E|.5E             pop   esi
0107C95F|.33C0         xor   eax, eax
0107C961|.5B             pop   ebx
0107C962|.8BE5         mov   esp, ebp
0107C964|.5D             pop   ebp
0107C965\.C3             retn
上面算出的是个定值,我们记录后保存1 1 1 2 2 2 0 2 2 2 2 3 2 1 3 2


最后算出的结果+机器码就是注册码了,写的比较累。。。下面是C++写法**** Hidden Message *****




注意:这个题库刚下载下来会在C盘解压出来,大家要去C盘的根目录打开,然后记得是离线注册码,不是在线的!!



520Kelly 发表于 2014-12-17 23:42

膜拜大神能搞Android又能搞exe,各种羡慕

Crack_TTds 发表于 2014-12-17 23:44

膜拜 大神   非常详细 {:5_188:}

Shark恒 发表于 2014-12-18 00:57

有搞安卓又搞算法,膜拜了{:5_189:}

Scar-疤痕 发表于 2014-12-18 07:44

学习了,膜拜大神!

vipcrack 发表于 2014-12-18 08:54

学习一下C的代码,算法看都觉得复杂,写起来更麻烦,感谢分享。

逍遥枷锁 发表于 2014-12-18 09:23

谢谢分享真不错。

璀璨网络 发表于 2014-12-18 12:24

我被禁言了吗?这几天比较忙

livingbody 发表于 2014-12-18 18:44

对楼猪只能说,你太伟大了!!

baile7 发表于 2014-12-18 21:39

有没有职称考试的题库啊
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 【圣才题库】离线注册码分析