GeekCat 发表于 2016-1-28 23:55:02

ResizeIt v1.1 算法分析

本帖最后由 GeekCat 于 2016-1-29 11:26 编辑

【文章标题】: ResizeIt v1.1 算法分析【作者邮箱】: [email protected]
【作者主页】:
【软件名称】: ResizeIt v1.1【软件大小】: 830 KB (850,717 字节)
【加壳方式】: 无壳【保护方式】: 注册码
【编写语言】: Borland Delphi 6.0 - 7.0【使用工具】: OD、PEID
【操作平台】: XP SP3【下载地址】: http://www.crsky.com/soft/8955.html【破解声明】: 破解在于交流思路和过程,结果并不重要,请不要用于非法用途;
【软件介绍】:透过PDTSoftware开发的ResizeIt,可以同时对多张图片进行编辑、转换格式,改变大小等。它可协助初学者为网页或传送电邮需求时,快速地对相关图片进行处理,它可以读取不同格式的图片,并进行转换储为jpg、gif、bmp等图片格式。--------------------------------------------------------------------------------------------------------------------------------
1、F12、字符串、API、D语言的专门工具找注册按钮快速到关键点,代码如下:

00546DEB|.8B86 C4030000 |mov eax,dword ptr ds:
00546DF1|.E8 FE5FFEFF   |call resizeit.0052CDF4            ;关键CALL -1
00546DF6|.84C0          |test al,al
00546DF8|.74 0E         |je short resizeit.00546E08      ;关键跳
00546DFA|.B8 986E5400   |mov eax,resizeit.00546E98         ;Thank you for registering!
00546DFF|.E8 5822F0FF   |call resizeit.0044905C
00546E04|.33DB          |xor ebx,ebx
00546E06|.EB 2D         |jmp short resizeit.00546E35
00546E08|>6A 00         |push 0x0
00546E0A|.66:8B0D B46E5>|mov cx,word ptr ds:   ;$
00546E11|.B2 01         |mov dl,0x1
00546E13|.B8 C06E5400   |mov eax,resizeit.00546EC0         ;Invalid key entered.Make sure your license key and user name are correct

2、F7跟进关键CALL -1 00546DF1 代码如下:

0052CE32|.8B55 FC       mov edx,dword ptr ss:   ;(ASCII "GeekCat")
0052CE35|.8BC3          mov eax,ebx
0052CE37|.E8 38000000   call resizeit.0052CE74             ;关键CALL -2要求eax=1
0052CE3C|.8BD8          mov ebx,eax



3、F7跟进关键CALL -2 0052CE37 代码如下:

