首页
社区
课程
招聘
Inline Patch ASProtect 2.X 学习笔记
发表于: 2005-7-21 09:42 11960

Inline Patch ASProtect 2.X 学习笔记

2005-7-21 09:42
11960

【软件名称】:Bee Icons v4.0.2.1
【软件大小】:1803 KB
【下载地址】:http://www.onlinedown.net/soft/3159.htm
【软件简介】:Bee Icons 是一个图标工具,可以替换系统图标和已注册文件类型的图标!
【软件限制】:Trial
【破解声明】:初学Crack,只是感兴趣,没有其它目的。失误之处敬请诸位大侠赐教!
【操作系统】:Windows XP SP2
【破解工具】:OllyDbg、Hex Workshop、LordPE

―――――――――――――――――――――――――――――――――――――――――――
 
【破解过程】:

这只是学习JohnWho的文章的一篇笔记,可能存在错误,错误之处,敬请各位大侠指点。原文对这种方法的阐述精辟准确,建议以他的文章为主

进行研究,原文下载地址:http://rapidshare.de/files/2498869/ASProtect.Patching.by.JW.zip.html

Bee Icons v4.0.2.1用的是ASPr较新的版本,用ASPrAPI是无效的,否则用那个工具将方便得多。

首先这里需要概述一下Patch的思路:

1、我们需要越过几个解码循环(JohnWho说是4个,这个我觉得不一定),来到关键的第2个VirtualAlloc前不远处(这段代码就是解码出来的)。

2、在第2个VirtualAlloc调用后获得壳重定位后的基址。

3、壳会进行CRC校验,在此之前会调用MapViewOfFileEx使内存中的EXE映像不可写,所以要在调用MapViewOfFileEx之前Patch其参数使内存可

写,以便进行Patch。

4、调用MapViewOfFileEx之后会返回内存中EXE映像的地址,利用这个地址将EXE映像Patch回原始的状态,逃过CRC检验。

5、Patch注册名的Pre-dip及壳试用信息读写的三个跳转(fly老大的“Patch注册ASProtect V1.X壳保护程序的方法”文章中说到)。


从上面的下载页面下载原版安装,安装完毕后到安装目录将BeeIcons.exe复制一份为其它名字,我这里复制为org.BeeIcons.exe。用Hex

Workshop打开BeeIcons.exe,在文件最后添加大小为1000的90,用PE Editor将.adata区段的RSize改为1000。这是因为BeeIcons.exe文件内没

有什么区段间的空隙放置Patch代码,而JohnWho的文章中就是采用这种方法。我想如果有区段间空隙,将Patch代码放在那些空隙里应该也是可

以的。

用OllyDbg打开org.BeeIcons.exe,隐藏OllyDbg(以下不再赘述),寻找注册名的Pre-dip和那三个跳转。

