TA的每日心情 | 开心 2015-8-23 23:49 |
---|
签到天数: 27 天 [LV.4]偶尔看看III
|
【破文标题】文件加锁王飘云阁特别版 重起验证爆破追码过程
【破文作者】gglhy
【作者邮箱】
【作者主页】
【破解工具】PEID看雪版、W32DSM、OD、Aspackdie、keymake1.73
【破解平台】Winxp-sp2
【软件名称】文件加锁王2007企业版 V 6.47 飘云阁特别版
【软件大小】
【原版下载】
【保护方式】
【软件简介】
【破解声明】只为了解软件的保护技术、顺便看看非计算机专业的自己水平有多菜。时刻谨记:追码不为利只为艺!
------------------------------------------------------------------------
【破解过程】 先说点题外话:从网上下了这个软件,安装时发现有“附赠一组正版KEY:用户名:Nisy 注册码:[随意]-[00556050BD]-[随意]”,于是想看看自己能否找出自己的注册信息。于是就没有用Nisy大侠的附赠正版KEY注册,于是就有了这篇破文。我不知道PYG是否有了这个软件的破文,但我觉得应当将我自己的破解经过纪录下来,留下我的足印。因此,如果本文有与其他破文雷同之处,我只想说“我没作弊!”
1.运行folderlockpro.exe,呵呵,注册时发现注册名称:Nisy,授权密码******-**********-******已填入,注册认证按钮为灰,用激活专家.exe也无法激活它,显然不能注册。退出。
为什么不能注册呢?Use your head,and you will find a way! 分析一下,这可能有以下的几种情况:
(1)程序已注册,注册认证按钮是灰色的;
(2)程序是实时验证,注册信息正确的话注册认证按钮就被被激活;
(3)其他我还没有掌握的情况 :)
2.那我们先来对第一种情形实验一下:
OD载入,N次F9运行后,输入密码:1234后进入主界面,查找字符串,没有什么发现。
用PEID查壳:ASPack 2.12 -> Alexey Solodovnikov ,Aspackdie脱后的UNPACKED.EXE无法运行,看来有自校验?W32DSM出马。找到如下信息:
(这里省略部分信息)
A “ 提示:软件试用期已到,要继续使用,请和供应商联系注册。” ----(00506EC9)
B" 提示:未注册版本可以免费使用10天,现在还剩下" ----(00506F4A)
C"请重新启动软件以验证注册码!感谢您对我们的支? ----(呵呵,W32告诉我字符串没找到!)
OD载入,右键--转到--表达式,输入:00506EC9,确定,来到:
(这里省略部分代码)
00506E78 55 push ebp
00506E79 68 9F6F5000 push 00506F9F
00506E7E 64:FF30 push dword ptr fs:[eax]
00506E81 64:8920 mov fs:[eax], esp
00506E84 8B83 E4040000 mov eax, [ebx+4E4]
00506E8A E8 69EDFEFF call 004F5BF8
00506E8F 84C0 test al, al
00506E91 74 4A je short 00506EDD
00506E93 A1 B41E5100 mov eax, [511EB4]
00506E98 8B80 F0040000 mov eax, [eax+4F0]
00506E9E 33D2 xor edx, edx
00506EA0 8B08 mov ecx, [eax]
00506EA2 FF51 64 call [ecx+64]
00506EA5 A1 B41E5100 mov eax, [511EB4]
00506EAA 8B80 2C030000 mov eax, [eax+32C]
00506EB0 33D2 xor edx, edx
00506EB2 8B08 mov ecx, [eax]
00506EB4 FF51 64 call [ecx+64]
00506EB7 A1 B41E5100 mov eax, [511EB4]
00506EBC 8B80 3C030000 mov eax, [eax+33C]
00506EC2 33D2 xor edx, edx
00506EC4 8B08 mov ecx, [eax]
00506EC6 FF51 64 call [ecx+64]
00506EC9 BA B46F5000 mov edx, 00506FB4 ; 提示:软件试用期已到,要继续使用,请和供应商联 系注册。
00506ECE A1 B41E5100 mov eax, [511EB4]
00506ED3 E8 94EBF3FF call 00445A6C
00506ED8 E9 A7000000 jmp 00506F84
00506EDD 8B83 E4040000 mov eax, [ebx+4E4]
00506EE3 E8 E8E6FEFF call 004F55D0
00506EE8 84C0 test al, al
00506EEA 74 5E je short 00506F4A
00506EEC 33D2 xor edx, edx
00506EEE 8B83 BC040000 mov eax, [ebx+4BC]
00506EF4 8B08 mov ecx, [eax]
00506EF6 FF51 64 call [ecx+64]
00506EF9 BA F46F5000 mov edx, 00506FF4 ; *****
00506EFE 8B83 D0040000 mov eax, [ebx+4D0]
00506F04 E8 63EBF3FF call 00445A6C
00506F09 BA F46F5000 mov edx, 00506FF4 ; *****
00506F0E 8B83 D8040000 mov eax, [ebx+4D8]
00506F14 E8 53EBF3FF call 00445A6C
00506F19 BA 04705000 mov edx, 00507004 ; 文件加锁王企业版飘云阁论坛奉送
00506F1E A1 B41E5100 mov eax, [511EB4]
00506F23 E8 44EBF3FF call 00445A6C
00506F28 BA 2C705000 mov edx, 0050702C ; nisy
00506F2D 8B83 C8040000 mov eax, [ebx+4C8]
00506F33 E8 34EBF3FF call 00445A6C
00506F38 BA 3C705000 mov edx, 0050703C ; xxxxxxxxxx
00506F3D 8B83 D4040000 mov eax, [ebx+4D4]
00506F43 E8 24EBF3FF call 00445A6C
00506F48 EB 3A jmp short 00506F84
00506F4A 68 50705000 push 00507050 ; 提示:未注册版本可以免费使用10天,现在还剩下
00506F4F 8B83 E4040000 mov eax, [ebx+4E4]
00506F55 E8 36E6FEFF call 004F5590
00506F5A 8D55 F8 lea edx, [ebp-8]
00506F5D E8 EE27F0FF call 00409750
00506F62 FF75 F8 push dword ptr [ebp-8]
00506F65 68 84705000 push 00507084 ; 天。
看,00506E91处的je short 00506EDD实现的话,就表示还在注册期内,因此,必须让00506e91的跳转实现,这是一个爆破点,改为JMP。
那么这一段程序是从哪跳来的?在W32DSM中一分析,原来,这个跳转来自00508CAC,好。OD中表达式输入00508CAC,来到:
00508CA7 64:8920 mov fs:[eax], esp
00508CAA 8BC3 mov eax, ebx
00508CAC E8 BBE1FFFF call 00506E6C
这个00508CAC处的CALL肯定有问题。猜想它可能是判断程序是否已经注册的,那么是不是它的存在无法让注册按钮生效呢?好验证一下,选中这3行,右键--》二进制--》用NOP填充,再点程序的软件注册按钮,哈哈,注册名称、授权密码、注册认证按钮都能用了。看来猜的没错。填入假码:注册名称:gglhy,授权密码111111-2222222222222222-333333 点注册认证按钮,告诉我重起!OK,现在解决了不能注册的问题了。
能注册就好办了。现在OD载入,右键--转到--表达式,输入:00506F4A,点确定。然后右键查找字符串-->ASCII,呵呵,看到了好多让我看见希望的东东!:)
比如:
“0050B49A 未输入注册码或者输入的注册码不正确,请重新输入或者与软件供应商联系!”哈哈!在W32中可没看见吧
“0050B4C6 请重新启动软件以验证注册码!\n感谢您对我们的支持,我们将为您提供终身免费升级。”
OD中右键--转到--表达式,输入:0050B49A,来到这里:
0050B48E E8 01A5FEFF call 004F5994
0050B493 84C0 test al, al
0050B495 75 2C jnz short 0050B4C3
0050B497 8D45 FC lea eax, [ebp-4]
0050B49A BA 30B55000 mov edx, 0050B530 ; 【提示信息】:未输入注册码或者输入的注册码不正确,请重新输入或者与软件供应商联系!
0050B49F E8 8096EFFF call 00404B24
0050B4A4 6A 40 push 40
0050B4A6 8B45 FC mov eax, [ebp-4]
0050B4A9 E8 8E9AEFFF call 00404F3C
0050B4AE 8BD0 mov edx, eax
0050B4B0 B9 84B55000 mov ecx, 0050B584 ; 提示信息
0050B4B5 A1 B4035100 mov eax, [5103B4]
0050B4BA 8B00 mov eax, [eax]
0050B4BC E8 83B4F5FF call 00466944
0050B4C1 EB 36 jmp short 0050B4F9
0050B4C3 8D45 FC lea eax, [ebp-4]
0050B4C6 BA 98B55000 mov edx, 0050B598 ; 请重新启动软件以验证注册码!\n感谢您对我们的 支持,我们将为您提供终身免费升级。
0050B4CB E8 5496EFFF call 00404B24
分析下,0050B495的跳实现了的话,就会跳到00500B4C6 处的提示重起验证地方来,能否跳过重起验证呢?看0050B4C6处的重起验证上边00500B4C1有个JMP,这个JMP跳过了重起验证。除了0050B495外这个JMP上方有没有什么跳会跳过这个JMP?在这一段里好象没有了。但是如果我们把它NOP掉呢,会发生什么?显然,0050B49A的错误信息就会出现。那么0050B48E处的call就很关键了。必须进去看看。下断后填入假码注册被OD断下了,F7进入:然后F8前进到这里:
004F5A19 E8 BAFBFFFF call 004F55D8
004F5A1E 8B45 F0 mov eax, dword ptr >
004F5A21 8B55 F0 mov edx, dword ptr >
004F5A24 E8 3338F1FF call 0040925C
在右边堆栈处看到:
0012FBC4 00ECDF24 ASCII "005B797AD8"
0012FBC8 00ECDECC ASCII "2222222222222222222222222"
0012FBCC 00000000
0012FBD0 00EAAB6C ASCII "gglhy"
"005B797AD8"第一次出现。 呵呵。这个字符串居然敢和我的假码(的中段)在一起聊天!
这里004F5A19的call 是不是该进去LOOK下?
OD重新载入,(前面该修改的就修改,该F2的就F2,不废话了)在004F5A19下断,运行到004F5A19后F7+N*F8,沿途看见一个字符串"gf258gglhy369gf"重复出现。要不是我的数学一直在及格线上徘徊,我还真想跟一跟它的来历。
当来到004f5737时,
004F5732 E8 7D40F1FF call 004097B4
004F5737 8B07 mov eax, dword ptr [edi]
004F5739 E8 06F6F0FF call 00404D44
右边堆栈看到
0012FBC4 |00ECDEF8 ASCII "005B797AD8"
0012FBC8 |00ECDEA4 ASCII "22222222222222222222222"
0012FBCC |00000000
0012FBD0 |00E950C0 ASCII "gglhy"
------------------------------------------------------------------------
【破解总结】呵呵,先动脑再动手,往往事半功倍!
------------------------------------------------------------------------
【版权声明】请尊重软件作者的辛勤劳动,破解只为艺不为利! |
|