DaShanRen 发表于 2016-1-24 10:15:17

捣蛋部队之----Cool Capture v1.25 算法分析补遗

版主已经写出算法了,我也没想再来一下,只是发现新东西,特拿出来玩玩。


注册算法中有一个根据注册码字符查找其所在的位置号的问题,版主的分析只是一笔带过。若果你要是想分析一下,进入之后,估计会令你脑袋发晕,吃不准算法啥意思。
其实,其实,……其实这个软件的验证流程使用了C语言中的重要对象--链表,而链表这东西鲜见于注册验证流程中。下面先看看对应代码:
004110A0PUSH EBX
004110A1PUSH ESI
004110A2MOV ESI,DWORD PTR DS:            ;表1的地址


表1中只有三个非0数据,这三个数据分别对应着数字、字母A-O和字母P-Z。因为数字的ASCII高位是3,A-O的高位是4,而P-Z的高位是5。链表是按高位分类的。
这三个非0数据的设置是为了按类别搜索,缩短搜索时间,完全可以顺序搜索。
链表的地址是动态产生的,但结构是固定不变的。
004110A5TEST ESI,ESI
004110A7JE SHORT 004110CA
004110A9MOV BL,BYTE PTR SS:
004110ADXOR EDX,EDX
004110AFMOVSX EAX,BL
004110B2SHR EAX,4                               ;结果 /16,取得高位
004110B5DIV DWORD PTR DS:                ;结果 mod 17
004110B8MOV EDX,DWORD PTR DS:      ;结果查表1得搜索链表的节点首地址
004110BBTEST EDX,EDX                            ;如果首地址为0则跳过报错
004110BDJE SHORT 004110CA                     ;为0跳过


除了三个非0数据,其余预示着字符不满足条件,报错。
004110BF/CMP BYTE PTR DS:,BL             ;与链表节点中的数据(字符)比较
004110C2|JE SHORT 004110E1                      ;相等则表示找到,跳出
004110C4|MOV EDX,DWORD PTR DS:             ;否则读取下一节点的地址
004110C6|TEST EDX,EDX                           ; 如果值为0,则表示链表查完也没找到,报错
004110C8\JNZ SHORT 004110BF
004110CAMOV AL,BYTE PTR SS:            ;2
004110CELEA ECX,DWORD PTR SS:
004110D2PUSH 00421120
004110D7PUSH ECX
004110D8MOV BYTE PTR SS:,AL
004110DCCALL <JMP.&MSVCRT._CxxThrowException>
004110E1TEST EDX,EDX
004110E3JE SHORT 004110CA                     ; 未找到时报错
004110E5MOV EAX,DWORD PTR DS:            ; 找到时读取链表中的数据--位置号
004110E8POP ESI
004110E9POP EBX
004110EARETN 4




表1的内容:
003881C000 00 00 00 00 00 00 00 00 00 00 00 54 A9 38 00............T?.
003881D0D4 A9 38 00 C4 A9 38 00 00 00 00 00 00 00 00 00冤8.末8.........
&H00000000, &H00000000, &H00000000, &H0038A954, &H0038A9D4, &H0038A9C4, &H00000000, &H00000000, _
&H00000000, &H00000000, &H00000000, &H00000000, &H00000000, &H00000000, &H00000000, &H00000000