0103CAB9 50 push eax ; EAX=01023A29
0103CABA 8B47 04 mov eax,dword ptr ds:[edi+4] ; org_BeeI.005321B0
0103CABD FFD0 call eax ; Pre-dip
005321B0 55 push ebp
005321B1 8BEC mov ebp,esp
005321B3 8B45 08 mov eax,dword ptr ss:[ebp+8] ; 01023A29,存放注册名
005321B6 85C0 test eax,eax ; org_BeeI.005321B0
005321B8 74 0C je short org_BeeI.005321C6
005321BA 8038 00 cmp byte ptr ds:[eax],0
005321BD 74 07 je short org_BeeI.005321C6
005321BF C605 686A5700 0>mov byte ptr ds:[576A68],1
005321C6 8B15 5C6A5700 mov edx,dword ptr ds:[576A5C]
005321CC 8915 586A5700 mov dword ptr ds:[576A58],edx
005321D2 A3 5C6A5700 mov dword ptr ds:[576A5C],eax ; org_BeeI.005321B0
005321D7 5D pop ebp ; 0012FF78
005321D8 C2 0400 retn 4
00617169 /0F85 0B000000 jnz org_BeeI.0061717A
0061716F |E9 1B000000 jmp org_BeeI.0061718F
00617240 /0F85 2B000000 jnz org_BeeI.00617271
00617246 |0F83 0C000000 jnb org_BeeI.00617258
0061724C |68 9B0C494E push 4E490C9B
00617251 |81E2 4D0CA950 and edx,50A90C4D
00617257 |58 pop eax ; org_BeeI.00617048
00617258 |E9 26000000 jmp org_BeeI.00617283
00617310 ^\0F85 A3FFFFFF jnz org_BeeI.006172B9
00617316 66:81CA F57B or dx,7BF5
0061737E ^\0F85 C2FFFFFF jnz org_BeeI.00617346
00617384 ......
006173F8 ^\0F85 A8FFFFFF jnz org_BeeI.006173A6
006173FE 68 4F35D557 push 57D5354F
006174A7 89A5 29040000 mov dword ptr ss:[ebp+429],esp
006174AD 6A 40 push 40
006174AF 68 00100000 push 1000
006174B4 FFB5 08040000 push dword ptr ss:[ebp+408]
006174BA 6A 00 push 0
006174BC FF95 F0030000 call dword ptr ss:[ebp+3F0] ; kernel32.VirtualAlloc
006174C2 8985 CC010000 mov dword ptr ss:[ebp+1CC],eax ; org_BeeI.<ModuleEntryPoint>
006174C8 8B9D 00040000 mov ebx,dword ptr ss:[ebp+400]
006174CE 039D 0D040000 add ebx,dword ptr ss:[ebp+40D] ; org_BeeI.00400000
006174D4 50 push eax ; org_BeeI.<ModuleEntryPoint>
006174D5 53 push ebx ; kernel32.GetModuleHandleA
006174D6 E8 04010000 call org_BeeI.006175DF
006174DB 6A 40 push 40
006174DD 68 00100000 push 1000
006174E2 FFB5 08040000 push dword ptr ss:[ebp+408]
006174E8 6A 00 push 0
006174EA FF95 F0030000 call dword ptr ss:[ebp+3F0] ; kernel32.VirtualAlloc
006174F0 8985 31040000 mov dword ptr ss:[ebp+431],eax ; org_BeeI.<ModuleEntryPoint>
006174F6 8985 D0010000 mov dword ptr ss:[ebp+1D0],eax ; org_BeeI.<ModuleEntryPoint>
006174FC 64:67:A1 0000 mov eax,dword ptr fs:[0]
00617501 8985 2D040000 mov dword ptr ss:[ebp+42D],eax ; org_BeeI.<ModuleEntryPoint>
00617507 8B55 5B mov edx,dword ptr ss:[ebp+5B] ; org_BeeI.00617048
0061750A 8B85 D0010000 mov eax,dword ptr ss:[ebp+1D0]
00617510 8902 mov dword ptr ds:[edx],eax ; org_BeeI.<ModuleEntryPoint>
00617512 8B85 08040000 mov eax,dword ptr ss:[ebp+408]
00617518 8942 04 mov dword ptr ds:[edx+4],eax ; org_BeeI.<ModuleEntryPoint>
0061751B 8D85 9F030000 lea eax,dword ptr ss:[ebp+39F]
00617521 8B40 55 mov eax,dword ptr ds:[eax+55]
00617524 8942 08 mov dword ptr ds:[edx+8],eax ; org_BeeI.<ModuleEntryPoint>
00617527 8B85 EC030000 mov eax,dword ptr ss:[ebp+3EC] ; kernel32.LoadLibraryA
0061752D 8942 10 mov dword ptr ds:[edx+10],eax ; org_BeeI.<ModuleEntryPoint>
00617530 8B85 E8030000 mov eax,dword ptr ss:[ebp+3E8] ; kernel32.GetModuleHandleA
00617536 8942 14 mov dword ptr ds:[edx+14],eax ; org_BeeI.<ModuleEntryPoint>
00617539 8B95 CC010000 mov edx,dword ptr ss:[ebp+1CC]
0061753F BB F8010000 mov ebx,1F8
00617544 8B7C1A 0C mov edi,dword ptr ds:[edx+ebx+C]
00617548 0BFF or edi,edi ; org_BeeI.0040100C
0061754A 74 1E je short org_BeeI.0061756A
0061754C 8B4C1A 10 mov ecx,dword ptr ds:[edx+ebx+10]
00617550 0BC9 or ecx,ecx
00617552 74 11 je short org_BeeI.00617565
00617554 03BD D0010000 add edi,dword ptr ss:[ebp+1D0]
0061755A 8B741A 14 mov esi,dword ptr ds:[edx+ebx+14]
0061755E 03F2 add esi,edx ; org_BeeI.0061792A
00617560 C1F9 02 sar ecx,2
00617563 F3:A5 rep movs dword ptr es:[edi],dword ptr ds>
00617565 83C3 28 add ebx,28
00617568 ^ EB DA jmp short org_BeeI.00617544
0061756A 8B85 CC010000 mov eax,dword ptr ss:[ebp+1CC]
00617570 50 push eax ; org_BeeI.<ModuleEntryPoint>
00617571 8B95 D0010000 mov edx,dword ptr ss:[ebp+1D0]
00617577 52 push edx ; org_BeeI.0061792A
00617578 8B18 mov ebx,dword ptr ds:[eax]
0061757A 03DA add ebx,edx ; org_BeeI.0061792A
0061757C 8B85 E4030000 mov eax,dword ptr ss:[ebp+3E4] ; kernel32.GetProcAddress
00617582 8903 mov dword ptr ds:[ebx],eax ; org_BeeI.<ModuleEntryPoint>
00617584 8B85 E8030000 mov eax,dword ptr ss:[ebp+3E8] ; kernel32.GetModuleHandleA
0061758A 8943 04 mov dword ptr ds:[ebx+4],eax ; org_BeeI.<ModuleEntryPoint>
0061758D 8B85 EC030000 mov eax,dword ptr ss:[ebp+3EC] ; kernel32.LoadLibraryA
00617593 8943 08 mov dword ptr ds:[ebx+8],eax ; org_BeeI.<ModuleEntryPoint>
00617596 5F pop edi ; ntdll.7C930738
00617597 5E pop esi ; ntdll.7C930738
00617598 8B46 04 mov eax,dword ptr ds:[esi+4]
0061759B 03C7 add eax,edi ; org_BeeI.0040100C
0061759D 8985 C7010000 mov dword ptr ss:[ebp+1C7],eax ; org_BeeI.<ModuleEntryPoint>
006175A3 8B55 5B mov edx,dword ptr ss:[ebp+5B] ; org_BeeI.00617048
006175A6 8B85 C7010000 mov eax,dword ptr ss:[ebp+1C7]
006175AC 8942 0C mov dword ptr ds:[edx+C],eax ; org_BeeI.<ModuleEntryPoint>
006175AF 8D9D 0D040000 lea ebx,dword ptr ss:[ebp+40D]
006175B5 53 push ebx ; kernel32.GetModuleHandleA
006175B6 6A 00 push 0
006175B8 6A 00 push 0
006175BA 6A 01 push 1
006175BC 57 push edi ; org_BeeI.0040100C
006175BD 8B5E 08 mov ebx,dword ptr ds:[esi+8]
006175C0 03DF add ebx,edi ; org_BeeI.0040100C
006175C2 53 push ebx ; kernel32.GetModuleHandleA
006175C3 68 00800000 push 8000
010510C4 FF95 79294400 call dword ptr ss:[ebp+442979] ; kernel32.VirtualAlloc
010510CA 8985 75294400 mov dword ptr ss:[ebp+442975],eax
010510D0 8D9D 452A4400 lea ebx,dword ptr ss:[ebp+442A45]
010510D6 50 push eax
010510D7 53 push ebx
010510D8 E8 74050000 call 01051651
010510DD 8BC8 mov ecx,eax
010510DF 8DBD 452A4400 lea edi,dword ptr ss:[ebp+442A45]
010510E5 8BB5 75294400 mov esi,dword ptr ss:[ebp+442975]
010510EB F3:A4 rep movs byte ptr es:[edi],byte ptr ds:[>
010510ED 8B85 75294400 mov eax,dword ptr ss:[ebp+442975]
010510F3 68 00800000 push 8000
01051343 FF95 79294400 call dword ptr ss:[ebp+442979] ; kernel32.VirtualAlloc
01051349 8985 75294400 mov dword ptr ss:[ebp+442975],eax
......
010515C1 61 popad
010515C2 75 08 jnz short 010515CC
010515C4 B8 01000000 mov eax,1
010515C9 C2 0C00 retn 0C

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 7
支持
分享
最新回复 (20)
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
写的好,学习学习
2005-7-21 10:05
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
3
辛苦
校验麻烦
2005-7-21 10:23
0
雪    币: 223
活跃值: (106)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
fly老大,你的论坛又被攻击了?

登陆不上去了,郁闷……
2005-7-21 10:29
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
厉害!学习。
2005-7-21 10:34
0
雪    币: 420
活跃值: (49)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
厉害厉害
2005-7-21 13:55
0
雪    币: 97697
活跃值: (200824)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
7
学习
2005-7-21 14:41
0
雪    币: 217
活跃值: (91)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
好文章
2005-7-21 14:44
0
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
9
辛苦
2005-7-21 17:48
0
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
10
确实是很经典啊。。。。PFPF。。。。
2005-7-22 00:33
0
雪    币: 223
活跃值: (106)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
这个问题是否发生在所有这样进行Patch的文件上,还不得而知


今晚Patch了DVDFab,一切正常。
2005-7-22 01:29
0
雪    币: 235
活跃值: (160)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
12
aint that hard :)

