首页
社区
课程
招聘
[求助]被bambam加壳的程序在WIN7下启动时异常终止
发表于: 2012-3-6 16:42 5838

[求助]被bambam加壳的程序在WIN7下启动时异常终止

2012-3-6 16:42
5838
我参考bambam写了个加壳程序,对程序加壳后,在WIN7下启动被加壳的程序,在壳的第一条汇编指令处,就触发异常,进入系统的异常处理,然后程序就被结束了。

开始以为是我设置的编译/链接选项的问题,查了好久,没有结果。

后来我试了一下用bambam加壳目标程序,在win7下出现相同问题

于是我在怀疑是win7执行程序时有异常保护(EOP检测),后来又试了一下UPX,程序却可以
正常执行,由此得出,只有bambam加壳才会出现这个问题。

目前还不知道什么原因,到底怎么回事啊?望高手们不吝赐教。

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

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
补充说明一下,我自己写的壳由于公司限制,不能发出来了。
使用的bambam加壳的工具是bambam v0.04.exe
2012-3-6 16:45
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这个是被bambam加壳后的一个简单程序。
在我的win7上执行时,就会出现描述中的问题,
各位可以放到自己的win7上试试。
hello.rar
上传的附件:
2012-3-6 17:08
0
雪    币: 5279
活跃值: (3659)
能力值: ( LV13,RANK:283 )
在线值:
发帖
回帖
粉丝
4
哎,下来就一直被报毒,不实验了,楼主修改下节标志,或者把要执行代码的内存修改为可执行试一下
2012-3-6 20:52
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢楼上。我试试。
2012-3-7 09:12
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
OK,试验了一下,之前OD挂上,壳的第一条指令就异常了,然后被系统处理,直接被终止。
现在把壳所在的段加上可执行标志后,壳的代码已经可以正常执行了。
谢谢littlewisp
2012-3-7 09:38
0
雪    币: 5279
活跃值: (3659)
能力值: ( LV13,RANK:283 )
在线值:
发帖
回帖
粉丝
7
应该是DEP的原因造成的
2012-3-7 09:51
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
刚通过楼上的提示,了解了一下DEP。应该是这个原因。
我刚还以为是操作系统对被执行代码所在的内存页标志有判定呢。
现在看来,应该是操作系统设置了DEP使能,由CPU干了这件事。
实际上EIP到你的代码里的时候,操作系统也是没办法做检测的。

独学而无友,则孤陋而寡闻。
littlewisp高手啊,以后多交流。
2012-3-7 11:23
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
另外,我的壳中有些代码是放到动态内存中执行的。

基本代码结构是:
BYTE* pFunc = (BYTE*)GlobalAlloc(GPTR, dwCodeLen);
memcpy(pFunc, pRealFunc, dLen);
....解密

pFunc();

GlobalFree(pFunc);

========================================================
在win7下面被执行时,产生相同的问题。
于是我在pFunc();前后添加了设置内存页属性的调用

DWORD dwOldProtect;
VirtualProtect(pFunc, dLen, PAGE_EXECUTE_READWRITE, &dwOldProtect);

pFunc();

VirtualProtect(pFunc, dLen, dwOldProtect, &dwOldProtect);       

不过调用到pFunc()后的第一条指令,还是产生相同的异常。不知道做何修改?
2012-3-7 11:30
0
雪    币: 5279
活跃值: (3659)
能力值: ( LV13,RANK:283 )
在线值:
发帖
回帖
粉丝
10
奇怪了,我的就是这样弄的,你在可以xp下跟一下,看是否设置成功了。
2012-3-7 12:50
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
在XP下是成功了的,所有功能都正常。
==================================================================
解决了。也不用指定壳段可执行了。
把PE头里面的DEP标志清掉就可以了。
pExeOptionalHeader.DllCharacteristics &= ~IMAGE_DLLCHARACTERISTICS_NX_COMPAT;

之前我没有了解DEP相关的知识。多谢点拨。
2012-3-7 14:15
0
雪    币: 5279
活跃值: (3659)
能力值: ( LV13,RANK:283 )
在线值:
发帖
回帖
粉丝
12
哈哈,你更狠。
2012-3-7 14:56
0
游客
登录 | 注册 方可回帖
返回
//