欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

SWF 探索者 1.4 的破解

程序员文章站 2022-03-12 16:54:27
初学破解!请大侠指导! 版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢! 【破文标题】SWF探索者1.4的破解 【破文作者】云瑞 【作者性别】男 ... 08-10-08...
初学破解!请大侠指导!
版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
【破文标题】swf探索者1.4的破解
【破文作者】云瑞
【作者性别】男
【作者主页】您的主页
【作者邮箱】melove95@163.com
【所属组织】第九舰队
【软件名称】swf探索者1.4
【下载地址】
【破解工具】ollydbg1.10,c32asm,unpecompact,peid0.92汉
【保护方式】pecpmpact1.68-1.84
【软件限制】时间限制
【破解难度】中等
----------------------------------------------------
软件介绍:
很不错的动画播放器,以前有人破解过1.1和1.2,
----------------------------------------------------
破解声名:
----------------------------------------------------
【破解分析】
首先安装swf探索者1.4,运行程序,在关于中输入注册信息,用户名:king,注册email:winners365@163.com,注册码999555(当然是错误的),然后点注册,出现thanksreg!然后用peid 打开程序,是用pecompact1.68-1.84加的壳,我用专用脱壳工具unpecompact,脱壳,保存为unpacked.然后用c32asm0.412反汇编,点字符串搜索,看到thanksreg,然后双击,来到代码处,004c79e8 .^e9 dfc7f3ff jmp unpacked.004041cc
004c79ed .^eb f0 jmp short unpacked.004c79df
004c79ef . 8d4d dc lea ecx,dword ptr ss:[ebp-24]
004c79f2 . a1 10244d00 mov eax,dword ptr ds:[4d2410]
004c79f7 . 8b00 mov eax,dword ptr ds:[eax]
004c79f9 . ba b47a4c00 mov edx,unpacked.004c7ab4 ; ascii "thanksreg"
004c79fe . e8 31edffff call unpacked.004c6734
004c7a03 . 8b45 dc mov eax,dword ptr ss:[ebp-24]
004c7a06 . e8 3592f7ff call unpacked.00440c40
004c7a0b . a1 04254d00 mov eax,dword ptr ds:[4d2504]
004c7a10 . 8b00 mov eax,dword ptr ds:[eax]
004c7a12 . e8 851cfaff call unpacked.0046969c
004c7a17 . 33c0 xor eax,eax
004c7a19 . 5a pop edx ; kernel32.7c81774d
004c7a1a . 59 pop ecx ; kernel32.7c81774d
然后我就对此处下断,向上看,发现regcode,估计在此处将进行某些处理。004c79c5 |. ba a47a4c00 mov edx,unpacked.004c7aa4 ; ascii "regcode"
004c79ca |. 8b45 fc mov eax,dword ptr ss:[ebp-4]
004c79cd |. e8 d6f6fbff call unpacked.004870a8
004c79d2 |. 33c0 xor eax,eax
004c79d4 |. 5a pop edx ; kernel32.7c81774d
004c79d5 |. 59 pop ecx ; kernel32.7c81774d
004c79d6 |. 59 pop ecx ; kernel32.7c81774d
004c79d7 |. 64:8910 mov dword ptr fs:[eax],edx ; ntdll.kifastsystemcallret
004c79da |. 68 ef794c00 push unpacked.004c79ef
004c79df |> 8b45 fc mov eax,dword ptr ss:[ebp-4]
004c79e2 |. e8 51c0f3ff call unpacked.00403a38
004c79e7 \. c3 retn
004c79e8 .^e9 dfc7f3ff jmp unpacked.004041cc
004c79ed .^eb f0 jmp short unpacked.004c79df
004c79ef . 8d4d dc lea ecx,dword ptr ss:[ebp-24]
004c79f2 . a1 10244d00 mov eax,dword ptr ds:[4d2410]
004c79f7 . 8b00 mov eax,dword ptr ds:[eax]
004c79f9 . ba b47a4c00 mov edx,unpacked.004c7ab4 ; ascii "thanksreg"
004c79fe . e8 31edffff call unpacked.004c6734
004c7a03 . 8b45 dc mov eax,dword ptr ss:[ebp-24]
打开ollgdbg,对004c79c5也下断,然后按f9运行,没有断到需要的东西,估计在初始化时生成了注册码,然后存在某地址处,于是,就重新下断,
后来找到
00487058 |. e8 7bdcf7ff call unpacked.00404cd8
0048705d |. 50 push eax ; |valuename = null
0048705e |. 8b46 04 mov eax,dword ptr ds:[esi 4] ; |
00487061 |. 50 push eax ; |hkey = 0
00487062 |. e8 31fef7ff call ; \regqueryvalueexa(个人认为与注册有关!)
00487067 |. 85c0 test eax,eax
00487069 |. 0f94c3 sete bl
0048706c |. 8b0424 mov eax,dword ptr ss:[esp] ; kernel32.7c81774d
0048706f |. e8 50fcffff call unpacked.00486cc4
00487074 |. 8845 00 mov byte ptr ss:[ebp],al
00487077 |. 8bc3 mov eax,ebx
00487079 |. 5a pop edx ; kernel32.7c81774d
于是就下端,然后遇到seh,用shirt f7单步跟踪,在7c82dad4位置停下,在堆栈窗口12ec4c会发现一个ascii字符串“d092e68f”这个就是注册码了,嘿嘿!