http://s41.yousendit.com/d.aspx?id=025H6L1OAKTL91DMC6C39AOCJV
2005-7-22 04:22
0
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
13
感谢楼主的经典文章。。。。不知道能够不能够再写详细点

譬如:为什么确认那里是循环点?

还有就是Patch代码为什么要那么写?

例如这个?
00649C5E    C780 6F3B0A00 E91B0000    mov dword ptr ds:[eax+A3B6F],1BE9

期待Patch DVDFab的文章~~最好是个动画`~
2005-7-23 10:59
0
雪    币: 223
活跃值: (106)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
楼上的兄弟,你找来那个东东,按步骤做一遍,体会一下,效果会比我在这里空说好得多。
2005-7-24 04:29
0
雪    币: 556
活跃值: (2303)
能力值: ( LV9,RANK:2130 )
在线值:
发帖
回帖
粉丝
15
,碰到鬼了,添加点空间,其它什么都没有改动。过了MapViewOfFileEx后,修改hMap的里的rsize为0,结果还是提示文件破坏云云
2005-7-24 09:02
0
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
16
最初由 temerata 发布
楼上的兄弟,你找来那个东东,按步骤做一遍,体会一下,效果会比我在这里空说好得多。


谢谢老兄,其实这个软件我一直都有,是个问题就放到现在~~刚好你先写了篇文章~~嘿嘿~`救星到了