链表:
节点地址 下一节点地址 字符类别    字符      字符位置号
0038A744&H00000000, &H00000004, &HXXXXXX4F, &H00000000 O
0038A754&H0038A744, &H00000004, &HXXXXXX4D, &H00000001 M
0038A764&H0038A754, &H00000004, &HXXXXXX42, &H00000002 B
0038A774&H0038A764, &H00000004, &HXXXXXX48, &H00000003 H
0038A784&H0038A774, &H00000004, &HXXXXXX47, &H00000004 G
0038A794&H00000000, &H00000005, &HXXXXXX58, &H00000005 X
0038A7A4&H00000000, &H00000003, &HXXXXXX32, &H00000006 2
0038A7B4&H0038A7A4, &H00000003, &HXXXXXX35, &H00000007 5
0038A7C4&H0038A794, &H00000005, &HXXXXXX56, &H00000008 V
0038A7D4&H0038A7B4, &H00000003, &HXXXXXX39, &H00000009 9
0038A804&H0038A784, &H00000004, &HXXXXXX45, &H0000000A E
0038A814&H0038A804, &H00000004, &HXXXXXX41, &H0000000B A
0038A824&H0038A7C4, &H00000005, &HXXXXXX53, &H0000000C S
0038A834&H0038A814, &H00000004, &HXXXXXX49, &H0000000D I
0038A844&H0038A824, &H00000005, &HXXXXXX55, &H0000000E U
0038A854&H0038A834, &H00000004, &HXXXXXX4C, &H0000000F L
0038A864&H0038A844, &H00000005, &HXXXXXX52, &H00000010 R
0038A874&H0038A7D4, &H00000003, &HXXXXXX33, &H00000011 3
0038A884&H0038A864, &H00000005, &HXXXXXX5A, &H00000012 Z
0038A894&H0038A874, &H00000003, &HXXXXXX34, &H00000013 4
0038A8C4&H0038A894, &H00000003, &HXXXXXX31, &H00000014 1
0038A8D4&H0038A884, &H00000005, &HXXXXXX59, &H00000015 Y
0038A8E4&H0038A8C4, &H00000003, &HXXXXXX37, &H00000016 7
0038A8F4&H0038A854, &H00000004, &HXXXXXX4A, &H00000017 J
0038A904&H0038A8F4, &H00000004, &HXXXXXX4B, &H00000018 K
0038A914&H0038A904, &H00000004, &HXXXXXX44, &H00000019 D
0038A924&H0038A8E4, &H00000003, &HXXXXXX30, &H0000001A 0
0038A934&H0038A914, &H00000004, &HXXXXXX43, &H0000001B C
0038A944&H0038A924, &H00000003, &HXXXXXX38, &H0000001C 8
0038A954&H0038A944, &H00000003, &HXXXXXX36, &H0000001D 6--0--9的开始查找位置
0038A984&H0038A8D4, &H00000005, &HXXXXXX54, &H0000001E T
0038A994&H0038A984, &H00000005, &HXXXXXX57, &H0000001F W
0038A9A4&H0038A994, &H00000005, &HXXXXXX50, &H00000020 P
0038A9B4&H0038A934, &H00000004, &HXXXXXX4E, &H00000021 N
0038A9C4&H0038A9A4, &H00000005, &HXXXXXX51, &H00000022 Q--P--Z的开始查找位置
0038A9D4&H0038A9B4, &H00000004, &HXXXXXX46, &H00000023 F--A--O的开始查找位置





我使用了VB结构的数据展示,如何玩转链表,那就不是我的事了,你自己看着办!

[PYG]版务督察 发表于 2016-1-24 11:09:44

欢迎兄弟多来“捣蛋”

DaShanRen 发表于 2016-1-24 13:28:17

一个被解职的老版主能干啥?

menglv 发表于 2016-1-24 17:10:49

前排膜拜一下,谢谢楼主分享

gujin162 发表于 2016-1-24 21:29:47


向楼主学习!向楼主致敬!

ZMLoveLH 发表于 2016-1-24 23:52:52

不知道这个软件的用途是什么

飞天 发表于 2016-1-25 12:17:12

人才呀,感谢分享。

luck2b99 发表于 2016-1-27 08:56:33

多谢楼主分享并给我们布置作业!

liuwei1982 发表于 2016-10-29 16:40:02

aoaili 发表于 2019-6-19 12:37:41

{:3_160:}{:3_169:}{:3_160:}{:3_169:}{:3_160:}{:3_169:}{:3_160:}{:3_169:}{:3_160:}{:3_169:}{:3_160:}{:3_169:}{:3_160:}{:3_169:}{:3_160:}{:3_169:}{:3_160:}{:3_169:}{:3_160:}{:3_169:}{:3_160:}{:3_169:}{:3_160:}{:3_169:}{:3_160:}{:3_169:}{:3_160:}{:3_169:}
页: [1]
查看完整版本: 捣蛋部队之----Cool Capture v1.25 算法分析补遗