首页
社区
课程
招聘
抵达aspr1.3x输入表处理的异常
发表于: 2004-9-13 17:31 4476

抵达aspr1.3x输入表处理的异常

2004-9-13 17:31
4476
/*
                        --=== 抵达aspr1.3x输入表处理的异常 ==-
OS: WinXP ,OD1.1,OllyScript0.92
    以下仅为我的发现,于是将它写出脚本,如有雷同,实属无奈;如有失误,敬请指正!=->抵达aspr输入表处理的异常(1.3x测试过sen的CRACKME+asp.EXE和Icon Searcher2.20),不知是否适用更高的版本,我愿分享,有待大家测试,如果此时(sen在bbs.pediy.com发的文章内的修复脚本)配合得当,可处理修复iat!enjoy!

*/

var test
var base
var swap

dbh
gmi eip,MODULEBASE
mov base,$RESULT
log base

eoe check
run

check:
cmp base,eax
jne pass
mov swap,esp
add swap,10
mov swap,[swap]
log swap
cmp swap,eax
jne pass
coe
jmp final

hello:
msg "恭喜恭喜!你已经抵达要处理iat的异常!"
cmt eip,"请尝试在code段下内存断点,再Shift+F9!"
ret

end:
msg "Sorry,Mission失败,对此我们只能抱歉!"
ret

final:
esto
esto
esto
esto
esto
mov test,eip
mov test,[test]
log test
cmp test,8F640031
jne end
jmp hello

pass:
esto

:o :o :o

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 1
支持
分享
最新回复 (9)
雪    币: 221
活跃值: (55)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
附件:notepad.rar
这个是98的记事本。呵呵。
2004-9-13 18:54
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
3
抵达处理的地方不难
壳解码后搜索一下就行了
难的是处理、修复

BTW:试试 ASProtectV1.31 build 06.14 主程序的修复
2004-9-13 23:09
0
雪    币: 383
活跃值: (786)
能力值: ( LV12,RANK:730 )
在线值:
发帖
回帖
粉丝
4
确定是修复难(有分开异常进行加密--不限在1个异常中全部加密),

顺便问一下fly(这壳在干什么?不解?你有见过吗?):

经过输入表函数处理(ebp可见函数名)后,又来到(不能看到ebp有函数名了):
00CBBD72    0345 08        add eax,dword ptr ss:[ebp+8]
00CBBD75    8D53 04        lea edx,dword ptr ds:[ebx+4]
00CBBD78    8B12           mov edx,dword ptr ds:[edx]
00CBBD7A    0355 10        add edx,dword ptr ss:[ebp+10]
00CBBD7D    8D4D FC        lea ecx,dword ptr ss:[ebp-4]
00CBBD80    51             push ecx
00CBBD81    8BCA           mov ecx,edx
00CBBD83    8BD0           mov edx,eax
00CBBD85    E8 527CFFFF    call 00CB39DC //到底干什么
00CBBD8A    83C3 08        add ebx,8
00CBBD8D    8B03           mov eax,dword ptr ds:[ebx]
00CBBD8F    85C0           test eax,eax
00CBBD91  ^ 75 DF          jnz short 00CBBD72 //循环,不断往Code段放JMP 00xxxxxx 壳地址
00CBBD93    5B             pop ebx
00CBBD94    59             pop ecx
00CBBD95    5D             pop ebp
00CBBD96    C2 0C00        retn 0C

00CB39DC    55             push ebp
00CB39DD    8BEC           mov ebp,esp
00CB39DF    53             push ebx
00CB39E0    8BD8           mov ebx,eax
00CB39E2    8BC2           mov eax,edx
00CB39E4    8BD1           mov edx,ecx
00CB39E6    E8 79FFFFFF    call 00CB3964
00CB39EB    C603 E9        mov byte ptr ds:[ebx],0E9 //改为:JMP 00xxxxxx 绝对偏移跳转(壳的)
00CB39EE    8D53 01        lea edx,dword ptr ds:[ebx+1]
00CB39F1    8902           mov dword ptr ds:[edx],eax
00CB39F3    8B45 08        mov eax,dword ptr ss:[ebp+8]
00CB39F6    8910           mov dword ptr ds:[eax],edx
00CB39F8    B8 05000000    mov eax,5
00CB39FD    5B             pop ebx
00CB39FE    5D             pop ebp
00CB39FF    C2 0400        retn 4

00CB3964    2BD0           sub edx,eax
00CB3966    83EA 05        sub edx,5
00CB3969    8BC2           mov eax,edx
00CB396B    C3             retn
2004-9-18 08:48
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
5
可以看到函数名
根据AL的值进行分支处理

现在网络不畅,郁闷
2004-9-18 16:13
0
雪    币: 383
活跃值: (786)
能力值: ( LV12,RANK:730 )
在线值:
发帖
回帖
粉丝
6
to fly,你是从al==?哪里发现的?像我上面的那段代码,al应该等于几,然后它又怎样走过来的,可以发向我的 mailbox:)

sen,能用我写的“抵达aspr1.3x输入表处理的异常”处理前到达正确位置,不过仅用sen的脚本是不能完整修复!

sen,你加壳的98notepad已经修复完,在XP下测试运行操作正常,若要在98下运行,可参考fly脱飞速的unpackme的“最后修正跨98”。脱壳后没有完美“瘦身”==188k,我也没这本事或精力进行浪费。如果上传附件没问题的,我会试试的...

stolen:
004010CC   - E9 104C5700       jmp 00975CE1
004010D1     1B92 FF1508A0     sbb edx,dword ptr ds:[edx+A00815FF]