0052CEEE|.8B45 FC       mov eax,dword ptr ss:   ;(ASCII "GeekCat")
0052CEF1|.E8 E27AEDFF   call resizeit.004049D8             ;计算注册名的长度
0052CEF6|.3B47 58       cmp eax,dword ptr ds:    ;注册名不大于32位
0052CEF9|.7F 19         jg short resizeit.0052CF14
0052CEFB|.8B45 FC       mov eax,dword ptr ss:   ;(ASCII "GeekCat")
0052CEFE|.E8 D57AEDFF   call resizeit.004049D8             ;计算注册名的长度
0052CF03|.3B47 5C       cmp eax,dword ptr ds:
0052CF06|.7C 0C         jl short resizeit.0052CF14
0052CF08|.8B45 0C       mov eax,dword ptr ss:   ;(ASCII "1234567890ABCdef9876")
0052CF0B|.E8 C87AEDFF   call resizeit.004049D8
0052CF10|.85C0          test eax,eax                     ;注册码不能为空
0052CF12|.75 07         jnz short resizeit.0052CF1B
0052CF14|>33DB          xor ebx,ebx
0052CF16|.E9 8A000000   jmp resizeit.0052CFA5
0052CF1B|>8D55 F4       lea edx,dword ptr ss:
0052CF1E|.8B45 0C       mov eax,dword ptr ss:   ;(ASCII "1234567890ABCdef9876")
0052CF21|.E8 DEBEEDFF   call resizeit.00408E04             ;小写转大写
0052CF26|.8B55 F4       mov edx,dword ptr ss:   ;(ASCII "1234567890ABCDEF9876")
0052CF29|.8D45 0C       lea eax,dword ptr ss:
0052CF2C|.E8 8778EDFF   call resizeit.004047B8
0052CF31|.33DB          xor ebx,ebx
0052CF33|.B1 01         mov cl,0x1
0052CF35|.8B55 0C       mov edx,dword ptr ss:   ;(ASCII "1234567890ABCDEF9876")
0052CF38|.8BC7          mov eax,edi
0052CF3A|.E8 99FAFFFF   call resizeit.0052C9D8             ;细看一下 对注册有什么限制
0052CF3F|.84C0          test al,al
0052CF41|.75 62         jnz short resizeit.0052CFA5
0052CF43|.8D45 F0       lea eax,dword ptr ss:
0052CF46|.50            push eax
0052CF47|.8B4D 0C       mov ecx,dword ptr ss:   ;(ASCII "1234567890ABCDEF9876")
0052CF4A|.8B55 FC       mov edx,dword ptr ss:   ;(ASCII "GeekCat")
0052CF4D|.8BC7          mov eax,edi
0052CF4F|.E8 28F2FFFF   call resizeit.0052C17C             ;算法CALL
0052CF54|.8B45 F0       mov eax,dword ptr ss:
0052CF57|.BA E8CF5200   mov edx,resizeit.0052CFE8          ;645364631365423154824
0052CF5C|.E8 1BBFEDFF   call resizeit.00408E7C             ;对比CALL要求eax=0
0052CF61|.85C0          test eax,eax
0052CF63|.75 04         jnz short resizeit.0052CF69      ;不能跳
0052CF65|.B3 01         mov bl,0x1
0052CF67|.EB 02         jmp short resizeit.0052CF6B
0052CF69|>33DB          xor ebx,ebx
0052CF6B|>80FB 01       cmp bl,0x1
0052CF6E|.75 35         jnz short resizeit.0052CFA5      ;不能跳
0052CF70|.8D47 50       lea eax,dword ptr ds:

4、F7跟进算法CALL0052CE37 代码如下:

