首页
社区
课程
招聘
[求助]壳的stub里用到了一个lib,这个lib有一个静态局部变量,导致..
发表于: 2009-5-26 10:51 3581

[求助]壳的stub里用到了一个lib,这个lib有一个静态局部变量,导致..

2009-5-26 10:51
3581
如题,
我用C++写壳的stub

壳的stub里用到了一个lib,这个lib有一个静态局部变量,该变量类型是一个类,导致..

由于编译器在给这个静态对象初始化的时候,除了调用构造函数外,还会调用一个atexit

004050E5   mov         ecx,offset __cfltcvt_tab+544h (0042d85c)
004050EA   call        @ILT+25(A::A) (0040101e) 构造函数
004050EF   push        offset $E23 (00405190)
004050F4   call        atexit (00405d30)   注意这里
004050F9   add         esp,4

这个atexit 应该是为了在最后析构程序中定义的一些静态和全局变量.

而我把这个stub加给被加壳的程序后,执行到call 这个atexit会出现致命错误,
在一个貌似跟堆内存有关的函数?
RtlAllocateHeap

7C9305D4 >  68 04020000     push    204
7C9305D9    68 F006937C     push    7C9306F0
7C9305DE    E8 DFE7FFFF     call    7C92EDC2
7C9305E3    8B5D 08         mov     ebx, dword ptr [ebp+8]
7C9305E6    895D E4         mov     dword ptr [ebp-1C], ebx
7C9305E9    33FF            xor     edi, edi
7C9305EB    897D D0         mov     dword ptr [ebp-30], edi
7C9305EE    C645 E2 00      mov     byte ptr [ebp-1E], 0
7C9305F2    897D CC         mov     dword ptr [ebp-34], edi
7C9305F5    8B45 0C         mov     eax, dword ptr [ebp+C]
7C9305F8    0B43 10         or      eax, dword ptr [ebx+10]   

请问,有朋友能提点一二么?

或者说如果我则个lib不使用静态变量,有什么办法达到类似静态变量的效果?

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 53
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我最后自己人为设置了一个变量作为标志位..解决全局变量没被初始化的问题..

不知道还有没其他方法.

结贴了
2009-5-26 12:02
0
游客
登录 | 注册 方可回帖
返回
//