fixed:
004010CC     55      push ebp
004010CD     8BEC    mov ebp,esp
004010CF     83EC 44 sub esp,44
004010D2     56      push esi
-----------------------------------------------------------------

//下面属于al==4 的特别加密
00955B67     8B4424 2C         mov eax,dword ptr ss:[esp+2C]
00955B6B     50                push eax
00955B6C     8D4424 34         lea eax,dword ptr ss:[esp+34]
00955B70     50                push eax
00955B71     55                push ebp
00955B72     A1 7C259600       mov eax,dword ptr ds:[96257C]
00955B77     8B00              mov eax,dword ptr ds:[eax]
00955B79     50                push eax
00955B7A     56                push esi
00955B7B     8B4424 28         mov eax,dword ptr ss:[esp+28]
00955B7F     50                push eax
00955B80     FF53 30           call dword ptr ds:[ebx+30] //哈哈,有加密
00955B83   ^ E9 3BFDFFFF       jmp 009558C3
……
//下面有nop的表示花指令:
00979113    /65:EB 01        jmp short 00979117
00979116    |90              nop
00979117    \2B5C24 00       sub ebx,dword ptr ss:[esp]
0097911B     EB 02           jmp short 0097911F
0097911D     CD20 33D95B55   vxdjump 555BD933
00979123     8F03            pop dword ptr ds:[ebx]
00979125     C1CA 5F         ror edx,5F
00979128     EB 01           jmp short 0097912B
0097912A     90              nop
0097912B     335424 08       xor edx,dword ptr ss:[esp+8]
0097912F     26:EB 02        jmp short 00979134
00979132     90              nop
00979133     90              nop
00979134     FF7427 14       push dword ptr ds:[edi+14]
00979138     81D2 9007F8AA   adc edx,AAF80790		//
0097913E     5A              pop edx
0097913F     0356 04         add edx,dword ptr ds:[esi+4]
00979142     53              push ebx
00979143     8F02            pop dword ptr ds:[edx] //中断在here
00979145     68 8E334500     push 45338E
0097914A     8F46 00         pop dword ptr ds:[esi]
0097914D     81D1 4CA6CF11   adc ecx,11CFA64C
00979153     F2:             prefix repne:
00979154     EB 01           jmp short 00979157
00979156     90              nop

sen让我试的98记事本,除了stolen外,我用改造sen发的脚本(我已了解它如何作用,sen的那个修复“类别”还不完全和使用麻烦)完成imt修复的,脚本是写出来了,但还不够完美(极大的原因--脚本太大,有错误难维护,还有更重要的是aspr1.3x以上到底有多少种imt的[trick==加密],精力有限,“研究生”们能放个高见吗?),需输入构造输入表的入口地址,该地址还是要用户思考确定并“实时”填写,
只要填好入口地址,就会工作个不停,直至异常发生才暂停!

目前,仅修复有3大类(高手要赐教呀):

以下三类情况都能在加密前从 ebp 看到api的真实地址
a.
jmp dword ptr ds:[xxxxxxxx]
// 俗称没加密,xxxxxxxx是壳地址,[xxxxxxxx]==aaaaaaaa,aaaaaaaa就是Api真正地址

b.1(FF25)
jmp dword ptr ds:[yyyyyyyy]
加密后:call mmmmmmmm 开头放E8,最后伴随1扰乱字节
// yyyyyyyy是壳地址,[yyyyyyyy]==bbbbbbbb,bbbbbbbb是壳加密处理过的地址

b.2(FF15)
call dword ptr ds:[zzzzzzzz]
加密后:call mmmmmmmm 开头放E8,后伴随1扰乱字节
// zzzzzzzz是壳地址,[zzzzzzzz]==cccccccc,cccccccc是壳加密处理过的地址

c.同b相似有两种类型,但没有往FF15... call[...]或FF25...Jmp[...]  首字节放E8,直接在[...]填入加密地址
// c类(al==4)修复与b有同功之妙,隐蔽略胜一筹,难度差了一点

我有个问题(我见识小):找不到加密前b类(al==2)的两种的区别特征,如果它们同时混合用上,就难?--必须知道,在下面加密前要知道被加密的是call[]还是jmp[],以便我们能正确修复,否则修复会更混乱,谁能分析呀?说一下见解?
……
009556CE   mov eax,esi
009556D0   sub eax,2
009556D3   cmp word ptr ds:[eax],0 //是否为0000????????,即要加密 Jmp[] 或 Call[]
009556D7   jnz short 009556E9
009556D9   mov edx,dword ptr ss:[esp+C]
009556DD   mov edx,dword ptr ds:[edx]
009556DF   call 00953690 //写入加密地址
009556E4   jmp 0095555B //循环加密
……


附件:Fixed.rar
2004-9-19 09:44
0
雪    币: 221
活跃值: (55)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
厉害!
进来我也想研究一下aspr的壳,无奈没有电脑~~
askformore兄能研究到这个程度已经很不错了,希望继续努力!
2004-9-19 12:55
0
雪    币: 383
活跃值: (786)
能力值: ( LV12,RANK:730 )
在线值:
发帖
回帖
粉丝
8
还差得很...:o 你用的是注册版加的壳吗?:)
2004-9-19 13:43
0
雪    币: 221
活跃值: (55)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
是注册版的啊~~
2004-9-19 14:25
0
雪    币: 206
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
唉~~是啊!初学Asprotect脱了就不知道怎么修复了
2004-9-30 13:22
0
游客
登录 | 注册 方可回帖
返回
//