-
-
[分享]ASProtect 2.1X之VB程序&OEP修复
-
发表于:
2006-4-27 08:22
7795
-
[分享]ASProtect 2.1X之VB程序&OEP修复
【文章标题】: ASProtect 2.1X之VB程序&OEP修复
【文章作者】: wynney
【软件名称】: Klasik
【软件大小】: 979K
【下载地址】: 见附件
【加壳方式】: ASProtect 2.1X
【保护方式】: 仅代码变形+Stolen Code
【编写语言】: VB
【使用工具】: Shadow,LoadPE,ImportREC
【操作平台】: XP SP1
【软件介绍】: 国外论坛上某人求脱的小东西。。。
【作者声明】: 凑热闹~而已^_^
--------------------------------------------------------------------------------
【详细过程】
VolX大虾的脚本已经完美无比了,佩服ing,但是,我这个人有个习惯,不喜欢用脚本,虽然很累~但是,充实^_^这篇陋文
也是按前人的思路来作~前人太多~就不列表了:)我就按我的流程写详细吧,突出点不一样~呵呵
1、突击敌后--探听虚实
第一步我们需要探听以下几点~为后面做准备呀~
i、OD忽略除了int3和指定异常之外的所有异常,隐藏OD(我这里隐藏不隐藏好像都一样),F9,中断。搜索所有参考文本。
找到两个85吧,双击任何一个“85”,来到代码处~
0130EBF8 68 E8F43001 push 130F4E8 ; ASCII "85"
0130EBFD E8 2A62FEFF call 012F4E2C
0130EC02 A1 1C373101 mov eax,dword ptr ds:[131371C]
0130EC07 8B00 mov eax,dword ptr ds:[eax]
0130EC09 E8 0A8CFFFF call 01307818 ;F2,Shift+F9中断下来,继续F7
0130EC0E 84C0 test al,al
0130EC10 75 0A jnz short 0130EC1C
0130EC12 68 E8F43001 push 130F4E8 ; ASCII "85"
01307818 53 push ebx ;来到这里,去段尾。。。
01307819 56 push esi
0130781A 57 push edi
.....
.....
.....
01307959 56 push esi
0130795A E8 59FCFFFF call 013075B8 ;F4下来,接着就是F7
0130795F 0FB707 movzx eax,word ptr ds:[edi]
01307962 83C0 02 add eax,2
01307965 03F8 add edi,eax
01307967 8A1F mov bl,byte ptr ds:[edi]
01307969 47 inc edi
0130796A 3A5E 34 cmp bl,byte ptr ds:[esi+34]
0130796D ^ 0F85 77FFFFFF jnz 013078EA
01307973 8BDF mov ebx,edi
01307975 8B03 mov eax,dword ptr ds:[ebx]
01307977 85C0 test eax,eax
01307979 ^ 0F85 0AFFFFFF jnz 01307889
0130797F 8A0424 mov al,byte ptr ss:[esp]
01307982 83C4 0C add esp,0C
01307985 5D pop ebp
01307986 5F pop edi
01307987 5E pop esi
01307988 5B pop ebx
01307989 C3 retn
段尾好像都长这个样子,一个CALL,两个向上的跳,一个retn(简称121)
013075B8 55 push ebp
013075B9 8BEC mov ebp,esp
013075BB 81C4 F8FEFFFF add esp,-108
013075C1 53 push ebx
....
....
....
013075F2 3BF0 cmp esi,eax
013075F4 75 5E jnz short 01307654 ;我们探听的内容之一,纪录下吧
013075F6 EB 01 jmp short 013075F9 ;我们探听的内容之二,纪录下吧
....
....
....
在013075F4下F2,Shift+F9运行中断下来
此时可以看到EAX=4F,ESI=98
好我们先不要急着按F9,下面还是进行我们探听的内容之三,Ctrl+G-->00401000-->Ctrl+B,查找FF 25-->
这样一来我们就得到探听内容之三(0040FCC0 - FF25 C4114000 jmp dword ptr ds:[4011C4])长得像这样的
东西-->右键数据窗口中跟随-->往上翻翻,往下翻翻,找到IAT Start(00401000)&IAT End(004014D4),纪录下来吧
接下来就按F9吧~按了一下F9之后,在数据窗口中Ctrl+G-->00401000(IAT Start),观察IAT的变化
同时眼睛还要尖锐点注意ESI的变化,ESI变化的次序98,4F,7E
按了N多下,转存窗口中的IAT一直都在变,而且都出来。。。。。哎~伤害感情~原来IAT没有加密:)
那些变化看够了没?看够了就取消断点吧,断点取消了吧?把OD异常设置换下吧~INT3打上勾~内存访问
去掉勾,F9几下来到最后一次异常,找段尾的倒数第一个CALL XXXXXXXX
0130FBF5 E8 1A30FDFF call 012E2C14
0130FBFA E8 B5D0FFFF call 0130CCB4 ;都长这个样~F2,F9中断下来
0130FBFF 83C4 2C add esp,2C
0130FC02 5D pop ebp
0130FC03 5F pop edi
0130FC04 5E pop esi
0130FC05 5B pop ebx
0130FC06 C3 retn
接下来不要急着F7,先Ctrl+G-->00401000-->Ctrl+B,查找FF 25,和他们在一起的会有代码变形的那些东西
(0040FCD2 E8 29031401 call 01550000)这个1550000就是我们探听的内容之四纪录下来~
F7进call 0130CCB4去吧~Ctrl+F9返回~这样我们在反汇编窗口下面就会发现有
0130CD44 C3 retn
[quote]
返回到 01530211
在00401000段下F2,F9运行~看到这样的代码了
004103F8 - FF25 D4134000 jmp dword ptr ds:[4013D4] ; msvbvm60.ThunRTMain
004103FE 0000 add byte ptr ds:[eax],al
00410400 - E9 0CFE1101 jmp 01530211
00410405 9B wait
00410406 A2 093EBF16 mov byte ptr ds:[16BF3E09],al
0041040B 0000 add byte ptr ds:[eax],al
恭喜恭喜,OEP被抽了~但是,VB程序抽OEP是小意思了~
[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!