0052C1C0|.8B45 08       mov eax,dword ptr ss:
0052C1C3|.BA 3CC55200   mov edx,resizeit.0052C53C          ;542264156124568746123
0052C1C8|.E8 A785EDFF   call resizeit.00404774
0052C1CD|.8B45 F8       mov eax,dword ptr ss:   ;(ASCII "GeekCat")
0052C1D0|.E8 0388EDFF   call resizeit.004049D8             ;计算注册名的长度
0052C1D5|.8B55 FC       mov edx,dword ptr ss:
0052C1D8|.3B42 58       cmp eax,dword ptr ds:    ;注册名不能大于32位
0052C1DB|.0F8F 18030000 jg resizeit.0052C4F9
0052C1E1|.8B45 F8       mov eax,dword ptr ss:   ;(ASCII "GeekCat")
0052C1E4|.E8 EF87EDFF   call resizeit.004049D8             ;计算注册名的长度
0052C1E9|.8B55 FC       mov edx,dword ptr ss:
0052C1EC|.3B42 5C       cmp eax,dword ptr ds:    ;注册名要大于等于5位
0052C1EF|.0F8C 04030000 jl resizeit.0052C4F9
0052C1F5|.8D45 E0       lea eax,dword ptr ss:
0052C1F8|.8B55 F4       mov edx,dword ptr ss:   ;(ASCII "1234567890ABCDEF9876")
0052C1FB|.8A12          mov dl,byte ptr ds:         ;取注册码第1位
0052C1FD|.8850 01       mov byte ptr ds:,dl
0052C200|.C600 01       mov byte ptr ds:,0x1
0052C203|.8D55 E0       lea edx,dword ptr ss:
0052C206|.8D45 DC       lea eax,dword ptr ss:
0052C209|.E8 7A6EEDFF   call resizeit.00403088
0052C20E|.8D45 D8       lea eax,dword ptr ss:
0052C211|.8B55 F4       mov edx,dword ptr ss:   ;(ASCII "1234567890ABCDEF9876")
0052C214|.8A52 02       mov dl,byte ptr ds:       ;取注册码第3位
0052C217|.8850 01       mov byte ptr ds:,dl
0052C21A|.C600 01       mov byte ptr ds:,0x1
0052C21D|.8D55 D8       lea edx,dword ptr ss:
0052C220|.8D45 DC       lea eax,dword ptr ss:
0052C223|.B1 02         mov cl,0x2
0052C225|.E8 2E6EEDFF   call resizeit.00403058
0052C22A|.8D55 DC       lea edx,dword ptr ss:
0052C22D|.8D45 F0       lea eax,dword ptr ss:    ;ebp-0x10 值
0052C230|.E8 4787EDFF   call resizeit.0040497C
0052C235|.8D45 EC       lea eax,dword ptr ss:
0052C238|.8B55 F4       mov edx,dword ptr ss:   ;(ASCII "1234567890ABCDEF9876")
0052C23B|.8A52 04       mov dl,byte ptr ds:       ;取注册码第5位
0052C23E|.E8 BD86EDFF   call resizeit.00404900
0052C243|.8B45 F8       mov eax,dword ptr ss:   ;(ASCII "GeekCat")
0052C246|.E8 8D87EDFF   call resizeit.004049D8             ;计算注册名的长度
0052C24B|.8BF0          mov esi,eax
0052C24D|.8975 D4       mov dword ptr ss:,esi
0052C250|.DB45 D4       fild dword ptr ss:
0052C253|.D835 54C55200 fdiv dword ptr ds:
0052C259|.E8 466AEDFF   call resizeit.00402CA4
0052C25E|.8B55 F8       mov edx,dword ptr ss:   ;(ASCII "GeekCat")
0052C261|.0FB64402 FF   movzx eax,byte ptr ds:[edx+eax-0x1>;取注册名长度除2的整数部分数值位
0052C266|.8B55 F8       mov edx,dword ptr ss:   ;(ASCII "GeekCat")
0052C269|.0FB612      movzx edx,byte ptr ds:      ;取注册名的第1位
0052C26C|.8B4D F8       mov ecx,dword ptr ss:
0052C26F|.0FB649 01   movzx ecx,byte ptr ds:    ;取注册名的第2位
0052C273|.03D1          add edx,ecx                        ;注册名第1、2位AS相加
0052C275|.03C2          add eax,edx                        ;注册名第1、2、3位AS相加
0052C277|.8B55 F8       mov edx,dword ptr ss:   ;(ASCII "GeekCat")
0052C27A|.0FB65432 FF   movzx edx,byte ptr ds:[edx+esi-0x1>;注册名最后1位
0052C27F|.03C2          add eax,edx                        ;注册名第1、2、3位AS加上最后1位
0052C281|.8B55 F8       mov edx,dword ptr ss:
0052C284|.0FB65432 FE   movzx edx,byte ptr ds:[edx+esi-0x2>;注册名倒数第2位
0052C289|.03C2          add eax,edx                        ;注册名第1、2、3位AS加上倒数第1、2位
0052C28B|.8945 E8       mov dword ptr ss:,eax    ;1E6
0052C28E|.8D45 D0       lea eax,dword ptr ss:
0052C291|.8B4D F0       mov ecx,dword ptr ss:    ;(ASCII "13") 注册码的1、3位吗
0052C294|.BA 60C55200   mov edx,resizeit.0052C560          ;$
0052C299|.E8 8687EDFF   call resizeit.00404A24
0052C29E|.8B45 D0       mov eax,dword ptr ss:
0052C2A1|.BA FFFF0000   mov edx,0xFFFF
0052C2A6|.E8 09D2EDFF   call resizeit.004094B4             ;字符串转数值(表达不一定准确,理解什么意思就OK)    注意eax+0x70值
0052C2AB|.8BF0          mov esi,eax
0052C2AD|.81FE FFFF0000 cmp esi,0xFFFF
0052C2B3|.0F84 40020000 je resizeit.0052C4F9
0052C2B9|.8B45 FC       mov eax,dword ptr ss:
0052C2BC|.8B40 70       mov eax,dword ptr ds:    ;这个值怎来的没找到换用不同的注册名和注册码都不变看着常量C225
0052C2BF|.99            cdq
0052C2C0|.F77D E8       idiv dword ptr ss:       ;总共5位注册名累加和1E6
0052C2C3|.81E2 FF000000 and edx,0xFF
0052C2C9|.3BF2          cmp esi,edx
0052C2CB|.0F85 28020000 jnz resizeit.0052C4F9            ;0 不能跳
0052C2D1|.8D45 CC       lea eax,dword ptr ss:
0052C2D4|.8B4D EC       mov ecx,dword ptr ss:    ;(UNICODE "5") 注册码的第5位
0052C2D7|.BA 60C55200   mov edx,resizeit.0052C560          ;$
0052C2DC|.E8 4387EDFF   call resizeit.00404A24
0052C2E1|.8B45 CC       mov eax,dword ptr ss:
0052C2E4|.BA FFFF0000   mov edx,0xFFFF
0052C2E9|.E8 C6D1EDFF   call resizeit.004094B4             ;字符串转数值
0052C2EE|.8BF0          mov esi,eax
0052C2F0|.81FE FFFF0000 cmp esi,0xFFFF
0052C2F6|.0F84 FD010000 je resizeit.0052C4F9
0052C2FC|.8B45 F8       mov eax,dword ptr ss:   ;(ASCII "GeekCat")
0052C2FF|.E8 D486EDFF   call resizeit.004049D8
0052C304|.3BF0          cmp esi,eax                        ;注册名长度跟计算出来的数值比较
0052C306|.74 15         je short resizeit.0052C31D
0052C308|.8B45 F8       mov eax,dword ptr ss:   ;(ASCII "GeekCat")
0052C30B|.E8 C886EDFF   call resizeit.004049D8
0052C310|.83F8 10       cmp eax,0x10                     ;当计算值不等注册名长时,注册名最大0x10-->16位
0052C313|.7E 08         jle short resizeit.0052C31D
0052C315|.85F6          test esi,esi
0052C317|.0F85 DC010000 jnz resizeit.0052C4F9
0052C31D|>8D45 E0       lea eax,dword ptr ss:
0052C320|.8B55 F4       mov edx,dword ptr ss:   ;(ASCII "1234567890ABCDEF9876")
0052C323|.8A52 06       mov dl,byte ptr ds:       ;取注册码第7位7
0052C326|.8850 01       mov byte ptr ds:,dl
0052C329|.C600 01       mov byte ptr ds:,0x1
0052C32C|.8D55 E0       lea edx,dword ptr ss:
0052C32F|.8D45 DC       lea eax,dword ptr ss:
0052C332|.E8 516DEDFF   call resizeit.00403088
0052C337|.8D45 D8       lea eax,dword ptr ss:
0052C33A|.8B55 F4       mov edx,dword ptr ss:   ;(ASCII "1234567890ABCDEF9876")
0052C33D|.8A52 08       mov dl,byte ptr ds:       ;取注册码第9位9
0052C340|.8850 01       mov byte ptr ds:,dl
0052C343|.C600 01       mov byte ptr ds:,0x1
0052C346|.8D55 D8       lea edx,dword ptr ss:
0052C349|.8D45 DC       lea eax,dword ptr ss:
0052C34C|.B1 02         mov cl,0x2
0052C34E|.E8 056DEDFF   call resizeit.00403058
0052C353|.8D55 DC       lea edx,dword ptr ss:
0052C356|.8D45 D4       lea eax,dword ptr ss:
0052C359|.E8 2A6DEDFF   call resizeit.00403088
0052C35E|.8D45 D8       lea eax,dword ptr ss:
0052C361|.8B55 F4       mov edx,dword ptr ss:   ;(ASCII "1234567890ABCDEF9876")
0052C364|.8A52 0A       mov dl,byte ptr ds:       ;取注册码第11位A
0052C367|.8850 01       mov byte ptr ds:,dl
0052C36A|.C600 01       mov byte ptr ds:,0x1
0052C36D|.8D55 D8       lea edx,dword ptr ss:
0052C370|.8D45 D4       lea eax,dword ptr ss:
0052C373|.B1 03         mov cl,0x3
0052C375|.E8 DE6CEDFF   call resizeit.00403058
0052C37A|.8D55 D4       lea edx,dword ptr ss:
0052C37D|.8D45 F0       lea eax,dword ptr ss:
0052C380|.E8 F785EDFF   call resizeit.0040497C
0052C385|.8D45 C8       lea eax,dword ptr ss:
0052C388|.8B4D F0       mov ecx,dword ptr ss:    ;(ASCII "79A")
0052C38B|.BA 60C55200   mov edx,resizeit.0052C560          ;$
0052C390|.E8 8F86EDFF   call resizeit.00404A24
0052C395|.8B45 C8       mov eax,dword ptr ss:
0052C398|.BA FFFF0000   mov edx,0xFFFF
0052C39D|.E8 12D1EDFF   call resizeit.004094B4             ;字符串转数值
0052C3A2|.8945 E8       mov dword ptr ss:,eax
0052C3A5|.817D E8 FFFF0>cmp dword ptr ss:,0xFFFF
0052C3AC|.0F84 47010000 je resizeit.0052C4F9
0052C3B2|.33F6          xor esi,esi
0052C3B4|.8B45 F8       mov eax,dword ptr ss:   ;(ASCII "GeekCat")
0052C3B7|.E8 1C86EDFF   call resizeit.004049D8             ;计算注册码长度
0052C3BC|.85C0          test eax,eax
0052C3BE|.7E 13         jle short resizeit.0052C3D3
0052C3C0|.BB 01000000   mov ebx,0x1
0052C3C5|>8B55 F8       /mov edx,dword ptr ss:    ;(ASCII "GeekCat")
0052C3C8|.0FB6541A FF   |movzx edx,byte ptr ds:[edx+ebx-0x>
0052C3CD|.03F2          |add esi,edx                     ;注册名各字符AS值累加 294
0052C3CF|.43            |inc ebx
0052C3D0|.48            |dec eax
0052C3D1|.^ 75 F2         \jnz short resizeit.0052C3C5
0052C3D3|>C1E6 04       shl esi,0x4                        ;累加和左移4位2940
0052C3D6|.8B45 FC       mov eax,dword ptr ss:
0052C3D9|.3370 74       xor esi,dword ptr ds:    ;2940 xor E8D7这个值怎来的没找到换用不同的注册名和注册码都不变看着常量
0052C3DC|.81E6 FF0F0000 and esi,0xFFF
0052C3E2|.8975 E4       mov dword ptr ss:,esi
0052C3E5|.8B45 E4       mov eax,dword ptr ss:
0052C3E8|.3B45 E8       cmp eax,dword ptr ss:    ;xor值跟注册码的 7、9、11位组成的数字相等
0052C3EB|.0F85 08010000 jnz resizeit.0052C4F9
0052C3F1|.8B45 F4       mov eax,dword ptr ss:   ;(ASCII "1234567890ABCDEF9876")
0052C3F4|.E8 DF85EDFF   call resizeit.004049D8             ;计算注册名长度
0052C3F9|.83F8 0C       cmp eax,0xC                        ;注册码长度大于12位,如果注册小于等于12位时有什么情况~~
0052C3FC|.0F8E EA000000 jle resizeit.0052C4EC
0052C402|.8D45 EC       lea eax,dword ptr ss:
0052C405|.E8 1683EDFF   call resizeit.00404720
0052C40A|.33C0          xor eax,eax
0052C40C|.8945 E4       mov dword ptr ss:,eax
0052C40F|.8B45 F8       mov eax,dword ptr ss:   ;(ASCII "GeekCat")
0052C412|.E8 C185EDFF   call resizeit.004049D8             ;计算注册码长度
0052C417|.85C0          test eax,eax
0052C419|.7E 14         jle short resizeit.0052C42F
0052C41B|.BB 01000000   mov ebx,0x1
0052C420|>8B55 F8       /mov edx,dword ptr ss:    ;(ASCII "GeekCat")
0052C423|.0FB6541A FF   |movzx edx,byte ptr ds:[edx+ebx-0x>;取注册名的每1位
0052C428|.0155 E4       |add dword ptr ss:,edx   ;注册名各字符AS值累加 294
0052C42B|.43            |inc ebx
0052C42C|.48            |dec eax
0052C42D|.^ 75 F1         \jnz short resizeit.0052C420
0052C42F|>B8 FFFFFF07   mov eax,0x7FFFFFF
0052C434|.33D2          xor edx,edx
0052C436|.F775 E4       div dword ptr ss:      ;294
0052C439|.F76D E4       imul dword ptr ss:
0052C43C|.8945 E4       mov dword ptr ss:,eax    ;07FFFF80
0052C43F|.8B45 F4       mov eax,dword ptr ss:   ;(ASCII "1234567890ABCDEF9876")
0052C442|.E8 9185EDFF   call resizeit.004049D8             ;计算注册码长度
0052C447|.83E8 0C       sub eax,0xC
0052C44A|.8945 E8       mov dword ptr ss:,eax
0052C44D|.8D45 F0       lea eax,dword ptr ss:
0052C450|.50            push eax
0052C451|.8B4D E8       mov ecx,dword ptr ss:
0052C454|.BA 0D000000   mov edx,0xD                        ;从第0xD-->12位开始取
0052C459|.8B45 F4       mov eax,dword ptr ss:   ;(ASCII "1234567890ABCDEF9876")
0052C45C|.E8 CF87EDFF   call resizeit.00404C30             ;截取字符串(ASCII "CDEF9876")
0052C461|.BF 1F000000   mov edi,0x1F
0052C466|.BB 01000000   mov ebx,0x1
0052C46B|>8BCB          /mov ecx,ebx                     ;这个循环生在一个96位的字符串,
0052C46D|.8B45 FC       |mov eax,dword ptr ss:    ;这个循环的计算步骤太多但不复杂很容易看到,不好写总结(总结能力有限请多包含)
0052C470|.8B40 78       |mov eax,dword ptr ds:   ;79BE这个值怎来的没找到换用不同的注册名和注册码都不变看着常量
0052C473|.8BF0          |mov esi,eax
0052C475|.D3E6          |shl esi,cl
0052C477|.8BCF          |mov ecx,edi
0052C479|.D3E8          |shr eax,cl
0052C47B|.0BF0          |or esi,eax
0052C47D|.8BC6          |mov eax,esi
0052C47F|.99            |cdq
0052C480|.33C2          |xor eax,edx
0052C482|.2BC2          |sub eax,edx
0052C484|.8BF0          |mov esi,eax
0052C486|.3B75 E4       |cmp esi,dword ptr ss:
0052C489|.7E 0A         |jle short resizeit.0052C495
0052C48B|.8BC6          |mov eax,esi
0052C48D|.99            |cdq
0052C48E|.F77D E4       |idiv dword ptr ss:
0052C491|.8BF2          |mov esi,edx
0052C493|.EB 08         |jmp short resizeit.0052C49D
0052C495|>8B45 E4       |mov eax,dword ptr ss:
0052C498|.99            |cdq
0052C499|.F7FE          |idiv esi
0052C49B|.8BF2          |mov esi,edx
0052C49D|>8D4D C4       |lea ecx,dword ptr ss:
0052C4A0|.8BC6          |mov eax,esi
0052C4A2|.25 FF0F0000   |and eax,0xFFF
0052C4A7|.BA 03000000   |mov edx,0x3
0052C4AC|.E8 8BCFEDFF   |call resizeit.0040943C            ;数值转字符串
0052C4B1|.8B55 C4       |mov edx,dword ptr ss:   ;进CALL时eax的值变成字符串
0052C4B4|.8D45 EC       |lea eax,dword ptr ss:
0052C4B7|.E8 2485EDFF   |call resizeit.004049E0
0052C4BC|.4F            |dec edi
0052C4BD|.43            |inc ebx
0052C4BE|.83FB 21       |cmp ebx,0x21
0052C4C1|.^ 75 A8         \jnz short resizeit.0052C46B
0052C4C3|.8D45 EC       lea eax,dword ptr ss:
0052C4C6|.50            push eax
0052C4C7|.8B45 FC       mov eax,dword ptr ss:
0052C4CA|.8B48 6C       mov ecx,dword ptr ds:
0052C4CD|.83E9 0C       sub ecx,0xC                        ;取的位数 E-C=2这个ecx的值不变 当常量来用E
0052C4D0|.BA 01000000   mov edx,0x1                        ;第1位开始取
0052C4D5|.8B45 EC       mov eax,dword ptr ss:    ;计算出来的96位字符串
0052C4D8|.E8 5387EDFF   call resizeit.00404C30
0052C4DD|.8B55 EC       mov edx,dword ptr ss:    ;(ASCII "1A") 前2位
0052C4E0|.8B45 F0       mov eax,dword ptr ss:    ;(ASCII "CDEF9876") 注册码的后8位
0052C4E3|.E8 E4C9EDFF   call resizeit.00408ECC             ;比较CALL ,上一个CALL取得的字符串要跟注册码12位之后的字符串一样
0052C4E8|.85C0          test eax,eax
0052C4EA|.75 0D         jnz short resizeit.0052C4F9      ;不能跳
0052C4EC|>8B45 08       mov eax,dword ptr ss:   ;CALL前面的字符常量字符串 542264156124568746123
0052C4EF|.BA 6CC55200   mov edx,resizeit.0052C56C          ;645364631365423154824
0052C4F4|.E8 7B82EDFF   call resizeit.00404774

---------------------------------------------------------------------------------------------------------------------------不完整总结的总结:分析、总结能力太渣请大家多包涵。1、注册名长度:5~16位;2、注册码的1、3、5、7、9、11、13、14位必须是由0~f组成,其它的可以任意数字或字母;3、代码0052C46D 处的循环步骤比较多,总结起来要写很大一堆(分析总结能力太渣);4、上面贴出的代码(除0052C46D 处循环)注释的很明白
可用注册信息:注册名:GeekCat/P.Y.G
注册码:2P5Y8G8P2Y7GF3 (偶数位:PYG)
---------------------------------------------------------------------------------------------------------------------------【版权声明】:本文原创于GeekCat/P.Y.G,转载请注明作者及论坛并保存文章的完整!

我们都爱月姐姐

menglv 发表于 2016-1-29 07:52:48

谢谢楼主分享

wkxq 发表于 2016-1-29 08:06:22

算法分析很NB

开心啦 发表于 2016-1-29 08:16:19

学习了,感谢分享了

forumid 发表于 2016-1-29 09:00:37

楼主的算法分析注释很详细,谢谢分享!

tree_fly 发表于 2016-1-29 10:42:39

赞,GC算法分析很棒~

1552759476@ 发表于 2016-1-29 10:54:00

真牛,已经是高手了。佩服中

Rooking 发表于 2016-1-29 15:06:28

我们都爱 月姐姐

gujin162 发表于 2016-1-29 17:37:51


感谢楼主分享!

飞天 发表于 2016-1-29 18:33:47

谢谢 版主分享算法分析。
页: [1] 2
查看完整版本: ResizeIt v1.1 算法分析