好友
阅读权限30
听众
最后登录1970-1-1
|
本帖最后由 CHHSun 于 2009-5-12 11:40 编辑
[ 破文标题 ]xxx文件夹加密大师-内存补丁+找注册码
[ 破文作者 ] CHHSun
[ 作者邮箱 ] 没有
[ 作者主页 ] http://hi.baidu.com/chhsun611
[ 破解工具 ] OD
[ 破解平台 ] Windows XP SP2
[ 软件名称 xxx文件夹加密大师2009 Build 90421
[ 软件大小 ] RAR压缩1.34M
[ 原版下载 ] 支持国软
[ 保护方式 ] ASPack 2.12 -> Alexey Solodovnikov,注册表重启验证
[ 软件简介 ] 文件夹加密
[ 破解声明 ] 本破文只供学习使用,不的用于非法用途。
-----------------------------------------------------
[ 破解过程 ]-----------------------------------------
方法1、脱壳后查找字符串
注册成功,感谢您的支持!请重新运行本软件
方法2,不脱壳不找字符串,有些程序是没有字符串让你找的,而且有的壳也不好脱。
有重启验证提示框,但用提示窗口断点MessageBox(A/W) MessageBoxEx(A/W)都断不下来。万能断点也没断下,汗!
那么就用断输入文本框bp GetWindowTextA下断断下
0012F450 00485DFC /CALL 到 GetWindowTextA 来自 ediamond.00485DF7
0012F454 0021024E |hWnd = 0021024E ('文件夹加密大师',class='TApplication')
0012F458 0012F460 |Buffer = 0012F460
0012F45C 00000100 \Count = 100 (256.)
取消断点,在断下这一行返回到程序,到
00485DF6 50 push eax
00485DF7 E8 A415F8FF call ediamond.004073A0
00485DFC 8BC8 mov ecx,eax ;返回到这里,F2下断,F9运行,断下后,F8向下走,
中间如果有向上的跳转,用F4步过。跟呀跟一直跟到出现错误提示框。
到这里出现错
00435AF4 FF92 EC000000 call dword ptr ds:[edx+EC] ;错误提示框。
00435AFA 8945 F8 mov dword ptr ss:[ebp-8],eax
00435AFD 33C0 xor eax,eax
出现错误了,那我们就向上找是从哪里来的是否能跳过。找到段首
00435A74 55 push ebp :段首,F2下段,
00435A75 8BEC mov ebp,esp
00435A77 83C4 F4 add esp,-0C
00435A7A 53 push ebx
F9运行,中断后看堆栈
0012F614 00435A6F 返回到 ediamond.00435A6F 来自 ediamond.00435A74
在这一行在次返回,返回到
00435A6A E8 05000000 call ediamond.00435A74
00435A6F 59 pop ecx ;返回到这里
00435A70 5D pop ebp
向上找到段首,下断硬件执行断点(因为有壳,在这里程序死掉,重新来过),F9运行
00435A50 55 push ebp ;段首
00435A51 8BEC mov ebp,esp
00435A53 51 push ecx
重来输入假码断下后,看堆栈停在
0012F630 00435B46 返回到 ediamond.00435B46 来自 ediamond.00435A50
删除硬件执行断点在这一行返回到,
00435B46 C3 ret 返回到这里,晕了吧,是个ret,这个怎么返回来,
00435B47 000400 add byte ptr ds:[eax+eax],al
00435B4A 0000 add byte ptr ds:[eax],al
不管他是在哪返回的,在这个ret上下硬件执行断点。F9运行后输入假码也断不下来了,一直在这个ret上,在看堆栈
0012F640 00435B33 返回到 ediamond.00435B33 来自 ediamond.00435B34 停在这里
0012F644 004FF0E3 返回到 ediamond.004FF0E3 来自 ediamond.00435B28 我们在这里返回
0012F648 0012F6A4 指向下一个 SEH 记录的指针
0012F64C 004FF1BF SE处理程序
在ediamond.004FF0E3 来自 ediamond.00435B28返回,到
004FF0DE E8 456AF3FF call ediamond.00435B28
004FF0E3 EB 04 jmp short ediamond.004FF0E9 返回到这里,向上找
004FF0E5 EB 05 jmp short ediamond.004FF0EC
004FF0E7 2901 sub dword ptr ds:[ecx],eax
004FF0E9 E9 85000000 jmp ediamond.004FF173
找到上面段首,在哪个地方下断后能断下的地方都行
我还找了004FEF4D这个地方。在向上也还行。
----
最终都会找到这里来
004FEF4D 50 push eax 在这里F2下断
004FEF4E B9 06000000 mov ecx,6
004FEF53 BA 03000000 mov edx,3
004FEF58 8B45 FC mov eax,dword ptr ss:[ebp-4]
004FEF5B E8 B458F0FF call ediamond.00404814
004FEF60 8B45 EC mov eax,dword ptr ss:[ebp-14]
004FEF63 BA D4F14F00 mov edx,ediamond.004FF1D4 ; 9AEB9C
004FEF68 E8 9357F0FF call ediamond.00404700
004FEF6D 75 21 jnz short ediamond.004FEF90
F9运行输入假码,中断后F8单步到004ff064 CALL
004FF064 E8 3798FCFF call ediamond.004C88A0 关键CALL,F7跟进
004FF069 84C0 test al,al
004FF06B 74 6C je short ediamond.004FF0D9
004FF06D 8D55 D8 lea edx,dword ptr ss:[ebp-28]
004FF070 8B86 F8020000 mov eax,dword ptr ds:[esi+2F8]
004FF076 E8 7170F6FF call ediamond.004660EC
004FF07B 8B4D D8 mov ecx,dword ptr ss:[ebp-28]
004FF07E A1 E0945000 mov eax,dword ptr ds:[5094E0]
004FF083 8B00 mov eax,dword ptr ds:[eax]
004FF085 BA E4F14F00 mov edx,ediamond.004FF1E4 ; UserName
004FF08A E8 E928FEFF call ediamond.004E1978
中断在004ff064 CALL看堆栈显示
0012F66C 010BB378 ASCII "09000000B80904E1895065277E1A19D56D77718D"这一串不知是怎么加密行成的。
0012F670 010BB310 ASCII "123456789" 假码
0012F674 010B30AC ASCII "123"
0012F678 010BB2FC ASCII "345678"
0012F67C 010BB2CC ASCII "123456789"
0012F680 010BB2B4 ASCII "123456789"
0012F684 010BB2A0 ASCII "CHHSun" 用户名
0012F688 010BB378 ASCII "09000000B80904E1895065277E1A19D56D77718D"
F7跟进到004FF064 E8 3798FCFF call ediamond.004C88A0
来到
004C88A0 55 push ebp ;到这,F8向下走
004C88A1 8BEC mov ebp,esp
004C88A3 33C9 xor ecx,ecx
004C88A5 51 push ecx
004C88A6 51 push ecx
F8向下走到,004c8936,这个CALL是注册码出现的CALL
004C8936 E8 C5BDF3FF call ediamond.00404700 ; 关键CALL,F7跟进,
004C893B 0F94C3 sete bl ; 爆破点,
1、如要爆破,F8单步到004C893B 看辅助窗口
条件为假 FALSE bl=04,我们要他条件为真才行。把sete bl 改为 setne bl,可写内存补丁。
2、找找注册码,F7跟进004C8936 E8 C5BDF3FF call ediamond.00404700
来到
00404700 53 push ebx
00404701 56 push esi
00404702 57 push edi
00404703 89C6 mov esi,eax
00404705 89D7 mov edi,edx
00404707 39D0 cmp eax,edx ; 比较两串是否相等如相等就OK。
00404709 0F84 8F000000 je ediamond.0040479E
0040470F 85F6 test esi,esi
F8到00404707看看辅助窗口
edx=010BA1C4, (ASCII "04E189")
eax=010BA1F4, (ASCII "D5EEC1")
这两串比较,如果相等就跳向成功。
我们在看看堆栈
0012F62C 00000004
0012F630 010BA1C4 ASCII "04E189"
0012F634 010BA1F4 ASCII "D5EEC1"
0012F638 010BA180 ASCII "090000"
0012F63C 010BA214 ASCII "09000000B80904E1895065277E1A19D56D77718D"
ASCII "04E189"是ASCII "09000000B80904E1895065277E1A19D56D77718D"的第13位到第18位
如果13-18位等于D5EEC1那么就注册成功。
所以的出一组注册码就是
用户名:CHHSun
注册码:09000000B809D5EEC15065277E1A19D56D77718D
经测试注册成功,已注册。(注册机不会写- -!)
注册信息写入注册表
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\FolderEncryption]
"UninstallPsw"=""
"UserName"="CHHSun"
"RegCode"="09000000B809D5EEC15065277E1A19D56D77718D"
"RegDate"="09-05-01" |
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|