首页
社区
课程
招聘
[旧帖] vb程序脱壳后不能运行? 0.00雪花
发表于: 2010-1-6 19:44 7544

[旧帖] vb程序脱壳后不能运行? 0.00雪花

2010-1-6 19:44
7544
00401145   /E9 2D0F2700     jmp     00672077
0040114A  -|FF25 64104000   jmp     dword ptr [401064]               ; MSVBVM60.ThunRTMain
00401150   |68 B0294F00     push    004F29B0                         ; ASCII "VB5!6&vb6chs.dll"
00401155   |E8 F0FFFFFF     call    0040114A                         ; jmp 到 MSVBVM60.ThunRTMain

用OD跟踪到1150处,DUMP程序,然后修复IAT,程序不能运行。用FI检测壳已经脱了。我想请问一下高手,为什么我断在1150处DUMP的程序用不了?但只要我在1150处按F8程序马上就在OD里运行起来了。这是为什么呢?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 1
支持
分享
最新回复 (13)
雪    币: 290
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
00401150就是OEP
脱壳后不能运行要么IAT没修复好 要么有自校验

在00401155处F8才会运行
2010-1-6 20:04
0
雪    币: 1632
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
应该是没修好,给程序看看。
2010-1-6 20:28
0
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
怎么才能去自校验啊?或者说是怎么检查有没有自校验呢
2010-1-6 21:17
0
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我用peid查什么都没有,用fi查提示有UPX,但我看有调用彩虹的umhcontrol.ocx。脱壳后运行不了。脱壳后的程序用PEID查了一下使用了下面这些加密算法:MD5 :: 0026EF51 :: 0066EF51
        The reference is above.
MD5 :: 0037857B :: 0077857B
        The reference is above.
RIJNDAEL [S] [char] :: 002740A8 :: 006740A8
        Referenced at 0066E473
        Referenced at 0066E482
        Referenced at 0066E491
        Referenced at 0066E4A0
        Referenced at 0066E4E6
        Referenced at 0066E4F4
        Referenced at 0066E501
        Referenced at 0066E50E
        Referenced at 00777D8B
RIJNDAEL [S] [char] :: 0037AA4A :: 0077AA4A
        The reference is above.
RIJNDAEL [S-inv] [char] :: 002761A8 :: 006761A8
        Referenced at 0066EBB4
        Referenced at 0066EBC0
        Referenced at 0066EBC6
        Referenced at 0066EBD6
        Referenced at 0066EBE3
        Referenced at 0066EBF3
        Referenced at 0066EBFF
        Referenced at 0066EC0C
        Referenced at 0066EC12
        Referenced at 0066EC27
        Referenced at 0066EC30
        Referenced at 0066EC3D
        Referenced at 0066EC4E
        Referenced at 0066EC57
        Referenced at 0066EC64
        Referenced at 0066EC71
RIJNDAEL [S-inv] [char] :: 0037CB84 :: 0077CB84
        The reference is above.
请问各位高手,如果是从系统领空中退出来的(比如ntdll,vb60.dll),那不能说明是程序带了自较验吧?因为我脱壳后的程序根本就不能运行,是从这段代码中退出的:
7C9585FA    8DA424 00000000 lea     esp, dword ptr [esp]
7C958601    8DA424 00000000 lea     esp, dword ptr [esp]
7C958608 >  8BD4            mov     edx, esp
7C95860A    0F34            sysenter
7C95860C >  C3              retn
在retn那里程序就停止了。我想如果有自较验那应当也是在程序领空里会有代码啊。我跟了半天就在ntdll和vb60.dll里转来转去,然后就退出了。
还请高手指点一二啊。
2010-1-7 08:27
0
雪    币: 22
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
学习了.............
2010-1-7 09:30
0
雪    币: 94
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
运行的时候看看是哪儿出错,然后再和原程序比较一下就知道了
2010-1-7 10:40
0
雪    币: 146
活跃值: (72)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
跟踪退出函数,看看之前都干了些什么。
2010-1-7 15:11
0
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
仔细看了一下,第一个可能是overlay没有处理好。因为在脱壳之前用peid查是nothing(overlay),有附加数据。第一个图片是脱壳之前用loadpe查看到的section的信息。问题是---是不是所有的overlay都是最后一个区段啊?如果是的话请看下图那是.rsrc啊?我把地址ro+rs=1078e0,我用hexwork打开找到该地址发现从这个地址到最后全部是0呀。请问这是为什么?是不是overlay一定是在最后一个区段?或者说是我算错了?
脱壳前:

脱壳后:

脱壳修复iat后:
上传的附件:
2010-1-7 16:06
0
雪    币: 171
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
重建PE,处理附加数据。
2010-1-7 22:37
0
雪    币: 18
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
11
把加壳的程序和你脱壳后的程序,分别用2个OD打开,慢慢的F8走,2个OD对比下,看有没有哪里出错
2010-1-7 23:02
0
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
我用两个OD对比了,看了半天老是在系统领空里转。不知道要转多久呢。有谁知道如何给VB的退出函数下断啊?VB的退出函数是什么呢?
2010-1-7 23:28
0
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
看出点眉目了。我用OD给EXITPROCESS下断,然后一步步往回走,看程序为什么脱壳后就退出了。我发现一个奇怪的问题,在用很多函数名和DLLFunctionCall去对比,最后发现都不是的,然后程序就退出了。经验太少了不知道这是意思。。。如有高手知道还请指点一下,我也继续研究。
00668125    A1 7C3A6700     mov     eax, dword ptr [673A7C]
0066812A    3945 DC         cmp     dword ptr [ebp-24], eax
0066812D    75 0A           jnz     short 00668139
0066812F    E8 1D350000     call    0066B651
00668134    E9 CB000000     jmp     00668204
00668139    A1 4C3A6700     mov     eax, dword ptr [673A4C]
0066813E    3945 DC         cmp     dword ptr [ebp-24], eax
00668141   /75 0A           jnz     short 0066814D
00668143   |E8 BCE2FFFF     call    00666404
00668148   |E9 B7000000     jmp     00668204
0066814D   \A1 503A6700     mov     eax, dword ptr [673A50]
00668152    3945 DC         cmp     dword ptr [ebp-24], eax
00668155    75 0A           jnz     short 00668161
00668157    E8 29EAFFFF     call    00666B85
0066815C    E9 A3000000     jmp     00668204
00668161    8B45 DC         mov     eax, dword ptr [ebp-24]          ; msvbvm60.DllFunctionCall
2010-1-8 00:20
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
14
sysenter应该是调用了系统的驱动模块,如果该指令出现在exe文件中,那有可能它调用了系统驱动,当然也有可能自已写了个替换API的函数
2010-1-8 09:00
0
游客
登录 | 注册 方可回帖
返回
//