-
-
[旧帖] [原创]ActivestartupV1.43 build95(申请邀请码) 0.00雪花
-
发表于: 2009-12-3 15:33 1062
-
前言
学习破解已经有一段时间了,上网找软件练习时发现的这个软件的。自己拿来破解一下,觉得写出来和大家一起分享一下。不知道有没有被别人写出来过,如果有,请别介意。
正题:破解ActivestartupV1.43 build95的程序
查壳是:Version: ASProtect 2.xx (may be 2.11) Registered [1]
这一个是强壳的,但是破起来并不是很难,只要是大家有耐心都可以破它的。
脱Asprotect SKE 2.x壳会遇到如下情况:
1. Emulate standard system functions(易)
2. Advanced Import protection(中)
3. Stolen OEP (脱Asprotect难点就在这,体力+毅力+技巧+时间)
4. SDK (脱Asprotect难点就在这,体力+毅力+技巧+时间)
对于这个软件,如果要全部用手工的话,会很麻烦的。在这里我们使用脚本来帮我们处理前面的两步。
现在我们要做的工作是:
1:用脚本处理IAT,到达Stolen OEP'Start。
忽略所有的异常,隐藏OD,运行脚本。
00401000 Act> 68 01605100 push ActiveSt.00516001 这里是程序入口点
00401005 E8 01000000 call ActiveSt.0040100B
0040100A C3 retn
0040100B C3 retn
运行脚本后的OD中的信息
00D30378 55 push ebp 这里就是stolen oep start 待会要用到 我们记录下来然后用Lord PE 和ImportREC来修复,会有两个函数是无效的,用插件来修复就行了)
00D30379 036C24 38 add ebp,dword ptr ss:[esp+38]
00D3037D 36:EB 01 jmp short 00D30381
00D30380 9A 8B6C2410 F2EB call far EBF2:10246C8B
00D30387 01F0 add eax,esi
------------------------------------------------------------------------------------------------------------------
下面我们要找到stolen code结束的地方。
我们用F7向下走,一直到这里
00D311A3 2BDF sub ebx,edi
00D311A5 C703 84E74C00 mov dword ptr ds:[ebx],4CE784
00D311AB 5B pop ebx
00D311AC 8F01 pop dword ptr ds:[ecx]
00D311AE 59 pop ecx
00D311AF 66:9D popfw
00D311B1 C1D0 77 rcl eax,77
00D311B4 B8 26374300 mov eax,433726 ; ASCII "place"
00D311B9 58 pop eax
00D311BA 68 3A18D300 push 0D3183A
00D311BF E8 3CEE0B00 call 00DF0000 这个就是Stolen code的结束位置了
00D311C4 68 A609D300 push 0D309A6
00D311C9 E8 32EE0B00 call 00DF0000
00D311CE 57 push edi
00D311CF E9 87010000 jmp 00D3135B
00D311D4 83D9 AB sbb ecx,-55
00D311D7 B9 0E514400 mov ecx,44510E
00D311DC 6A 32 push 32
00D311DE 66:9C pushfw
下面我们就是要找VM区段
一直F7单向下走,一直到
00DF0137 8DAC07 8C614400 lea ebp,dword ptr ds:[edi+eax+>
00DF013E 5D pop ebp
00DF013F 55 push ebp
00DF0140 036C24 18 add ebp,dword ptr ss:[esp+18]
00DF0144 C1D5 B7 rcl ebp,0B7
00DF0147 81E8 2426F568 sub eax,68F52624
00DF014D 81D0 FC7C50FB adc eax,FB507CFC
00DF0153 8D87 FC84B300 lea eax,dword ptr ds:[edi+B384>
00DF0159 2BC7 sub eax,edi
00DF015B FFD0 call eax 一直到这里,在这里我们会看到左手边有一个eax=00B384FC 这个就是我们要的VM区段了。
00DF0164 B8 768D4900 mov eax,498D76
00DF0169 034424 38 add eax,dword ptr ss:[esp+38]
00DF016D 58 pop eax
00DF016E F4 hlt
00DF016F 87B6 00C30000 xchg dword ptr ds:[esi+C300],e>
00DF0175 0000 add byte ptr ds:[eax],al
00DF0177 0000 add byte ptr ds:[eax],al
00DF0179 0000 add byte ptr ds:[eax],al
下面我们要找的就是Route Check了。
在上面的那个call eax 那里用F7进去,然后就会F8向下走,一直到
00B38537 8B73 30 mov esi,dword ptr ds:[ebx+30]
00B3853A 8B7B 14 mov edi,dword ptr ds:[ebx+14]
00B3853D A1 E497B300 mov eax,dword ptr ds:[B397E4]
00B38542 8B40 34 mov eax,dword ptr ds:[eax+34]
00B38545 FFD0 call eax 一直到这里,记下左手边的eax=00D00000 这个就是待会要用到的RC区段了。
00B38547 2945 0C sub dword ptr ss:[ebp+C],eax
00B3854A 8B45 0C mov eax,dword ptr ss:[ebp+C]
00B3854D 2B43 18 sub eax,dword ptr ds:[ebx+18]
已经找到我们想要的东西了,我们现在来补区段了。
一般情况下,
一般的补区段的顺序
VM(2个)
Route Check(1个)
Stolen Code(一般是>10个) 是从最小的那一个补起来的。
用LordPE来补区段,来区域转存下面这十多个
Region00B10000-00B43000.dmp
Region00B50000-00B54000.dmp
这两个就是vm区段的
Region00D00000-00D01000.dmp 这个是RC
下面的就是Stolen code的了
Region00D30000-00D34000.dmp
Region00D40000-00D42000.dmp
Region00D50000-00D52000.dmp
Region00D60000-00D61000.dmp
Region00D70000-00D71000.dmp
Region00D80000-00D81000.dmp
Region00D90000-00D91000.dmp
Region00DA0000-00DA1000.dmp
Region00DB0000-00DB1000.dmp
Region00DC0000-00DC1000.dmp
Region00DD0000-00DD1000.dmp
Region00DE0000-00DE1000.dmp
Region00DF0000-00DF1000.dmp
Region00E00000-00E01000.dmp
现在用LordPE来修了,打开PE编辑器,选中修复的那一个程序,点区段,从磁盘中载入,把上面的这些转存出来的区段全部补上去,记住一定要从小到大的,否则就全功尽弃了。
点完之后就保存一下,我们用CFF Xplorer来改虚拟地址快一些。
虚拟地址 =转存出来的区段的前面数字—00400000
全部填好,记得最后要核对一次。点保存,全部覆盖就行了。
现在我们要做的就是重建PE 了.重建完后
现在要做的就是修复RC了。
在上面我们不是已经找到了RC的位置的了,所以
用OD载入刚才修复好的程序,直接查找RC上面的一个跳,在那下断点,按F9,中断下来,
00B38534 /EB 01 jmp short dumped_.00B38537
00B38536 |698B 73308B7B 14A1E4>imul ecx,dword ptr ds:[ebx+7B8>
00B38540 B3 00 mov bl,0
00B38542 8B40 34 mov eax,dword ptr ds:[eax+34] 从这里开始
00B38545 FFD0 call eax
00B38547 2945 0C sub dword ptr ss:[ebp+C],eax
00B3854A 8B45 0C mov eax,dword ptr ss:[ebp+C]
00B3854D 2B43 18 sub eax,dword ptr ds:[ebx+18]
00B38550 2B43 68 sub eax,dword ptr ds:[ebx+68]
00B38553 8945 FC mov dword ptr ss:[ebp-4],eax
00B38556 8D43 24 lea eax,dword ptr ds:[ebx+24]
00B38559 8945 F8 mov dword ptr ss:[ebp-8],eax
00B3855C 85FF test edi,edi
00B3855E 76 38 jbe short dumped_.00B38598
从call eax 的上一句开始,使用下面的数字二进制粘贴就可以了,保存一份文件。
90 90 90 8B 44 24 58 83 E8 05 90
现在查壳是Borland Delphi DLL.
就是这样就成功的脱壳了。
我们把电脑的时间调后一些,原来的程序会出现这个注册的窗口。
下面就是注册的了,个人认为从2.xx版本开始的,是出现第三次硬盘指纹出现才返回的,找到我们要注册的地方,下面就由大家去做吧,比较简单,就不写出来了。
奇怪的是:注册成功后,那个试用的窗口依然还在,但是里面的相关信息都已经注册的了,可以无限的使用了。我不知道如何把这一个窗口给去掉,希望有人可以告诉我一声,不胜感激。
学习破解已经有一段时间了,上网找软件练习时发现的这个软件的。自己拿来破解一下,觉得写出来和大家一起分享一下。不知道有没有被别人写出来过,如果有,请别介意。
正题:破解ActivestartupV1.43 build95的程序
查壳是:Version: ASProtect 2.xx (may be 2.11) Registered [1]
这一个是强壳的,但是破起来并不是很难,只要是大家有耐心都可以破它的。
脱Asprotect SKE 2.x壳会遇到如下情况:
1. Emulate standard system functions(易)
2. Advanced Import protection(中)
3. Stolen OEP (脱Asprotect难点就在这,体力+毅力+技巧+时间)
4. SDK (脱Asprotect难点就在这,体力+毅力+技巧+时间)
对于这个软件,如果要全部用手工的话,会很麻烦的。在这里我们使用脚本来帮我们处理前面的两步。
现在我们要做的工作是:
1:用脚本处理IAT,到达Stolen OEP'Start。
忽略所有的异常,隐藏OD,运行脚本。
00401000 Act> 68 01605100 push ActiveSt.00516001 这里是程序入口点
00401005 E8 01000000 call ActiveSt.0040100B
0040100A C3 retn
0040100B C3 retn
运行脚本后的OD中的信息
00D30378 55 push ebp 这里就是stolen oep start 待会要用到 我们记录下来然后用Lord PE 和ImportREC来修复,会有两个函数是无效的,用插件来修复就行了)
00D30379 036C24 38 add ebp,dword ptr ss:[esp+38]
00D3037D 36:EB 01 jmp short 00D30381
00D30380 9A 8B6C2410 F2EB call far EBF2:10246C8B
00D30387 01F0 add eax,esi
------------------------------------------------------------------------------------------------------------------
下面我们要找到stolen code结束的地方。
我们用F7向下走,一直到这里
00D311A3 2BDF sub ebx,edi
00D311A5 C703 84E74C00 mov dword ptr ds:[ebx],4CE784
00D311AB 5B pop ebx
00D311AC 8F01 pop dword ptr ds:[ecx]
00D311AE 59 pop ecx
00D311AF 66:9D popfw
00D311B1 C1D0 77 rcl eax,77
00D311B4 B8 26374300 mov eax,433726 ; ASCII "place"
00D311B9 58 pop eax
00D311BA 68 3A18D300 push 0D3183A
00D311BF E8 3CEE0B00 call 00DF0000 这个就是Stolen code的结束位置了
00D311C4 68 A609D300 push 0D309A6
00D311C9 E8 32EE0B00 call 00DF0000
00D311CE 57 push edi
00D311CF E9 87010000 jmp 00D3135B
00D311D4 83D9 AB sbb ecx,-55
00D311D7 B9 0E514400 mov ecx,44510E
00D311DC 6A 32 push 32
00D311DE 66:9C pushfw
下面我们就是要找VM区段
一直F7单向下走,一直到
00DF0137 8DAC07 8C614400 lea ebp,dword ptr ds:[edi+eax+>
00DF013E 5D pop ebp
00DF013F 55 push ebp
00DF0140 036C24 18 add ebp,dword ptr ss:[esp+18]
00DF0144 C1D5 B7 rcl ebp,0B7
00DF0147 81E8 2426F568 sub eax,68F52624
00DF014D 81D0 FC7C50FB adc eax,FB507CFC
00DF0153 8D87 FC84B300 lea eax,dword ptr ds:[edi+B384>
00DF0159 2BC7 sub eax,edi
00DF015B FFD0 call eax 一直到这里,在这里我们会看到左手边有一个eax=00B384FC 这个就是我们要的VM区段了。
00DF0164 B8 768D4900 mov eax,498D76
00DF0169 034424 38 add eax,dword ptr ss:[esp+38]
00DF016D 58 pop eax
00DF016E F4 hlt
00DF016F 87B6 00C30000 xchg dword ptr ds:[esi+C300],e>
00DF0175 0000 add byte ptr ds:[eax],al
00DF0177 0000 add byte ptr ds:[eax],al
00DF0179 0000 add byte ptr ds:[eax],al
下面我们要找的就是Route Check了。
在上面的那个call eax 那里用F7进去,然后就会F8向下走,一直到
00B38537 8B73 30 mov esi,dword ptr ds:[ebx+30]
00B3853A 8B7B 14 mov edi,dword ptr ds:[ebx+14]
00B3853D A1 E497B300 mov eax,dword ptr ds:[B397E4]
00B38542 8B40 34 mov eax,dword ptr ds:[eax+34]
00B38545 FFD0 call eax 一直到这里,记下左手边的eax=00D00000 这个就是待会要用到的RC区段了。
00B38547 2945 0C sub dword ptr ss:[ebp+C],eax
00B3854A 8B45 0C mov eax,dword ptr ss:[ebp+C]
00B3854D 2B43 18 sub eax,dword ptr ds:[ebx+18]
已经找到我们想要的东西了,我们现在来补区段了。
一般情况下,
一般的补区段的顺序
VM(2个)
Route Check(1个)
Stolen Code(一般是>10个) 是从最小的那一个补起来的。
用LordPE来补区段,来区域转存下面这十多个
Region00B10000-00B43000.dmp
Region00B50000-00B54000.dmp
这两个就是vm区段的
Region00D00000-00D01000.dmp 这个是RC
下面的就是Stolen code的了
Region00D30000-00D34000.dmp
Region00D40000-00D42000.dmp
Region00D50000-00D52000.dmp
Region00D60000-00D61000.dmp
Region00D70000-00D71000.dmp
Region00D80000-00D81000.dmp
Region00D90000-00D91000.dmp
Region00DA0000-00DA1000.dmp
Region00DB0000-00DB1000.dmp
Region00DC0000-00DC1000.dmp
Region00DD0000-00DD1000.dmp
Region00DE0000-00DE1000.dmp
Region00DF0000-00DF1000.dmp
Region00E00000-00E01000.dmp
现在用LordPE来修了,打开PE编辑器,选中修复的那一个程序,点区段,从磁盘中载入,把上面的这些转存出来的区段全部补上去,记住一定要从小到大的,否则就全功尽弃了。
点完之后就保存一下,我们用CFF Xplorer来改虚拟地址快一些。
虚拟地址 =转存出来的区段的前面数字—00400000
全部填好,记得最后要核对一次。点保存,全部覆盖就行了。
现在我们要做的就是重建PE 了.重建完后
现在要做的就是修复RC了。
在上面我们不是已经找到了RC的位置的了,所以
用OD载入刚才修复好的程序,直接查找RC上面的一个跳,在那下断点,按F9,中断下来,
00B38534 /EB 01 jmp short dumped_.00B38537
00B38536 |698B 73308B7B 14A1E4>imul ecx,dword ptr ds:[ebx+7B8>
00B38540 B3 00 mov bl,0
00B38542 8B40 34 mov eax,dword ptr ds:[eax+34] 从这里开始
00B38545 FFD0 call eax
00B38547 2945 0C sub dword ptr ss:[ebp+C],eax
00B3854A 8B45 0C mov eax,dword ptr ss:[ebp+C]
00B3854D 2B43 18 sub eax,dword ptr ds:[ebx+18]
00B38550 2B43 68 sub eax,dword ptr ds:[ebx+68]
00B38553 8945 FC mov dword ptr ss:[ebp-4],eax
00B38556 8D43 24 lea eax,dword ptr ds:[ebx+24]
00B38559 8945 F8 mov dword ptr ss:[ebp-8],eax
00B3855C 85FF test edi,edi
00B3855E 76 38 jbe short dumped_.00B38598
从call eax 的上一句开始,使用下面的数字二进制粘贴就可以了,保存一份文件。
90 90 90 8B 44 24 58 83 E8 05 90
现在查壳是Borland Delphi DLL.
就是这样就成功的脱壳了。
我们把电脑的时间调后一些,原来的程序会出现这个注册的窗口。
下面就是注册的了,个人认为从2.xx版本开始的,是出现第三次硬盘指纹出现才返回的,找到我们要注册的地方,下面就由大家去做吧,比较简单,就不写出来了。
奇怪的是:注册成功后,那个试用的窗口依然还在,但是里面的相关信息都已经注册的了,可以无限的使用了。我不知道如何把这一个窗口给去掉,希望有人可以告诉我一声,不胜感激。
赞赏
他的文章
看原图
赞赏
雪币:
留言: