-
-
Flash Wallet的破解
-
发表于: 2004-6-4 19:21 4435
-
好,第三篇:
【破解作者】 WXHing
【作者邮箱】 [email]WXHing@163.com[/email]
【使用工具】 OllyDbg1.09
【破解平台】 Win9x/NT/2000/XP
【软件名称】 Flash Wallet
【下载地址】 中国共享软件注册中心
【软件简介】 据说是一款可以取代Windows资源管理器的软件,功能上要更强大!画面挺好看!
【软件大小】 2.08Mb
【保护方式】 序列号保护,重起验证
【破解声明】 初学破解,妄谈破解,不当之处还请各位前辈指教!
--------------------------------------------------------------------------------
【破解内容】
OD载入,注册之,确定之,不要关对话框,ALT+M查看内存镜像,搜索用户名'WXHing',,下内存访问断点,不要点确定,点取消(该软件会询问你是否愿意重新运行,验证注册码是否正确,如果点确定,那就会耽误时间的)
00402B0B |. F3:A5 rep movs dword ptr es:[edi], dword ptr> ;中断在这
00402B0D |. 89C1 mov ecx, eax
00402B0F |. 83E1 03 and ecx, 3
00402B12 |. F3:A4 rep movs byte ptr es:[edi], byte ptr d>
00402B14 |. 5F pop edi
00402B15 |. 5E pop esi
00402B16 |. C3 retn
004D8EED . E8 B253F8FF call FlashWal.0045E2A4 ;获取用户名长度,eax返回
004D8EF2 . 8B55 E8 mov edx, dword ptr ss:[ebp-18] ;edx存用户名
004D8EF5 . 8D4D EC lea ecx, dword ptr ss:[ebp-14]
004D8EF8 . 8B45 FC mov eax, dword ptr ss:[ebp-4]
004D8EFB . E8 70FCFFFF call FlashWal.004D8B70
004D8F00 . 8B45 EC mov eax, dword ptr ss:[ebp-14]
004D8F03 . 50 push eax
..........
..........
004D8A1E |. 8D45 FC lea eax, dword ptr ss:[ebp-4]
004D8A21 |. 50 push eax
004D8A22 |. B9 06000000 mov ecx, 6 ; ecx初始化=6
004D8A27 |. BA 03000000 mov edx, 3 ;edx初始化=3
004D8A2C |. B8 AC8A4D00 mov eax, FlashWal.004D8AAC ; ASCII "23SFAD721SKDF4DGDFSDF" ;eax初始化
004D8A31 |. E8 7EC5F2FF call FlashWal.00404FB4
004D8A36 |. 8D45 F8 lea eax, dword ptr ss:[ebp-8]
004D8A39 |. 50 push eax
004D8A3A |. B9 07000000 mov ecx, 7 ;ecx初始化=7
004D8A3F |. BA 02000000 mov edx, 2 ;edx初始化=2
004D8A44 |. B8 CC8A4D00 mov eax, FlashWal.004D8ACC ; ASCII "T283B26CIEKB3345SDFER" ;eax初始化
004D8A49 |. E8 66C5F2FF call FlashWal.00404FB4
004D8A4E |. 8D45 F4 lea eax, dword ptr ss:[ebp-C]
004D8A51 |. 50 push eax
004D8A52 |. B9 08000000 mov ecx, 8 ;ecx初始化=8
004D8A57 |. BA 06000000 mov edx, 6 ;edx初始化=2
004D8A5C |. B8 EC8A4D00 mov eax, FlashWal.004D8AEC ; ASCII "X3920A383KJDT34FERES" ;eax初始化
004D8A61 |. E8 4EC5F2FF call FlashWal.00404FB4
004D8A66 |. FF75 F4 push dword ptr ss:[ebp-C]
004D8A69 |. FF75 FC push dword ptr ss:[ebp-4]
004D8A6C |. FF75 F8 push dword ptr ss:[ebp-8]
004D8A6F |. 8BC3 mov eax, ebx
004D8A71 |. BA 03000000 mov edx, 3
上面这段代码是将3个字符串,作一定的处理,移位,然后将处理后的3个字串连成一个字符串,再用它与用户名运算,便得到注册码,
004D8302 |. E8 4DCAF2FF call FlashWal.00404D54 ;获得用户名长度
004D8307 |. 85C0 test eax, eax
004D8309 |. 7E 28 jle short FlashWal.004D8333
004D830B |. 8B45 FC mov eax, dword ptr ss:[ebp-4] ;eax为用户名
004D830E |. E8 41CAF2FF call FlashWal.00404D54
004D8313 |. 8B55 FC mov edx, dword ptr ss:[ebp-4]
004D8316 |. 807C02 FF 00 cmp byte ptr ds:[edx+eax-1], 0
004D831B |. 75 16 jnz short FlashWal.004D8333
004D831D |. B9 7C844D00 mov ecx, FlashWal.004D847C ; ASCII "Error: the last char is NULL char."
004D8322 |. B2 01 mov dl, 1
004D8324 |. A1 04814000 mov eax, dword ptr ds:[408104]
004D8329 |. E8 9649F3FF call FlashWal.0040CCC4
004D832E |. E8 F9C0F2FF call FlashWal.0040442C
004D8333 |> 8B45 F8 mov eax, dword ptr ss:[ebp-8] ;eax指向长字串
004D8336 |. E8 19CAF2FF call FlashWal.00404D54 ;eax返回字符串长度
004D833B |. 83F8 08 cmp eax, 8 ;等于8吗
004D833E |. 7D 2B jge short FlashWal.004D836B
004D8340 |. EB 0D jmp short FlashWal.004D834F
004D8342 |> 8D45 F8 /lea eax, dword ptr ss:[ebp-8] ;ebx清零
.........
.........
004D8385 |. 8D45 DC lea eax, dword ptr ss:[ebp-24]
004D8388 |> 8B55 F8 /mov edx, dword ptr ss:[ebp-8] ;edx指向字符串
004D838B |. 8A141A |mov dl, byte ptr ds:[edx+ebx] ;获取字符串字符
004D838E |. 8810 |mov byte ptr ds:[eax], dl ;存入[eax]
004D8390 |. 43 |inc ebx ;ebx=ebx+1
004D8391 |. 40 |inc eax ;eax指针指向下一位
004D8392 |. 83FB 08 |cmp ebx, 8 ;ebx=8吗
004D8395 |.^ 75 F1 \jnz short FlashWal.004D8388 ;不等则跳回去,继续取
004D8397 |. 6A 0F push 0F ; /Arg1 = 0000000F
004D8399 |. B9 F86E4E00 mov ecx, FlashWal.004E6EF8 ; |
004D839E |. 8D45 DC lea eax, dword ptr ss:[ebp-24] ; |
004D83A1 |. BA 07000000 mov edx, 7 ; |
004D83A6 |. E8 EDFAFFFF call FlashWal.004D7E98 ; \FlashWal.004D7E98
004D83AB |. 8D45 D8 lea eax, dword ptr ss:[ebp-28]
004D83AE |. E8 E1C6F2FF call FlashWal.00404A94
004D83B3 |. 8B45 FC mov eax, dword ptr ss:[ebp-4]
004D83B6 |. E8 99C9F2FF call FlashWal.00404D54
004D83BB |. 85C0 test eax, eax
004D83BD |. 79 03 jns short FlashWal.004D83C2
004D83BF |. 83C0 07 add eax, 7
004D83C2 |> C1F8 03 sar eax, 3
004D83C5 |. 48 dec eax
004D83C6 |. 85C0 test eax, eax
004D83C8 |. 7C 65 jl short FlashWal.004D842F
004D83CA |. 40 inc eax
004D83CB |. 8945 D0 mov dword ptr ss:[ebp-30], eax
004D83CE |. C745 D4 00000000 mov dword ptr ss:[ebp-2C], 0
004D83D5 |> 33DB /xor ebx, ebx ;ebx清零
004D83D7 |. 8D45 EC |lea eax, dword ptr ss:[ebp-14]
004D83DA |> 8B55 D4 |/mov edx, dword ptr ss:[ebp-2C]
004D83DD |. C1E2 03 ||shl edx, 3
004D83E0 |. 03D3 ||add edx, ebx
004D83E2 |. 8B4D FC ||mov ecx, dword ptr ss:[ebp-4] ;ecx指向用户名
004D83E5 |. 8A1411 ||mov dl, byte ptr ds:[ecx+edx] ;取用户名字符
004D83E8 |. 8810 ||mov byte ptr ds:[eax], dl ;存入[eax]
004D83EA |. 43 ||inc ebx
004D83EB |. 40 ||inc eax
.........
......不向下分析了,继续跟踪到这里
004D8F00 . 8B45 EC mov eax, dword ptr ss:[ebp-14] ;eax里存的便是真正的注册码,还等什么,赶快行动吧!
004D8F03 . 50 push eax
004D8F04 . 8D55 E4 lea edx, dword ptr ss:[ebp-1C]
004D8F07 . 8B83 FC020000 mov eax, dword ptr ds:[ebx+2FC]
004D8F0D . E8 9253F8FF call FlashWal.0045E2A4
004D8F12 . 8B55 E4 mov edx, dword ptr ss:[ebp-1C]
004D8F15 . 58 pop eax
--------------------------------------------------------------------------------
【破解总结】
这个软件的注册码是在计算后再与试练码存入文件或注册表(我没有分析)的,如果让它重起验证便麻烦了,所以直接找会省事一点。
--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
【破解作者】 WXHing
【作者邮箱】 [email]WXHing@163.com[/email]
【使用工具】 OllyDbg1.09
【破解平台】 Win9x/NT/2000/XP
【软件名称】 Flash Wallet
【下载地址】 中国共享软件注册中心
【软件简介】 据说是一款可以取代Windows资源管理器的软件,功能上要更强大!画面挺好看!
【软件大小】 2.08Mb
【保护方式】 序列号保护,重起验证
【破解声明】 初学破解,妄谈破解,不当之处还请各位前辈指教!
--------------------------------------------------------------------------------
【破解内容】
OD载入,注册之,确定之,不要关对话框,ALT+M查看内存镜像,搜索用户名'WXHing',,下内存访问断点,不要点确定,点取消(该软件会询问你是否愿意重新运行,验证注册码是否正确,如果点确定,那就会耽误时间的)
00402B0B |. F3:A5 rep movs dword ptr es:[edi], dword ptr> ;中断在这
00402B0D |. 89C1 mov ecx, eax
00402B0F |. 83E1 03 and ecx, 3
00402B12 |. F3:A4 rep movs byte ptr es:[edi], byte ptr d>
00402B14 |. 5F pop edi
00402B15 |. 5E pop esi
00402B16 |. C3 retn
004D8EED . E8 B253F8FF call FlashWal.0045E2A4 ;获取用户名长度,eax返回
004D8EF2 . 8B55 E8 mov edx, dword ptr ss:[ebp-18] ;edx存用户名
004D8EF5 . 8D4D EC lea ecx, dword ptr ss:[ebp-14]
004D8EF8 . 8B45 FC mov eax, dword ptr ss:[ebp-4]
004D8EFB . E8 70FCFFFF call FlashWal.004D8B70
004D8F00 . 8B45 EC mov eax, dword ptr ss:[ebp-14]
004D8F03 . 50 push eax
..........
..........
004D8A1E |. 8D45 FC lea eax, dword ptr ss:[ebp-4]
004D8A21 |. 50 push eax
004D8A22 |. B9 06000000 mov ecx, 6 ; ecx初始化=6
004D8A27 |. BA 03000000 mov edx, 3 ;edx初始化=3
004D8A2C |. B8 AC8A4D00 mov eax, FlashWal.004D8AAC ; ASCII "23SFAD721SKDF4DGDFSDF" ;eax初始化
004D8A31 |. E8 7EC5F2FF call FlashWal.00404FB4
004D8A36 |. 8D45 F8 lea eax, dword ptr ss:[ebp-8]
004D8A39 |. 50 push eax
004D8A3A |. B9 07000000 mov ecx, 7 ;ecx初始化=7
004D8A3F |. BA 02000000 mov edx, 2 ;edx初始化=2
004D8A44 |. B8 CC8A4D00 mov eax, FlashWal.004D8ACC ; ASCII "T283B26CIEKB3345SDFER" ;eax初始化
004D8A49 |. E8 66C5F2FF call FlashWal.00404FB4
004D8A4E |. 8D45 F4 lea eax, dword ptr ss:[ebp-C]
004D8A51 |. 50 push eax
004D8A52 |. B9 08000000 mov ecx, 8 ;ecx初始化=8
004D8A57 |. BA 06000000 mov edx, 6 ;edx初始化=2
004D8A5C |. B8 EC8A4D00 mov eax, FlashWal.004D8AEC ; ASCII "X3920A383KJDT34FERES" ;eax初始化
004D8A61 |. E8 4EC5F2FF call FlashWal.00404FB4
004D8A66 |. FF75 F4 push dword ptr ss:[ebp-C]
004D8A69 |. FF75 FC push dword ptr ss:[ebp-4]
004D8A6C |. FF75 F8 push dword ptr ss:[ebp-8]
004D8A6F |. 8BC3 mov eax, ebx
004D8A71 |. BA 03000000 mov edx, 3
上面这段代码是将3个字符串,作一定的处理,移位,然后将处理后的3个字串连成一个字符串,再用它与用户名运算,便得到注册码,
004D8302 |. E8 4DCAF2FF call FlashWal.00404D54 ;获得用户名长度
004D8307 |. 85C0 test eax, eax
004D8309 |. 7E 28 jle short FlashWal.004D8333
004D830B |. 8B45 FC mov eax, dword ptr ss:[ebp-4] ;eax为用户名
004D830E |. E8 41CAF2FF call FlashWal.00404D54
004D8313 |. 8B55 FC mov edx, dword ptr ss:[ebp-4]
004D8316 |. 807C02 FF 00 cmp byte ptr ds:[edx+eax-1], 0
004D831B |. 75 16 jnz short FlashWal.004D8333
004D831D |. B9 7C844D00 mov ecx, FlashWal.004D847C ; ASCII "Error: the last char is NULL char."
004D8322 |. B2 01 mov dl, 1
004D8324 |. A1 04814000 mov eax, dword ptr ds:[408104]
004D8329 |. E8 9649F3FF call FlashWal.0040CCC4
004D832E |. E8 F9C0F2FF call FlashWal.0040442C
004D8333 |> 8B45 F8 mov eax, dword ptr ss:[ebp-8] ;eax指向长字串
004D8336 |. E8 19CAF2FF call FlashWal.00404D54 ;eax返回字符串长度
004D833B |. 83F8 08 cmp eax, 8 ;等于8吗
004D833E |. 7D 2B jge short FlashWal.004D836B
004D8340 |. EB 0D jmp short FlashWal.004D834F
004D8342 |> 8D45 F8 /lea eax, dword ptr ss:[ebp-8] ;ebx清零
.........
.........
004D8385 |. 8D45 DC lea eax, dword ptr ss:[ebp-24]
004D8388 |> 8B55 F8 /mov edx, dword ptr ss:[ebp-8] ;edx指向字符串
004D838B |. 8A141A |mov dl, byte ptr ds:[edx+ebx] ;获取字符串字符
004D838E |. 8810 |mov byte ptr ds:[eax], dl ;存入[eax]
004D8390 |. 43 |inc ebx ;ebx=ebx+1
004D8391 |. 40 |inc eax ;eax指针指向下一位
004D8392 |. 83FB 08 |cmp ebx, 8 ;ebx=8吗
004D8395 |.^ 75 F1 \jnz short FlashWal.004D8388 ;不等则跳回去,继续取
004D8397 |. 6A 0F push 0F ; /Arg1 = 0000000F
004D8399 |. B9 F86E4E00 mov ecx, FlashWal.004E6EF8 ; |
004D839E |. 8D45 DC lea eax, dword ptr ss:[ebp-24] ; |
004D83A1 |. BA 07000000 mov edx, 7 ; |
004D83A6 |. E8 EDFAFFFF call FlashWal.004D7E98 ; \FlashWal.004D7E98
004D83AB |. 8D45 D8 lea eax, dword ptr ss:[ebp-28]
004D83AE |. E8 E1C6F2FF call FlashWal.00404A94
004D83B3 |. 8B45 FC mov eax, dword ptr ss:[ebp-4]
004D83B6 |. E8 99C9F2FF call FlashWal.00404D54
004D83BB |. 85C0 test eax, eax
004D83BD |. 79 03 jns short FlashWal.004D83C2
004D83BF |. 83C0 07 add eax, 7
004D83C2 |> C1F8 03 sar eax, 3
004D83C5 |. 48 dec eax
004D83C6 |. 85C0 test eax, eax
004D83C8 |. 7C 65 jl short FlashWal.004D842F
004D83CA |. 40 inc eax
004D83CB |. 8945 D0 mov dword ptr ss:[ebp-30], eax
004D83CE |. C745 D4 00000000 mov dword ptr ss:[ebp-2C], 0
004D83D5 |> 33DB /xor ebx, ebx ;ebx清零
004D83D7 |. 8D45 EC |lea eax, dword ptr ss:[ebp-14]
004D83DA |> 8B55 D4 |/mov edx, dword ptr ss:[ebp-2C]
004D83DD |. C1E2 03 ||shl edx, 3
004D83E0 |. 03D3 ||add edx, ebx
004D83E2 |. 8B4D FC ||mov ecx, dword ptr ss:[ebp-4] ;ecx指向用户名
004D83E5 |. 8A1411 ||mov dl, byte ptr ds:[ecx+edx] ;取用户名字符
004D83E8 |. 8810 ||mov byte ptr ds:[eax], dl ;存入[eax]
004D83EA |. 43 ||inc ebx
004D83EB |. 40 ||inc eax
.........
......不向下分析了,继续跟踪到这里
004D8F00 . 8B45 EC mov eax, dword ptr ss:[ebp-14] ;eax里存的便是真正的注册码,还等什么,赶快行动吧!
004D8F03 . 50 push eax
004D8F04 . 8D55 E4 lea edx, dword ptr ss:[ebp-1C]
004D8F07 . 8B83 FC020000 mov eax, dword ptr ds:[ebx+2FC]
004D8F0D . E8 9253F8FF call FlashWal.0045E2A4
004D8F12 . 8B55 E4 mov edx, dword ptr ss:[ebp-1C]
004D8F15 . 58 pop eax
--------------------------------------------------------------------------------
【破解总结】
这个软件的注册码是在计算后再与试练码存入文件或注册表(我没有分析)的,如果让它重起验证便麻烦了,所以直接找会省事一点。
--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏记录
参与人
雪币
留言
时间
一路南寻
为你点赞~
2024-4-3 01:53
嫉妒的死远点
为你点赞~
2024-3-5 00:37
一笑人间万事
为你点赞~
2024-2-17 04:07
shinratensei
为你点赞~
2023-4-11 01:56
QinBeast
为你点赞~
2023-3-31 03:14
赞赏
他的文章
看原图
赞赏
雪币:
留言: