本帖最后由 GeekCat 于 2016-1-29 11:26 编辑
【文章标题】: ResizeIt v1.1 算法分析 【软件大小】: 830 KB (850,717 字节)
【加壳方式】: 无壳 【保护方式】: 注册码
【编写语言】: Borland Delphi 6.0 - 7.0 【使用工具】: OD、PEID
【操作平台】: XP SP3 【破解声明】: 破解在于交流思路和过程,结果并不重要,请不要用于非法用途;
【软件介绍】: 透过PDTSoftware开发的ResizeIt,可以同时对多张图片进行编辑、转换格式,改变大小等。它可协助初学者为网页或传送电邮需求时,快速地对相关图片进行处理,它可以读取不同格式的图片,并进行转换储为jpg、gif、bmp等图片格式。 --------------------------------------------------------------------------------------------------------------------------------
1、F12、字符串、API、D语言的专门工具找注册按钮快速到关键点,代码如下:
- 00546DEB |. 8B86 C4030000 |mov eax,dword ptr ds:[esi+0x3C4]
- 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:[0x546EB4] ; $
- 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:[ebp-0x4] ; (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:[ebp-0x4] ; (ASCII "GeekCat")
- 0052CEF1 |. E8 E27AEDFF call resizeit.004049D8 ; 计算注册名的长度
- 0052CEF6 |. 3B47 58 cmp eax,dword ptr ds:[edi+0x58] ; 注册名不大于32位
- 0052CEF9 |. 7F 19 jg short resizeit.0052CF14
- 0052CEFB |. 8B45 FC mov eax,dword ptr ss:[ebp-0x4] ; (ASCII "GeekCat")
- 0052CEFE |. E8 D57AEDFF call resizeit.004049D8 ; 计算注册名的长度
- 0052CF03 |. 3B47 5C cmp eax,dword ptr ds:[edi+0x5C]
- 0052CF06 |. 7C 0C jl short resizeit.0052CF14
- 0052CF08 |. 8B45 0C mov eax,dword ptr ss:[ebp+0xC] ; (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:[ebp-0xC]
- 0052CF1E |. 8B45 0C mov eax,dword ptr ss:[ebp+0xC] ; (ASCII "1234567890ABCdef9876")
- 0052CF21 |. E8 DEBEEDFF call resizeit.00408E04 ; 小写转大写
- 0052CF26 |. 8B55 F4 mov edx,dword ptr ss:[ebp-0xC] ; (ASCII "1234567890ABCDEF9876")
- 0052CF29 |. 8D45 0C lea eax,dword ptr ss:[ebp+0xC]
- 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:[ebp+0xC] ; (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:[ebp-0x10]
- 0052CF46 |. 50 push eax
- 0052CF47 |. 8B4D 0C mov ecx,dword ptr ss:[ebp+0xC] ; (ASCII "1234567890ABCDEF9876")
- 0052CF4A |. 8B55 FC mov edx,dword ptr ss:[ebp-0x4] ; (ASCII "GeekCat")
- 0052CF4D |. 8BC7 mov eax,edi
- 0052CF4F |. E8 28F2FFFF call resizeit.0052C17C ; 算法CALL
- 0052CF54 |. 8B45 F0 mov eax,dword ptr ss:[ebp-0x10]
- 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:[edi+0x50]
复制代码
4、F7跟进算法CALL 0052CE37 代码如下:
- 0052C1C0 |. 8B45 08 mov eax,dword ptr ss:[ebp+0x8]
- 0052C1C3 |. BA 3CC55200 mov edx,resizeit.0052C53C ; 542264156124568746123
- 0052C1C8 |. E8 A785EDFF call resizeit.00404774
- 0052C1CD |. 8B45 F8 mov eax,dword ptr ss:[ebp-0x8] ; (ASCII "GeekCat")
- 0052C1D0 |. E8 0388EDFF call resizeit.004049D8 ; 计算注册名的长度
- 0052C1D5 |. 8B55 FC mov edx,dword ptr ss:[ebp-0x4]
- 0052C1D8 |. 3B42 58 cmp eax,dword ptr ds:[edx+0x58] ; 注册名不能大于32位
- 0052C1DB |. 0F8F 18030000 jg resizeit.0052C4F9
- 0052C1E1 |. 8B45 F8 mov eax,dword ptr ss:[ebp-0x8] ; (ASCII "GeekCat")
- 0052C1E4 |. E8 EF87EDFF call resizeit.004049D8 ; 计算注册名的长度
- 0052C1E9 |. 8B55 FC mov edx,dword ptr ss:[ebp-0x4]
- 0052C1EC |. 3B42 5C cmp eax,dword ptr ds:[edx+0x5C] ; 注册名要大于等于5位
- 0052C1EF |. 0F8C 04030000 jl resizeit.0052C4F9
- 0052C1F5 |. 8D45 E0 lea eax,dword ptr ss:[ebp-0x20]
- 0052C1F8 |. 8B55 F4 mov edx,dword ptr ss:[ebp-0xC] ; (ASCII "1234567890ABCDEF9876")
- 0052C1FB |. 8A12 mov dl,byte ptr ds:[edx] ; 取注册码第1位
- 0052C1FD |. 8850 01 mov byte ptr ds:[eax+0x1],dl
- 0052C200 |. C600 01 mov byte ptr ds:[eax],0x1
- 0052C203 |. 8D55 E0 lea edx,dword ptr ss:[ebp-0x20]
- 0052C206 |. 8D45 DC lea eax,dword ptr ss:[ebp-0x24]
- 0052C209 |. E8 7A6EEDFF call resizeit.00403088
- 0052C20E |. 8D45 D8 lea eax,dword ptr ss:[ebp-0x28]
- 0052C211 |. 8B55 F4 mov edx,dword ptr ss:[ebp-0xC] ; (ASCII "1234567890ABCDEF9876")
- 0052C214 |. 8A52 02 mov dl,byte ptr ds:[edx+0x2] ; 取注册码第3位
- 0052C217 |. 8850 01 mov byte ptr ds:[eax+0x1],dl
- 0052C21A |. C600 01 mov byte ptr ds:[eax],0x1
- 0052C21D |. 8D55 D8 lea edx,dword ptr ss:[ebp-0x28]
- 0052C220 |. 8D45 DC lea eax,dword ptr ss:[ebp-0x24]
- 0052C223 |. B1 02 mov cl,0x2
- 0052C225 |. E8 2E6EEDFF call resizeit.00403058
- 0052C22A |. 8D55 DC lea edx,dword ptr ss:[ebp-0x24]
- 0052C22D |. 8D45 F0 lea eax,dword ptr ss:[ebp-0x10] ; ebp-0x10 值
- 0052C230 |. E8 4787EDFF call resizeit.0040497C
- 0052C235 |. 8D45 EC lea eax,dword ptr ss:[ebp-0x14]
- 0052C238 |. 8B55 F4 mov edx,dword ptr ss:[ebp-0xC] ; (ASCII "1234567890ABCDEF9876")
- 0052C23B |. 8A52 04 mov dl,byte ptr ds:[edx+0x4] ; 取注册码第5位
- 0052C23E |. E8 BD86EDFF call resizeit.00404900
- 0052C243 |. 8B45 F8 mov eax,dword ptr ss:[ebp-0x8] ; (ASCII "GeekCat")
- 0052C246 |. E8 8D87EDFF call resizeit.004049D8 ; 计算注册名的长度
- 0052C24B |. 8BF0 mov esi,eax
- 0052C24D |. 8975 D4 mov dword ptr ss:[ebp-0x2C],esi
- 0052C250 |. DB45 D4 fild dword ptr ss:[ebp-0x2C]
- 0052C253 |. D835 54C55200 fdiv dword ptr ds:[0x52C554]
- 0052C259 |. E8 466AEDFF call resizeit.00402CA4
- 0052C25E |. 8B55 F8 mov edx,dword ptr ss:[ebp-0x8] ; (ASCII "GeekCat")
- 0052C261 |. 0FB64402 FF movzx eax,byte ptr ds:[edx+eax-0x1>; 取注册名长度除2的整数部分数值位
- 0052C266 |. 8B55 F8 mov edx,dword ptr ss:[ebp-0x8] ; (ASCII "GeekCat")
- 0052C269 |. 0FB612 movzx edx,byte ptr ds:[edx] ; 取注册名的第1位
- 0052C26C |. 8B4D F8 mov ecx,dword ptr ss:[ebp-0x8]
- 0052C26F |. 0FB649 01 movzx ecx,byte ptr ds:[ecx+0x1] ; 取注册名的第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:[ebp-0x8] ; (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:[ebp-0x8]
- 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:[ebp-0x18],eax ; 1E6
- 0052C28E |. 8D45 D0 lea eax,dword ptr ss:[ebp-0x30]
- 0052C291 |. 8B4D F0 mov ecx,dword ptr ss:[ebp-0x10] ; (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:[ebp-0x30]
- 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:[ebp-0x4]
- 0052C2BC |. 8B40 70 mov eax,dword ptr ds:[eax+0x70] ; 这个值怎来的没找到 换用不同的注册名和注册码都不变 看着常量C225
- 0052C2BF |. 99 cdq
- 0052C2C0 |. F77D E8 idiv dword ptr ss:[ebp-0x18] ; 总共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:[ebp-0x34]
- 0052C2D4 |. 8B4D EC mov ecx,dword ptr ss:[ebp-0x14] ; (UNICODE "5") 注册码的第5位
- 0052C2D7 |. BA 60C55200 mov edx,resizeit.0052C560 ; $
- 0052C2DC |. E8 4387EDFF call resizeit.00404A24
- 0052C2E1 |. 8B45 CC mov eax,dword ptr ss:[ebp-0x34]
- 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:[ebp-0x8] ; (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:[ebp-0x8] ; (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:[ebp-0x20]
- 0052C320 |. 8B55 F4 mov edx,dword ptr ss:[ebp-0xC] ; (ASCII "1234567890ABCDEF9876")
- 0052C323 |. 8A52 06 mov dl,byte ptr ds:[edx+0x6] ; 取注册码第7位 7
- 0052C326 |. 8850 01 mov byte ptr ds:[eax+0x1],dl
- 0052C329 |. C600 01 mov byte ptr ds:[eax],0x1
- 0052C32C |. 8D55 E0 lea edx,dword ptr ss:[ebp-0x20]
- 0052C32F |. 8D45 DC lea eax,dword ptr ss:[ebp-0x24]
- 0052C332 |. E8 516DEDFF call resizeit.00403088
- 0052C337 |. 8D45 D8 lea eax,dword ptr ss:[ebp-0x28]
- 0052C33A |. 8B55 F4 mov edx,dword ptr ss:[ebp-0xC] ; (ASCII "1234567890ABCDEF9876")
- 0052C33D |. 8A52 08 mov dl,byte ptr ds:[edx+0x8] ; 取注册码第9位 9
- 0052C340 |. 8850 01 mov byte ptr ds:[eax+0x1],dl
- 0052C343 |. C600 01 mov byte ptr ds:[eax],0x1
- 0052C346 |. 8D55 D8 lea edx,dword ptr ss:[ebp-0x28]
- 0052C349 |. 8D45 DC lea eax,dword ptr ss:[ebp-0x24]
- 0052C34C |. B1 02 mov cl,0x2
- 0052C34E |. E8 056DEDFF call resizeit.00403058
- 0052C353 |. 8D55 DC lea edx,dword ptr ss:[ebp-0x24]
- 0052C356 |. 8D45 D4 lea eax,dword ptr ss:[ebp-0x2C]
- 0052C359 |. E8 2A6DEDFF call resizeit.00403088
- 0052C35E |. 8D45 D8 lea eax,dword ptr ss:[ebp-0x28]
- 0052C361 |. 8B55 F4 mov edx,dword ptr ss:[ebp-0xC] ; (ASCII "1234567890ABCDEF9876")
- 0052C364 |. 8A52 0A mov dl,byte ptr ds:[edx+0xA] ; 取注册码第11位 A
- 0052C367 |. 8850 01 mov byte ptr ds:[eax+0x1],dl
- 0052C36A |. C600 01 mov byte ptr ds:[eax],0x1
- 0052C36D |. 8D55 D8 lea edx,dword ptr ss:[ebp-0x28]
- 0052C370 |. 8D45 D4 lea eax,dword ptr ss:[ebp-0x2C]
- 0052C373 |. B1 03 mov cl,0x3
- 0052C375 |. E8 DE6CEDFF call resizeit.00403058
- 0052C37A |. 8D55 D4 lea edx,dword ptr ss:[ebp-0x2C]
- 0052C37D |. 8D45 F0 lea eax,dword ptr ss:[ebp-0x10]
- 0052C380 |. E8 F785EDFF call resizeit.0040497C
- 0052C385 |. 8D45 C8 lea eax,dword ptr ss:[ebp-0x38]
- 0052C388 |. 8B4D F0 mov ecx,dword ptr ss:[ebp-0x10] ; (ASCII "79A")
- 0052C38B |. BA 60C55200 mov edx,resizeit.0052C560 ; $
- 0052C390 |. E8 8F86EDFF call resizeit.00404A24
- 0052C395 |. 8B45 C8 mov eax,dword ptr ss:[ebp-0x38]
- 0052C398 |. BA FFFF0000 mov edx,0xFFFF
- 0052C39D |. E8 12D1EDFF call resizeit.004094B4 ; 字符串转数值
- 0052C3A2 |. 8945 E8 mov dword ptr ss:[ebp-0x18],eax
- 0052C3A5 |. 817D E8 FFFF0>cmp dword ptr ss:[ebp-0x18],0xFFFF
- 0052C3AC |. 0F84 47010000 je resizeit.0052C4F9
- 0052C3B2 |. 33F6 xor esi,esi
- 0052C3B4 |. 8B45 F8 mov eax,dword ptr ss:[ebp-0x8] ; (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:[ebp-0x8] ; (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:[ebp-0x4]
- 0052C3D9 |. 3370 74 xor esi,dword ptr ds:[eax+0x74] ; 2940 xor E8D7这个值怎来的没找到 换用不同的注册名和注册码都不变 看着常量
- 0052C3DC |. 81E6 FF0F0000 and esi,0xFFF
- 0052C3E2 |. 8975 E4 mov dword ptr ss:[ebp-0x1C],esi
- 0052C3E5 |. 8B45 E4 mov eax,dword ptr ss:[ebp-0x1C]
- 0052C3E8 |. 3B45 E8 cmp eax,dword ptr ss:[ebp-0x18] ; xor值跟注册码的 7、9、11位组成的数字相等
- 0052C3EB |. 0F85 08010000 jnz resizeit.0052C4F9
- 0052C3F1 |. 8B45 F4 mov eax,dword ptr ss:[ebp-0xC] ; (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:[ebp-0x14]
- 0052C405 |. E8 1683EDFF call resizeit.00404720
- 0052C40A |. 33C0 xor eax,eax
- 0052C40C |. 8945 E4 mov dword ptr ss:[ebp-0x1C],eax
- 0052C40F |. 8B45 F8 mov eax,dword ptr ss:[ebp-0x8] ; (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:[ebp-0x8] ; (ASCII "GeekCat")
- 0052C423 |. 0FB6541A FF |movzx edx,byte ptr ds:[edx+ebx-0x>; 取注册名的每1位
- 0052C428 |. 0155 E4 |add dword ptr ss:[ebp-0x1C],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:[ebp-0x1C] ; 294
- 0052C439 |. F76D E4 imul dword ptr ss:[ebp-0x1C]
- 0052C43C |. 8945 E4 mov dword ptr ss:[ebp-0x1C],eax ; 07FFFF80
- 0052C43F |. 8B45 F4 mov eax,dword ptr ss:[ebp-0xC] ; (ASCII "1234567890ABCDEF9876")
- 0052C442 |. E8 9185EDFF call resizeit.004049D8 ; 计算注册码长度
- 0052C447 |. 83E8 0C sub eax,0xC
- 0052C44A |. 8945 E8 mov dword ptr ss:[ebp-0x18],eax
- 0052C44D |. 8D45 F0 lea eax,dword ptr ss:[ebp-0x10]
- 0052C450 |. 50 push eax
- 0052C451 |. 8B4D E8 mov ecx,dword ptr ss:[ebp-0x18]
- 0052C454 |. BA 0D000000 mov edx,0xD ; 从第0xD-->12位开始取
- 0052C459 |. 8B45 F4 mov eax,dword ptr ss:[ebp-0xC] ; (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:[ebp-0x4] ; 这个循环的计算步骤太多但不复杂很容易看到,不好写总结(总结能力有限请多包含)
- 0052C470 |. 8B40 78 |mov eax,dword ptr ds:[eax+0x78] ; 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:[ebp-0x1C]
- 0052C489 |. 7E 0A |jle short resizeit.0052C495
- 0052C48B |. 8BC6 |mov eax,esi
- 0052C48D |. 99 |cdq
- 0052C48E |. F77D E4 |idiv dword ptr ss:[ebp-0x1C]
- 0052C491 |. 8BF2 |mov esi,edx
- 0052C493 |. EB 08 |jmp short resizeit.0052C49D
- 0052C495 |> 8B45 E4 |mov eax,dword ptr ss:[ebp-0x1C]
- 0052C498 |. 99 |cdq
- 0052C499 |. F7FE |idiv esi
- 0052C49B |. 8BF2 |mov esi,edx
- 0052C49D |> 8D4D C4 |lea ecx,dword ptr ss:[ebp-0x3C]
- 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:[ebp-0x3C] ; 进CALL时eax的值变成字符串
- 0052C4B4 |. 8D45 EC |lea eax,dword ptr ss:[ebp-0x14]
- 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:[ebp-0x14]
- 0052C4C6 |. 50 push eax
- 0052C4C7 |. 8B45 FC mov eax,dword ptr ss:[ebp-0x4]
- 0052C4CA |. 8B48 6C mov ecx,dword ptr ds:[eax+0x6C]
- 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:[ebp-0x14] ; 计算出来的96位字符串
- 0052C4D8 |. E8 5387EDFF call resizeit.00404C30
- 0052C4DD |. 8B55 EC mov edx,dword ptr ss:[ebp-0x14] ; (ASCII "1A") 前2位
- 0052C4E0 |. 8B45 F0 mov eax,dword ptr ss:[ebp-0x10] ; (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:[ebp+0x8] ; 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,转载请注明作者及论坛并保存文章的完整!
来自群组: 我们都爱月姐姐 |