我现在不懂的就是为什么Patch代码要那么写?

例如:
00649B09    C705 59726100 26000000    mov dword ptr ds:[617259],26       //为什么是26?其他软件可以 用26吗?
00649B13    C705 16736100 E90E2803    mov dword ptr ds:[617316],3280EE9  //为什么是3280EE9。。。

这些代码为什么这么写哦。。。可以沿用吗~?谢谢~~

我会Patch1.23RC4的壳`~~但是,这个就不懂了~

楼主有心的话,请帮下忙~加偶QQ:21022699,谢谢~~
2005-7-24 10:19
0
雪    币: 223
活跃值: (106)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
最初由 loveboom 发布
,碰到鬼了,添加点空间,其它什么都没有改动。过了MapViewOfFileEx后,修改hMap的里的rsize为0,结果还是提示文件破坏云云


弄的也是这个东东?
2005-7-24 12:18
0
雪    币: 223
活跃值: (106)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
18
最初由 wynney 发布
......
00649B09 C705 59726100 26000000 mov dword ptr ds:[617259],26 //为什么是26?其他软件可以 用26吗?
00649B13 C705 16736100 E90E2803 mov dword ptr ds:[617316],3280EE9 //为什么是3280EE9。。。
......


00617258   |E9 26000000     jmp org_BeeI.00617283

上面是原始代码,可以看到对应的数据是E9 26000000

要将它Patch为:
00617258  - E9 AC280300               jmp BeeIcons.00649B09

对比数据的不同部分,以下两句代码的含义应该很容易明白了吧?Patch时这个328AC取决于你要Patch成的效果,还原时取决于原始的代码

00649AFA    C705 59726100 AC280300    mov dword ptr ds:[617259],328AC          ; Patch 00617258处的跳转

00649B09    C705 59726100 26000000    mov dword ptr ds:[617259],26             ; 还原Patch点代码
2005-7-24 12:30
0
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
19
最初由 temerata 发布


00617258 |E9 26000000 jmp org_BeeI.00617283

上面是原始代码,可以看到对应的数据是E9 26000000
........


经老兄这么一点~有眉目了!~谢谢!~

不懂再来麻烦你~~
2005-7-24 12:41
0
雪    币: 224
活跃值: (147)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
20
楼主,跟着你的步骤做,的确弄懂了不少`

问题来了,在写入
00649B29    C705 16736100 6681CAF5    mov dword ptr ds:[617316],F5CA8166

提示“需要助记符”。。。还有就是像这样的代码F5CA8166
我知道是根据原代码来的`但是,要一眼看出来还是有难度`
有没有什么计算的方法。。?谢谢~
2005-7-24 14:50
0
雪    币: 223
活跃值: (106)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
21
你在前面加0,就不会这样提示了。

我不清楚有什么计算方法。还不如另开OD,在里面改着看效果。
2005-7-24 20:56
0
游客
登录 | 注册 方可回帖
返回
//